CINXE.COM
Norfolk Southern revives battery traction ambitions with Alstom partnership | News | Railway Gazette International
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="preload" as="style" href="/Magazine/core.css?p=7513768095036817"> <link rel="preload" as="script" href="/Magazine/core.js?p=7513768095036817"> <link rel="preload" as="image" href="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xAny/7/7/5/68775_usnorfolksouthernns999_11_3_09_88792.jpg" imagesrcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xAny/7/7/5/68775_usnorfolksouthernns999_11_3_09_88792.jpg 480w" /> <!-- DVV Google Tag Manager DO NOT delete --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KGQPK8B');</script> <!-- End Google Tag Manager --> <title>Norfolk Southern revives battery traction ambitions with Alstom partnership | News | Railway Gazette International</title> <meta name="description" content="USA: Class I railroad Norfolk Southern Corp is to convert two diesel prime movers to hybrid operation through a partnership with Alstom." /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="momentnowdate" content="2024-11-23 19:30:42.385"/> <meta name="momentlocale" content="en-gb"/> <meta name="momentlocaleformat" content="D MMMM YYYY"/> <meta name="momentrelative" content="false"/> <meta name="momentrelativeformat" content="YYYY,MM,DD"/> <meta name="momentrelativemorethan" content="10"/> <meta name="robots" content="noarchive" /> <meta name="pubdate" content="Fri, 22 Nov 2024 17:12 GMT" /> <link rel="canonical" href="https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article" /> <meta name="blockthis" content="blockGA" /> <meta name="showwallpaper" content="true" /> <meta name="navcode" content="47" /> <meta name="primarynavigation" content="Traction & Rolling Stock ,News" /> <meta property="og:title" content="Norfolk Southern revives battery traction ambitions with Alstom partnership" /> <meta property="og:type" content="Article" /> <meta property="og:url" content="https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article" /> <meta property="og:site_name" content="Railway Gazette International" /> <meta property="og:description" content="USA: Class I railroad Norfolk Southern Corp is to convert two diesel prime movers to hybrid operation through a partnership with Alstom." /> <meta property="og:image:width" content="1024" /> <meta property="og:image:height" content="536" /> <meta property="og:image" content="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/1024x536/7/7/5/68775_usnorfolksouthernns999_11_3_09_88792.jpg" /> <meta property="og:image:alt" content="us-norfolk southern-NS999_11_3_09" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:title" content="Norfolk Southern revives battery traction ambitions with Alstom ..." /> <meta property="twitter:description" content="USA: Class I railroad Norfolk Southern Corp is to convert two diesel prime movers to hybrid operation through a partnership with Alstom." /> <meta property="twitter:image:src" content="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/1120xAny/7/7/5/68775_usnorfolksouthernns999_11_3_09_88792.jpg" /> <meta property="twitter:image:alt" content="us-norfolk southern-NS999_11_3_09" /> <link rel="icon" href="/magazine/dest/graphics/favicons/favicon-32x32.png" /> <!--[if IE]><link rel="shortcut icon" href="/magazine/dest/graphics/favicons/favicon.ico" /><![endif]--> <link rel="apple-touch-icon-precomposed" href="/magazine/dest/graphics/favicons/apple-touch-icon-precomposed.png" /> <meta name="msapplication-TileImage" content="/magazine/dest/graphics/favicons/mstile-144x144.png" /> <meta name="msapplication-TileColor" content="#ffffff" /> <link href="/Magazine/core.css?p=7513768095036817" rel="stylesheet" type="text/css"> <link href="/Magazine/print.css?p=7513768095036817" rel="stylesheet" type="text/css" media="print"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script>var newLang={"more":{"default":"Show more","searchtype":"Show more","searchdates":"Show more"},"less":{"default":"Show fewer","searchtype":"Show fewer","searchdates":"Show fewer"},"show":{"default":"show"},"hide":{"default":"hide"},"caption":{"show":"show caption","hide":"hide caption"},"carousel":{"play":"play slideshow","pause":"pause slideshow"}};</script> <script type="text/javascript"> var IPState = { useripstate: false, useripname: '' }; </script> <script type="text/javascript"> window.dataLayer = window.dataLayer || []; window.dataLayer.push({'StoryID':'67869'}); window.dataLayer.push({'StoryFormatProperty':'O'}); window.dataLayer.push({'StoryCategories':'|USA|Battery traction|'}); window.dataLayer.push({'StoryLayout':'Standard'}); window.dataLayer.push({'StoryWidth':'standard width'}); window.dataLayer.push({'StoryLayoutCode':'1'}); window.dataLayer.push({'StoryFormatCode':'1097'}); window.dataLayer.push({'StoryTypeCode':'1013'}); window.dataLayer.push({'StoryCategoriesCodes':'|2082|2345|'}); window.dataLayer.push({'StoryFullNavPath':'|1|31|47|'}); window.dataLayer.push({'UserID':undefined}); window.dataLayer.push({'NavCode':'47'}); window.dataLayer.push({'MicrositeNavCode':'-1'}); window.dataLayer.push({'NavKey':'47'}); window.dataLayer.push({'NavigationAreaNavCode':'31'}); </script> <script type="text/javascript"> window.dataLayer.push({'AccessQualificationTypeName':'Free access (anonymous users)'}); window.dataLayer.push({'AccessProductCode':'RGofree'}); window.dataLayer.push({'AccessProductName':'Railway Gazette Online Free'}); window.dataLayer.push({'AccessCount':'1'}); </script> <script type="text/javascript"> //add any client specific dimensions window.dataLayer = window.dataLayer || []; window.dataLayer.push({'UserStateLoggedIn':'False'}); window.dataLayer.push({'FullNavPath':'|1|31|47|'}); window.dataLayer.push({'Content Title':'Norfolk Southern revives battery traction ambitions with Alstom partnership | News'}); window.dataLayer.push({'AccessStatus':'Granted'}); window.dataLayer.push({'Template':'Story'}); window.dataLayer.push({'Pubcode':'2'}); window.dataLayer.push({'PublicationName':'Railway Gazette International'}); window.dataLayer.push({'StoryAccessControl':'Private'}); window.dataLayer.push({'StoryFormat':'No auto related content'}); window.dataLayer.push({'StoryType':'News'}); window.dataLayer.push({'Headline':'Norfolk Southern revives battery traction ambitions with Alstom partnership'}); window.dataLayer.push({'LongHeadline':undefined}); window.dataLayer.push({'Intro':'USA: Class I railroad Norfolk Southern Corp is to convert two diesel prime movers to hybrid operation through a partnership with Alstom.'}); window.dataLayer.push({'Catchline':undefined}); window.dataLayer.push({'Synopsis':undefined}); window.dataLayer.push({'Standfirst':undefined}); window.dataLayer.push({'Answer':undefined}); window.dataLayer.push({'Source':undefined}); window.dataLayer.push({'Refs':undefined}); window.dataLayer.push({'Class':undefined}); window.dataLayer.push({'Credits':undefined}); window.dataLayer.push({'Postscript':undefined}); window.dataLayer.push({'PrimaryNav':'|Main Navigation|News|Traction & Rolling Stock|'}); window.dataLayer.push({'PrimaryNavCurrent':'Traction & Rolling Stock'}); window.dataLayer.push({'PrimaryNavCodeCurrent':'47'}); window.dataLayer.push({'CategoryCodes':'|2082|2345|'}); window.dataLayer.push({'Tags':undefined}); window.dataLayer.push({'Bylines':'|Railway Gazette International|'}); window.dataLayer.push({'IssueDate':'01-11-2024'}); window.dataLayer.push({'IssueDateTime':'01-11-2024 00:00:00'}); window.dataLayer.push({'PublishDate':'22-11-2024'}); window.dataLayer.push({'PublishDateTime':'22-11-2024 17:12:00'}); window.dataLayer.push({'BrowseJobsURL':undefined}); window.dataLayer.push({'grecaptcha':'6LdF8vonAAAAAD7o_GFdZx7ScY1_ggHdHUmijbXX'}); </script> <link href='https://fonts.googleapis.com/css?family=PT+Sans:400,700' rel='stylesheet' type='text/css'> <style> /* CLS FIXES */ #wrapper_sleeve { position: relative; max-width: 1024px; margin: 0 auto; background-color: #fff; } body#story.story-style-2 #wrapper_sleeve, body#story.story-style-4 #wrapper_sleeve, body#story.story-style-5 #wrapper_sleeve, body#story.story-style-6 #wrapper_sleeve, body#story.story-style-7 #wrapper_sleeve{ max-width:unset; } .footer { width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; } .wallpaper-applied.site-width-1024 .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:1180px; margin: 0 auto; } .container.hot-topics-container .inner-sleeve { max-width: 1180px; width:1180px; margin: 0 auto; } .footer .container .inner-sleeve { max-width: 1220px; } #wrapper_sleeve>:first-child { padding-top: 31px; background-color: #fff; } .accessContainer>.container:first-child .inner-sleeve { padding-top: 60px; } @media only screen and (max-width: 768px) { .accessContainer .storyPreview .access-denied-index-img.picture img{ width:100px; } } @media screen and (min-width: 1024px){ .hero-spin{ width:100%; margin-left: -50%; margin-right: -50%; } .grid .hero-carousel .swiper-box, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn .spinVideo.site-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.full-width-background, .container>.inner-sleeve:not(#colwrapper) .grid .oneColumn div.site-width-background{ width:100%; margin-left: calc(-50% + 50%); } body#story.story-style-1 .contentWrapper{ width: auto; padding-right: 7%; } body#story.story-style-2 .contentWrapper, body#story.story-style-4 .contentWrapper, body#story.story-style-5 .contentWrapper, body#story.story-style-6 .contentWrapper, body#story.story-style-7 .contentWrapper { width: 107%; padding-right: 7%; } } @media screen and (min-width: 1180px){ .grid .hero-carousel .swiper-box{ width:100%; margin-left: -50%; margin-right: -50%; } } @media screen and (min-width: 1280px){ .directories.directory-search .contentWrapperLeft { margin-left: 0; width: 100%; } } </style> <style type="text/css"> /* START styles for HTML messaging */ #top .html-message, #main .html-message, #foot .html-message { margin: 40px 0px; } #top .html-message .content, #main .html-message .content, #foot .html-message .content { background-color: #f2f2f2; padding: 20px 20px 50px; z-index: 9; position: relative; } #top .html-message.content-close-block .content, #main .html-message.content-close-block .content, #foot .html-message.content-close-block .content { padding-top: 40px; } #top .html-message .content .col-1, #main .html-message .content .col-1, #foot .html-message .content .col-1 { margin-bottom: 25px; } #top .html-message .content .col-1 header h2, #main .html-message .content .col-1 header h2, #foot .html-message .content .col-1 header h2 { color: #000; font-size: 1.424rem; line-height: 1.602rem; margin-bottom: 13px; } #top .html-message .content .col-1 section p, #main .html-message .content .col-1 section p, #foot .html-message .content .col-1 section p { color:#444; font-size: 1rem; line-height: 1.266rem; margin-bottom: 20px; } #top .html-message .content .col-1 section ul, #main .html-message .content .col-1 section ul, #foot .html-message .content .col-1 section ul { padding: 0; margin: 0; list-style: none; } #top .html-message .content .col-1 section li, #main .html-message .content .col-1 section li, #foot .html-message .content .col-1 section li { color: #444; font-size: 1rem; line-height: 1.266rem; margin-bottom: 12px; position: relative; padding-left: 18px; } #top .html-message .content .col-1 section li:before, #main .html-message .content .col-1 section li:before, #foot .html-message .content .col-1 section li:before { content: ''; position: absolute; display: inline-block; left: -2px; top: 2px; width: 14px; height: 14px; background-position: -504px -517px; background-repeat: no-repeat; background-image: url(/magazine/dest/graphics/output/sprite.css-007e76df.svgz); } #top .html-message .content .col-1 footer .button, #main .html-message .content .col-1 footer .button, #foot .html-message .content .col-1 footer .button { position: absolute; bottom: 30px; } #top .html-message .content .col-2, #main .html-message .content .col-2, #foot .html-message .content .col-2 { background-color: #fff; position: relative; padding: 25px 20px; margin-bottom: 41px; } .html-message.content-close-block .content .col-2:after { content: ""; display: inline-block; border-left: 28px solid transparent; border-right: 28px solid transparent; border-top: 28px solid #fff; position: absolute; right: 25px; bottom: -28px; } #top .html-message .content .col-2 section .image , #main .html-message .content .col-2 section .image, #foot .html-message .content .col-2 section .image { display: none; } #top .html-message .content .col-2 section .quotation, #main .html-message .content .col-2 section .quotation, #foot .html-message .content .col-2 section .quotation { margin-bottom: 5px; } #top .html-message .content .col-2 section .quotation p, #main .html-message .content .col-2 section .quotation p, #foot .html-message .content .col-2 section .quotation p { color: #E39B00; font-size: 1.125rem; line-height: 1.424rem; font-weight: bold; } #top .html-message .content .col-2 section .quotation-source, #main .html-message .content .col-2 section .quotation-source, #foot .html-message .content .col-2 section .quotation-source { overflow: hidden; } #top .html-message .content .col-2 section .quotation-source p, #main .html-message .content .col-2 section .quotation-source p, #foot .html-message .content .col-2 section .quotation-source p { color: #666; font-size: .889rem; line-height: 1rem; margin-bottom: 5px; } /* Styling for 'close' button */ .content-close-block { position: relative; } .content-close-block .content-close-block-trigger { position: absolute; top: 0; right: 0; z-index: 30000; background-color: #f2f2f2; padding: 6px; text-transform: uppercase; font-size: 0.702rem; line-height: 0.702rem; text-decoration: none; font-weight: bold; } .content-close-block .content-close-block-trigger:after { content: ""; display: inline-block; width: 20px; height: 14px; background-repeat: no-repeat; background-image: url(https://d1c4d7gnm6as1q.cloudfront.net/pictures/web/m/u/g/message_close_691357.svgz); background-position: 4px 0px; } @media screen and (min-width: 1024px) { #top .oneColumn .html-message .content, #foot .oneColumn .html-message .content { display: flex; flex-wrap: nowrap; flex-direction: row; padding: 27px 40px 40px; } #top .oneColumn .html-message.content-close-block .content, #foot .oneColumn .html-message.content-close-block .content { padding-top: 40px; } #top .oneColumn .html-message .content .col-1, #foot .oneColumn .html-message .content .col-1 { flex: 1 67.68%; padding-right: 20px; margin-bottom: 70px; } #top .oneColumn .html-message .content .col-1 header h2, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 header h2, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 header h2, #main .oneColumn .html-message .content .col-1 header h2, #foot .oneColumn .html-message .content .col-1 header h2, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 header h2, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 header h2 { /* font-size: 2.566rem; line-height: 2.887rem; */ font-size: 2.281rem; line-height: 2.566rem; } #top .twoColumns .html-message .content .col-1 header h2, #foot .twoColumns .html-message .content .col-1 header h2 { font-size: 2.281rem; line-height: 2.566rem; } /* #top .oneColumn .html-message .content .col-1 section p, #top .twoColumns .html-message .content .col-1 section p, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section p, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section p, #main .oneColumn .html-message .content .col-1 section p, #foot .oneColumn .html-message .content .col-1 section p, #foot .twoColumns .html-message .content .col-1 section p, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section p, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section p { font-size: 1.125rem; line-height: 1.802rem; margin-bottom: 10px; } */ /* #top .oneColumn .html-message .content .col-1 section li, #top .twoColumns .html-message .content .col-1 section li, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li, #main .oneColumn .html-message .content .col-1 section li, #foot .oneColumn .html-message .content .col-1 section li, #foot .twoColumns .html-message .content .col-1 section li, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li { font-size: 1.125rem; line-height: 1.802rem; margin-bottom: 0; } */ /* #top .oneColumn .html-message .content .col-1 section li:before, #top .twoColumns .html-message .content .col-1 section li:before, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li:before, #top .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li:before, #main .oneColumn .html-message .content .col-1 section li:before, #foot .oneColumn .html-message .content .col-1 section li:before, #foot .twoColumns .html-message .content .col-1 section li:before, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-1 section li:before, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-1 section li:before { top: 5px; } */ #top .oneColumn .html-message .content .col-1 footer .button, #foot .oneColumn .html-message .content .col-1 footer .button { bottom: 40px; } #top .oneColumn .html-message .content .col-2, #foot .oneColumn .html-message .content .col-2 { background-color: transparent; flex: 1 56.565%; padding: 13px 0 0; margin-bottom: 41px; } #top .oneColumn .columnOne .html-message.content-close-block .content .col-2:after, #foot .oneColumn .columnOne .html-message.content-close-block .content .col-2:after { display: none; } #top .oneColumn .html-message .content .col-2 section .image, #top .twoColumns .html-message .content .col-2 section .image, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image, #main .oneColumn .html-message .content .col-2 section .image, #foot .oneColumn .html-message .content .col-2 section .image, #foot .twoColumns .html-message .content .col-2 section .image, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image { display: block; float: left; width: 140px; height: 140px; margin-right: 17px; margin-bottom: 10px; } #top .oneColumn .html-message .content .col-2 section .image img, #top .twoColumns .html-message .content .col-2 section .image img, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image img, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image img, #main .oneColumn .html-message .content .col-2 section .image img, #foot .oneColumn .html-message .content .col-2 section .image img, #foot .twoColumns .html-message .content .col-2 section .image img, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .image img, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .image img { border-radius: 100%; } #top .oneColumn .html-message .content .col-2 section .quotation, #foot .oneColumn .html-message .content .col-2 section .quotation { float: right; margin-bottom: 5px; min-width: 240px; width: calc(100% - 160px); } #top .oneColumn .html-message .content .col-2 section .quotation p, #top .twoColumns .html-message .content .col-2 section .quotation p, #top .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .quotation p, #top .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .quotation p, #main .oneColumn .html-message .content .col-2 section .quotation p, #foot .oneColumn .html-message .content .col-2 section .quotation p, #foot .twoColumns .html-message .content .col-2 section .quotation p, #foot .twoColumnsSmallLeft .columnTwo .html-message .content .col-2 section .quotation p, #foot .twoColumnsSmallRight .columnOne .html-message .content .col-2 section .quotation p { font-size: 1.4rem; margin-bottom: 15px; line-height: 2rem; } #top .oneColumn .html-message .content .col-2 section .quotation-source, #foot .oneColumn .html-message .content .col-2 section .quotation-source { clear: both; float: left; width: 140px; } #top .oneColumn .html-message .content .col-2 section .quotation-source p, #foot .oneColumn .html-message .content .col-2 section .quotation-source p { margin-bottom: 0; } } /* END styles for HTML messaging */ </style> <style type="text/css"> /* START styles for thank you page */ .thankYouTop { text-align: center; } .spinPromo.thankYouTop.package h2 { padding: 10px 0; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2, .package .columns .column-3 { background-color: #fff; padding: 20px; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2{ margin-bottom: 20px; } @media screen and (min-width: 1024px) { .spinPromo.thankYouTop.package .columns { display: flex; flex-direction: row; max-width: 1180px; margin-left: auto; margin-right: auto; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2, .package .columns .column-3 { flex: 1 1; position: relative; text-align: left; } .spinPromo.thankYouTop.package .columns .column-1, .package .columns .column-2{ margin-bottom: 0; } .spinPromo.thankYouTop.package .columns .column-2, .package .columns .column-3 { margin-left: 20px; } .spinPromo.thankYouTop.package .columns .column-inner { padding-bottom: 50px; } .spinPromo.thankYouTop.package .columns .column-footer { position: absolute; left: 20px; right: 20px; bottom: 20px; padding: 0; } } /* END styles for thank you page */ </style> <style> .mast-sharing-icons { display: none; position: absolute; right: 20px; bottom: -20px; list-style: none; margin: 0; padding: 0; } .mast-sharing-icons:after { display: table; clear: both; content: ''; } .mast-sharing-icons li { float: left; } .mast-sharing-icons li:not(:last-child) { margin-right: 8px; } .mast-sharing-icons li a { display: inline-block; } .mast-sharing-icons li a svg [id$="-circle"] { fill: #005092; transition: fill 200ms linear; } .mast-sharing-icons li a:hover svg [id$="-circle"] { fill: #000; } @media screen and (min-width: 1024px) { .mast-sharing-icons { display: block; } } </style> <!-- TEMP PATCH: DVVMCS-366 START --> <style> header#masthead+.ad { position: relative; } @media screen and (min-width: 1024px) { .wallpaper-applied header#masthead+.ad:before { content: ''; position: absolute; left: -50vw; right: -50vw; z-index: 0; top: -24px; bottom: -24px; width: 1024px; margin: 0 auto; } .wallpaper-applied header#masthead+.ad > div { position: relative; } } </style> <!-- TEMP PATCH: AC - REMOVAL OF RG CHINA LOGO AND RE-WORK OF GRID REPEAT -- START --> <style> .brand-list ul li { margin: 0 auto; } @media screen and (min-width: 1280px){ .brand-list ul { -ms-grid-columns: 1fr 20px 1fr 20px 1fr 20px 1fr 20px 1fr; grid-template-columns: repeat(3,1fr) !important; grid-gap: 170px; }} @media screen and (min-width: 768px) and (max-width: 1280px) { .brand-list ul { display: -ms-grid; display: grid; -ms-grid-columns: 1fr 20px 1fr 20px 1fr; grid-template-columns: repeat(2,1fr) !important; grid-gap: 75px; margin: auto; text-align: center !important; }} #cookiePolicy div p {text-align: left;} </style> <!-- TEMP PATCH: AC END --> <!-- AC - Ads text colour for global enhanced ads --> <style> .ad-text { background: #f0f2f2; font-size: 0.675rem; padding: 2px; color: #444; text-transform: uppercase; border-top: 4px solid #DCDCDC; } </style> <style> .wallpaper-applied.site-width-1024 .ad-style1, .wallpaper-applied.site-width-1024 header#masthead+.ad { width: 728px; } </style> <!-- START DIRECTORY CSS STYLING --> <style> .directories .contactOption__web a{ overflow-wrap: break-word; } .directories .company-footer .company-footer__content__sleeve .company-footer__content .company-footer__info-logo-request-info, .directories .company-footer .company-footer__content__sleeve .company-footer__content { gap:20px; } @media screen and (min-width: 1024px){ .full-branded-section, .full-container { width: unset; left: unset; right: unset; margin-left: unset; margin-right: unset; } .directories .company-footer .company-footer__content__sleeve .company-footer__content .company-footer__info-logo-request-info .company-footer__info{ margin:0; } } @media screen and (min-width: 1280px){ .directories #content .headerWrapper, .directories .contentWrapper { width: 100%; } .directories .company-header .company-header__content__sleeve .company-header__content .company-header__info { padding-left: 20px; padding-right: 20px; } .directories .company-header .company-header__content__sleeve .company-header__content .company-header__logo-request-info .company-header__logo .company-header__logo_inner { margin-right: 20px; } .directories .contactus__header .contactus__header_location { margin-left: 12%; } .directories .company-header .company-header__content__sleeve .company-header__company-tabs, .directories .company-footer .company-footer__content__sleeve .company-footer__content { padding-left: 20px; padding-right: 20px; } } </style> <!-- END DIRECTORY CSS STYLING --> <!-- Beginnig hot topics CSS STYLING --> <style> .hot-topics-item {display: none;} .hot-topics-item > span:nth-child(2) > a:nth-child(1) {display: none;} .wallpaper-applied.site-width-1024 .hot-topics-container { position: relative; width: 100% !important; margin: auto; } .wallpaper-applied.site-width-1024 .container.hot-topics-container .inner-sleeve { max-width: 1024px !important; width: 100%; margin: 0 auto; } .directories .contactus__footer { display: none; } div.company-footer__info-logo-request-info > div.company-footer__info > button { display: none !important; } div.company-header__content > div.company-header__info > button { display: none !important; } .cta-button-wrapper { margin: 0 auto !important; display: table;} .cta-button { background: transparent; padding: 10px 20px; border: 2px solid #005092; border-radius: 20px; margin: 0 auto !important; transition: all 0.25s ease; } .cta-button:hover { background: #005092; color: #fff !important; padding: 10px 20px; border: 2px solid #005092; border-radius: 20px; transition: all 0.25s ease; text-decoration: none; } .storytext .inline_gallery.style1-gallery .galleryscroll .text.content {background: #ffffff73; padding: 10px;} </style> <!-- <style> div#wrapper div#wrapper_sleeve.showMenuPushed div.container.relatedArticles.companyNews {display: none;} </style> --> <!-- END hot topics CSS STYLING --> <script data-ad-client="ca-pub-7045852503918369" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <meta name="google-site-verification" content="ojKNsJR7hnpBNaYvxbPPxNCHSQ0YJnk6BHFQui-VqsQ" /> <meta name="google-site-verification" content="HCoJsr9OuUiqJS--PJxmsXQRuTF7_scJPa_V9A_g7yA" /> <meta name="google-site-verification" content="yqc9O3gL22UT2bkYsY2LHSea9TJiT_5aiXGAQd2Grgw" /> <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <!-- Begin of setting Premium user --> <script> $(document).ready(function() { var notSignedIn = getDataLayerVal('PartyActiveProductIds') == undefined ? true : false ; if(!notSignedIn){ var splitthis = getDataLayerVal('PartyActiveProductIds').split('|'); var premium = splitthis.filter(function(number) { return number == '2'; }); if(premium.length != 0){ document.querySelector('body').classList.add("premium"); } else{ if(document.querySelector('body').classList.contains("premium")){ document.querySelector('body').classList.remove("premium"); } } } }) </script> <!-- End of setting Premium user --> <style> .mast-sharing-icons { display: none; position: absolute; right: 20px; bottom: -20px; list-style: none; margin: 0; padding: 0; } .mast-sharing-icons:after { display: table; clear: both; content: ''; } .mast-sharing-icons li { float: left; } .mast-sharing-icons li:not(:last-child) { margin-right: 8px; } .mast-sharing-icons li a { display: inline-block; } .mast-sharing-icons li a svg [id$="-circle"] { fill: #005092; transition: fill 200ms linear; } .mast-sharing-icons li a:hover svg [id$="-circle"] { fill: #000; } @media screen and (min-width: 1024px) { .mast-sharing-icons { display: block; } } </style> <script> var showwallpaper; if(document.querySelector('meta[name="showwallpaper"]')) { showwallpaper = document.querySelector('meta[name="showwallpaper"]').content; } </script> <style> @media screen and (min-width: 1220px) { .wallpaper-applied.site-width-1024 .mast.container .inner-sleeve, .wallpaper-applied.site-width-1024 #mainnav.container .inner-sleeve { max-width: 1220px; } } </style> <script type='text/javascript'> function getDataLayerVal(keyVal) { for (var i = 0; i < window.dataLayer.length; i++) { if (dataLayer[i][keyVal] !== undefined) { return dataLayer[i][keyVal]; } } } function updateContentFromDataLayer(selector, value) { return document.querySelector(selector).innerText = getDataLayerVal(value) } </script> <script> window.googletag = window.googletag || {cmd: []}; googletag.cmd.push(function() { // Define a size mapping object which can be applied to the ad positions. The first // parameter to addSize is a viewport size, while the second is a list of allowed ad sizes. // The sizes included below match those in the examples provided in this support document. //(Used for: AdvertA, AdvertC, AdvertAttach) var mapSmallRight = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,75],[320,50],[300,250]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300,250]]).build(); //(Used for: AdvertB) var mapSmallRightB = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,75],[320,50],[300,250]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300,250], [120,600], [160,600], [300,600]]).build(); //(Used for: AdvertD, AdvertE, AdvertF) var mapLargeRight = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300, 50]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[300, 250]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[300, 600]]).build(); // WV Cloud Documentation | Google DoubleClick Advertising // abacusemedia.com/webvision Page 6 of 12 //(Used for: Masthead Leaderboard;) var mapLB = googletag.sizeMapping(). // 320, 0 (Mobile) addSize([320, 0], [[300,50], [320, 50]]). // 601, 0 (Small Tablet - Portrait) addSize([601, 0], [[468,60]]). // 768, 0 (Tablet - Portrait) addSize([768, 0], [[728,90]]). // 1024, 0 (Desktop / Tablet Landscape) addSize([1024, 0], [[728,90], [970,250]]).build(); var mapWallpaper = googletag.sizeMapping(). addSize([0, 0], []). // 1220, 0 addSize([1220, 0], [1, 1]).build(); // var wallpaperSlot = googletag.defineOutOfPageSlot('/13644946/WallpaperV5', 'div-gpt-ad-1602240785818-0').addService(googletag.pubads()); // ADVERT A googletag.defineSlot('/13644946/RGI.COM_MPU_GENERAL_PAGES', [300, 250], 'div-gpt-ad-1602084646203-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); // ADVERT B googletag.defineSlot('/13644946/RGI_MPU_General2', [300, 250], 'div-gpt-ad-1601978937945-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); // ADVERT C googletag.defineSlot('/13644946/RGI_MPU_C', [300, 250], 'div-gpt-ad-1666188956933-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); // UNDER NAV googletag.defineSlot('/13644946/RGI.COM_LEAD_GENERAL_PAGES', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1601973347622-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Home Leaderboard 2 googletag.defineSlot('/13644946/RGI_Leaderboard_2', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1724079785985-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Home Leaderboard 3 googletag.defineSlot('/13644946/RGI_Leaderboard_3', [[300, 50], [320, 50], [970, 90], [728, 90], [970, 250], [468, 60]], 'div-gpt-ad-1724081464759-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // Leaderboard 4 googletag.defineSlot('/13644946/RGI_leaderboard_4', [[970, 250]], 'div-gpt-ad-1726133201831-0').defineSizeMapping(mapLB).addService(googletag.pubads()); // home video slot //googletag.defineSlot('/13644946/rgivideo', [[640, 480], [300, 250]], 'div-gpt-ad-1644499013896-0').addService(googletag.pubads()); //RG ADHESION - (WB 10.09/2024) googletag.defineOutOfPageSlot('/13644946/RGI_Adhesion', 'div-gpt-ad-1725960169073-0').addService(googletag.pubads()); // Microsite ad units googletag.defineSlot('/13644946/Metro_MPU_General', [300, 250], 'div-gpt-ad-1602154876742-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_MPU_B', [300, 250], 'div-gpt-ad-1602154919837-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_MPU_C', [300, 250], 'div-gpt-ad-1602154953662-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_Leaderboard_General', [[300, 50], [728, 90], [468, 60]], 'div-gpt-ad-1707835215170-0').defineSizeMapping(mapLB).addService(googletag.pubads()); googletag.defineSlot('/13644946/Metro_Skyscraper', [[300, 600], [300, 250]], 'div-gpt-ad-1602154984749-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Masthead_Leader_under_Nav', [[300, 50], [728, 90], [468, 60]], 'div-gpt-ad-1602155029502-0').defineSizeMapping(mapLB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Advert_A', [300, 250], 'div-gpt-ad-1602155062284-0').defineSizeMapping(mapSmallRight).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_MPU_B', [300, 250], 'div-gpt-ad-1602155092840-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); googletag.defineSlot('/13644946/RBUK_Advert_C', [300, 250], 'div-gpt-ad-1602155131343-0').defineSizeMapping(mapSmallRightB).addService(googletag.pubads()); //Out of page unit - added 15-9-22 googletag.defineOutOfPageSlot('/13644946/RGI_Interstitial', 'div-gpt-ad-1663232421348-0').addService(googletag.pubads()); googletag.pubads().setTargeting('UserStateLoggedIn', getDataLayerVal('UserStateLoggedIn')); googletag.pubads().setTargeting('StoryCategories', getDataLayerVal('StoryCategories')); googletag.pubads().setTargeting('navcode', getDataLayerVal('NavCode')); googletag.pubads().setTargeting('articleid', getDataLayerVal('StoryID')); googletag.pubads().setTargeting('storylayout', getDataLayerVal('StoryLayout')); googletag.pubads().setTargeting('jobtitle', typeof jobtitleVar !== 'undefined' ? jobtitleVar.slice(1,-1) : ''); googletag.pubads().setTargeting('industrysector', typeof industrySectorVar !== 'undefined' ? industrySectorVar.slice(1,-1) : ''); googletag.pubads().setTargeting('MicrositeNavCode', getDataLayerVal('MicrositeNavCode')); googletag.pubads().setTargeting('usertype', getDataLayerVal('usertype')); googletag.pubads().setTargeting('ProductId',getDataLayerVal('PartyActiveProductIds')); googletag.pubads().setTargeting("url",window.location.pathname); googletag.pubads().setTargeting('slug', document.location.pathname.substr(document.location.pathname.lastIndexOf('/'))); if (document.querySelector('#div-gpt-ad-1602240785818-0') && showwallpaper && (window.innerWidth > 1220)) { var wallpaperSlot = googletag.defineOutOfPageSlot('/13644946/WallpaperV5', 'div-gpt-ad-1602240785818-0').addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener('slotRenderEnded', function(event) { if((event.slot.getSlotElementId() == wallpaperSlot.getSlotElementId()) && !event.isEmpty) { if(document.querySelector('.wallpaper-ad[data-site-width-1024]')) { document.body.classList.add('site-width-1024'); } if(showwallpaper === "true") { document.body.classList.add('wallpaper-applied'); $(window).trigger('wallpaper:advert'); } } }); }; googletag.pubads().enableLazyLoad({ fetchMarginPercent: 5, // Fetch slots within 5 viewports. renderMarginPercent: 5, // Render slots within 2 viewports. mobileScaling: 0 // Double the above values on mobile. }); //googletag.pubads().enableAsyncRendering(); //googletag.pubads().collapseEmptyDivs(); googletag.enableServices(); }); // check if wallpaper is defined, is set to be shown on this page and screen width is greater than 1220 /* if (document.querySelector('#div-gpt-ad-1578661320890-0') && showwallpaper && (window.innerWidth > 1220)) { var wallpaperSlot = googletag.defineOutOfPageSlot('/210416249/Wallpaper', 'div-gpt-ad-1602240785818-0').defineSizeMapping(mapWallpaper).addService(googletag.pubads()).setTargeting('url', document.location.pathname); googletag.pubads().addEventListener('slotRenderEnded', function(event) { debugger; if((event.slot.getSlotElementId() == wallpaperSlot.getSlotElementId()) && !event.isEmpty) { debugger; if(document.querySelector('.wallpaper-ad[data-site-width-1024]')) { document.body.className += ' ' + 'site-width-1024'; } if(showwallpaper === "true") { document.body.className += ' ' + 'wallpaper-applied'; $(window).trigger('wallpaper:advert'); } } }); }; */ window.addEventListener('message', receiveMessage, false); function receiveMessage(event) { if(event.data == 'wallpaper-fireplace' || event.data == 'wallpaper-standard') { //if(event.data == 'wallpaper-standard') { document.body.classList.add(event.data); positionWallpaperFromTop(); wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = document.querySelector('#masthead').getBoundingClientRect().bottom + 'px'; } } function positionWallpaperFromTop() { if(!window.IntersectionObserver) return; var observer = new IntersectionObserver(function(entries) { if (entries[0].isIntersecting) { var wallpaperElement = document.querySelector('.wallpaper-ad').getElementsByTagName('div')[0]; wallpaperElement.style.top = (document.querySelector('#masthead').getBoundingClientRect().bottom + window.scrollY) + 'px' } else { document.querySelector('#wrapper_sleeve').style.top = '0'; } }); observer.observe(document.querySelector('#masthead')); } </script> <!-- THIS IS COMMENTED OUT AS IT ALREADY EXISTS ON A SEPARATE PAGE TEXT "Google tag manager" --> <!-- Google Tag Manager (noscript) <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KGQPK8B" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> End Google Tag Manager (noscript) --> <script type="text/javascript"> _linkedin_partner_id = "3203105"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script><script type="text/javascript"> (function(){var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript"; b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(); </script> <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=3203105&fmt=gif" /> </noscript> <script> var EnhancedAdvertisingConfig = {}; </script> <!--Global Enhanced Adverts JSON definition from PAGETEXT--> <script> EnhancedAdvertisingConfig = { "Refresh":false, "RefreshDelaySecondsDefaultDesktop":30, "RefreshDelaySecondsDefaultMobile":30, "StoryDynamicSlotsAddGroupsAll":"Ads,Widgets", "StoryDynamicSlotsAddGroupsInline":"", "StoryDynamicSlotsAddGroupsRHC":"", "StoryDynamicSlotsRemoveGroupsAll":"", "StoryDynamicSlotsRemoveGroupsInline":"", "StoryDynamicSlotsRemoveGroupsRHC":"", "StoryDynamicSlotsRepeat":true, "StoryDynamicSlotsDesktopMaxInlineSlots":3, "StoryDynamicSlotsMobileMaxInlineSlots":3, "StoryDynamicSlotsDesktopMaxRHCSlots":3, "StoryDynamicSlotsDesktopElementSpacingFirst":3, "StoryDynamicSlotsMobileElementSpacingFirst":2, "StoryDynamicSlotsDesktopElementSpacing":4, "StoryDynamicSlotsMobileElementSpacing":3, "GAMAdUnitSizesInlineMobileDefault":[[300,250]], "GAMAdUnitSizesInlineDesktopDefault":[[300,250]], "GAMAdUnitSizesRHCDefault":[[300,250],[300,600]], "RHCMinHeightForSlotInsert":250, "RHCAdContainerDefaultHeight":250, "RHCMinHeightForStickyAd":300, "RHCStickyAdThresholdHeight":300, "RHCAdSmallContainerDefaultHeight":300, "CollapseEmptyDivs":true, "Slots":[ { "Type":"GAMAdvert", "Position":"PreferRight", "Group":"Ads", "AdUnit":"/13644946/RGI.COM_MPU_GENERAL_PAGES", "RefreshDelaySeconds":30, "Sticky":false, "Repeat":false, "Refresh":true, "InsertIfNoRHCSpace":true, "NoBackfill":true, "AdUnitSizesInline":[[300,250]], //not required after hotfix "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,600],[300,250]], "AdUnitSizesRHC":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, { "Type":"CustomContent", "Position":"Right", "Sticky":false, "Group":"Widgets", "Repeat":false, "InsertIfNoRHCSpace":true, "HTML":"<div class=\"tab-widget-5\" data-ajax-load-content=\"\" data-cache-bust=\"true\" data-url=\"/ajax/most\"></div>", "CustomEventName":"MostPopularWidgetInit", "Javascript":function(elem,container,slotconfig,adcounter,counter,repeat){ $(window).trigger("abacus:readjusrhcheight",[event, elem]); }, "CSSClass":"wvc-custom-widget-mostpopular", "MinHeight":600 }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/RGI_MPU_General2", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":false, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":true, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,600],[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, //repeating slots - 1 and 2 { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/RGI.COM_MPU_GENERAL_PAGES", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":true, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, { "Type":"GAMAdvert", "Position":"Right", "Group":"Ads", "AdUnit":"/13644946/RGI_MPU_General2", "RefreshDelaySeconds":30, "Sticky":true, "Repeat":true, "Refresh":true, "NoBackfill":true, "InsertIfNoRHCSpace":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "AdUnitSizesRHC":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":250 }, //inline repaeting slots { "Type":"GAMAdvert", "Position":"Inline", "Group":"Ads", "AdUnit":"/13644946/RGI.COM_MPU_GENERAL_PAGES", "RefreshDelaySeconds":30, "Repeat":true, "Refresh":true, "NoBackfill":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":269 }, { "Type":"GAMAdvert", "Position":"Inline", "Group":"Ads", "AdUnit":"/13644946/RGI_MPU_General2", "RefreshDelaySeconds":30, "Repeat":true, "Refresh":true, "NoBackfill":false, "AdUnitSizesInlineDesktop":[[300,250]], "AdUnitSizesInlineMobile":[[300,250]], "ExtraHTML":"<div class=\"ad-text\">Advert</div>", "MinHeight":269 } ], "Overrides":[ { //If Type='Sponsored' (1018) OR Type='Organisations' (1015) OR Type='Tender' (1030) OR Type='Job' (1031) "Conditions":"StoryType-1015,StoryType-1018,StoryType-1030,StoryType-1031", "Operator":"Or", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Slots (all) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsAll":"Ads,Widgets" } }, { //If Category="Slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsRHC":"Ads,Widgets" } }, { //If Category="Slots (inline) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsInline":"Ads,Widgets" } }, { //If Category="Advert slots (all) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsAll":"Ads" } }, { //If Category="Advert slots (RHC) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsRHC":"Ads" } }, { //If Category="Advert slots (inline) - Off" "Conditions":"StoryCategoriesCodes-99999999", "Settings":{ "RemoveGroupsInline":"Ads", } } ] };</script> <script> $(window).trigger("wvcfe:globalenhancedadvertsinit", [event, EnhancedAdvertisingConfig]); (function(w, d) { if(window.NodeList && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; } d.addEventListener('DOMContentLoaded', function(event) { if(EnhancedAdvertisingConfig.Slots) { var enhAdDebug = false; if( localStorage.getItem('enh-ads-debug') == 'true' ) enhAdDebug = true; var sp = 'story-inlinecontent-placeholder'; var supportedTypes = ['gamadvert', 'customcontent']; var supportedPositions = ['inline', 'preferright', 'right']; var isDesktopResolution = w.matchMedia("screen and (min-width: 1023px)").matches; var isStoryFullLayout = d.body.classList.contains('story-full-layout'); var inlineCounter = 1; var rhcCounter = 1; var inlineAdCounter = 1; var rhcAdCounter = 1; var ticking = false; $('#story.enhanced-advertising .storytext > div.webonly').each( function(){ var t = $(this); t.replaceWith( t.html() ); }); var storyCustomContentPlaceholders = d.querySelectorAll('#story.enhanced-advertising .storytext > *'); var maxRHCSlotsToFitIn = 0; var matches = function(el, selector) { return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); }; var getClosestParent = function(elem, selector) { for(; elem && elem !== d; elem = elem.parentNode) { if(matches(elem, selector)) { return elem; } } return null; }; var storyType = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryTypeCode && el.StoryTypeCode != 'null'; }).map(function(el) { return 'StoryType-' + el.StoryTypeCode; }).join('') : ''; var storyFormat = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFormatCode && el.StoryFormatCode != 'null'; }).map(function(el) { return 'StoryFormat-' + el.StoryFormatCode; }).join('') : ''; var storyLayout = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryLayoutCode && el.StoryLayoutCode != 'null'; }).map(function(el) { return 'StoryLayout-' + el.StoryLayoutCode; }).join('') : ''; //PWVD-780 var storyWidth = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryWidth && el.StoryWidth != 'null'; }).map(function(el) { return 'StoryWidth-' + el.StoryWidth; }).join('') : ''; var storyFullNavPath = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryFullNavPath && el.StoryFullNavPath != 'null'; }).map(function(el) { return el.StoryFullNavPath; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).join('-') : ''; var storyCategoriesCodes = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryCategoriesCodes && el.StoryCategoriesCodes != 'null'; }).map(function(el) { return el.StoryCategoriesCodes; }).join('').split('|').filter(function(el) { return el && el != 'null'; }).map(function(el) { return 'StoryCategoriesCodes-' + el; }) : []; var storyID = dataLayer ? dataLayer.filter(function(el) { return el && el.StoryID && el.StoryID != 'null'; }).map(function(el) { return 'StoryID-' + el.StoryID; }).filter(function(el) { return el && el != 'null' && el != 'StoryID-'; }).join('') : ''; storyFullNavPath = (storyFullNavPath ? 'StoryFullNavPath-' + storyFullNavPath : ''); var allDataLayerFilters = storyCategoriesCodes.concat([storyType, storyFormat, storyLayout, storyWidth, storyFullNavPath, storyID]).map(function(m) { return m.toLowerCase(); }); EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = (EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert || 800); EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = (EnhancedAdvertisingConfig.RHCMinHeightForStickyAd || 250); if('Overrides' in EnhancedAdvertisingConfig) { if(EnhancedAdvertisingConfig.Overrides) { var overrides = EnhancedAdvertisingConfig.Overrides; var andOperator = function() { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).every(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; var orOperator = function(el) { return (override.Conditions.toLowerCase().split(',').filter(function(el) { return el && el; }).some(function(el) { return allDataLayerFilters.indexOf(el) != -1; })); }; for(var i = 0, iL = overrides.length; i < iL; i++) { var override = overrides[i]; var operatorFilter; if(override.Operator && override.Operator.toLowerCase() == 'and') { operatorFilter = andOperator; } else { operatorFilter = orOperator; } if(operatorFilter()) { if('Settings' in override) { if(override.Settings) { var settings = override.Settings; if('AddGroupsAll' in settings && settings.AddGroupsAll && isString(settings.AddGroupsAll)) { if(settings.AddGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll += ',' + settings.AddGroupsAll.toLowerCase(); } } if('AddGroupsInline' in settings && settings.AddGroupsInline && isString(settings.AddGroupsInline)) { if(settings.AddGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline += ',' + settings.AddGroupsInline.toLowerCase(); } } if('AddGroupsRHC' in settings && settings.AddGroupsRHC && isString(settings.AddGroupsRHC)) { if(settings.AddGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC += ',' + settings.AddGroupsRHC.toLowerCase(); } } if('RemoveGroupsAll' in settings && settings.RemoveGroupsAll && isString(settings.RemoveGroupsAll)) { if(settings.RemoveGroupsAll.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll += ',' + settings.RemoveGroupsAll.toLowerCase(); } } if('RemoveGroupsInline' in settings && settings.RemoveGroupsInline && isString(settings.RemoveGroupsInline)) { if(settings.RemoveGroupsInline.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline += ',' + settings.RemoveGroupsInline.toLowerCase(); } } if('RemoveGroupsRHC' in settings && settings.RemoveGroupsRHC && isString(settings.RemoveGroupsRHC)) { if(settings.RemoveGroupsRHC.toLowerCase().toLowerCase().indexOf('[all]') != -1) { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC = '[all]'; } else { EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC += ',' + settings.RemoveGroupsRHC.toLowerCase(); } } if('Repeat' in settings && isBoolean(settings.Repeat)) { EnhancedAdvertisingConfig.StoryDynamicSlotsRepeat = settings.Repeat; } if('DesktopMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots = settings.DesktopMaxInlineSlots; } if('MobileMaxInlineSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxInlineSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots = settings.MobileMaxInlineSlots; } if('DesktopMinRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots = settings.DesktopMinRHCSlots; } if('MobileMinRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMinRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots = settings.MobileMinRHCSlots; } if('DesktopMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.DesktopMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots = settings.DesktopMaxRHCSlots; } if('MobileMaxRHCSlots' in settings && isNumberPositiveOrZero(settings.MobileMaxRHCSlots)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots = settings.MobileMaxRHCSlots; } if('DesktopElementSpacingFirst' in settings && settings.DesktopElementSpacingFirst && isNumberPositive(settings.DesktopElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst = settings.DesktopElementSpacingFirst; } if('MobileElementSpacingFirst' in settings && settings.MobileElementSpacingFirst && isNumberPositive(settings.MobileElementSpacingFirst)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst = settings.MobileElementSpacingFirst; } if('DesktopElementSpacing' in settings && settings.DesktopElementSpacing && isNumberPositive(settings.DesktopElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing = settings.DesktopElementSpacing; } if('MobileElementSpacing' in settings && settings.MobileElementSpacing && isNumberPositive(settings.MobileElementSpacing)) { EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing = settings.MobileElementSpacing; } if('RHCMinHeightForSlotInsert' in settings && settings.RHCMinHeightForSlotInsert && isNumberPositive(settings.RHCMinHeightForSlotInsert)) { EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert = settings.RHCMinHeightForSlotInsert; } if('RHCMinHeightForStickyAd' in settings && settings.RHCMinHeightForStickyAd && isNumberPositive(settings.RHCMinHeightForStickyAd)) { EnhancedAdvertisingConfig.RHCMinHeightForStickyAd = settings.RHCMinHeightForStickyAd; } if('CollapseEmptyDivs' in settings && isBoolean(settings.CollapseEmptyDivs)) { EnhancedAdvertisingConfig.CollapseEmptyDivs = settings.CollapseEmptyDivs; } } } } } } } var paragraphThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacing : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacing; var paragraphFirstThreshold = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopElementSpacingFirst : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileElementSpacingFirst; var maxInlineSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxInlineSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxInlineSlots; var minRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMinRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMinRHCSlots; var maxRHCSlots = isDesktopResolution ? EnhancedAdvertisingConfig.StoryDynamicSlotsDesktopMaxRHCSlots : EnhancedAdvertisingConfig.StoryDynamicSlotsMobileMaxRHCSlots; var allAddGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddInlineGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allAddRHCGroups = [].concat(allAddGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsAddGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveGroups = (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsAll : "").split(',').filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveInlineGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsInline : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); var allRemoveRHCGroups = [].concat(allRemoveGroups, (EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC ? EnhancedAdvertisingConfig.StoryDynamicSlotsRemoveGroupsRHC : "").split(',')).map(function(m) { return m.toLowerCase(); }).filter(function(f) { return f; }).filter(function(x, i, a) { return a.indexOf(x) === i; }); EnhancedAdvertisingConfig.Slots = EnhancedAdvertisingConfig.Slots.map(function(x, i) { x.Used = false; x.Index = i; if('Type' in x) { if(supportedTypes.indexOf(x.Type.toString().toLowerCase()) != -1) { x.Type = x.Type.toString().toLowerCase(); } else { x.Type = 'customcontent'; } } else { x.Type = 'customcontent'; } if('Position' in x) { if(supportedPositions.indexOf(x.Position.toString().toLowerCase()) != -1) { x.Position = x.Position.toString().toLowerCase(); } else { x.Position = 'inline'; } } else { x.Position = 'inline'; } if('CSSClass' in x) { x.CSSClass = x.CSSClass.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(' '); } else { x.CSSClass = ''; } if('Group' in x) { x.Group = x.Group.toString().split(' ').join(',').split(',').filter(function(e) { return e && e; }).join(','); } else { x.Group = ''; } if('Sticky' in x) { if(x.Sticky.toString().toLowerCase() == 'true') { x.Sticky = true; } else { x.Sticky = false; } } else { x.Sticky = false; } if('InsertIfNoRHCSpace' in x) { if(x.InsertIfNoRHCSpace.toString().toLowerCase() == 'true') { x.InsertIfNoRHCSpace = true; } else { x.InsertIfNoRHCSpace = false; } } else { x.InsertIfNoRHCSpace = false; } if('MinHeight' in x) { x.MinHeight = parseInt(x.MinHeight.toString()); } else { x.MinHeight = 0; } if('NoBackfill' in x) { if(x.NoBackfill.toString().toLowerCase() == 'true') { x.NoBackfill = true; } else { x.NoBackfill = false; } } else { x.NoBackfill = false; } if('Refresh' in x) { if(x.Refresh.toString().toLowerCase() == 'true') { x.Refresh = true; } else { x.Refresh = false; } } else { x.Refresh = false; } if('ExtraHTML' in x) { if(x.ExtraHTML.toString()) { x.ExtraHTML = x.ExtraHTML.toString(); } else { x.ExtraHTML = ''; } } else { x.ExtraHTML = ''; } if('CustomEventName' in x) { if(x.CustomEventName.toString()) { x.CustomEventName = x.CustomEventName.toString(); } else { x.CustomEventName = ''; } } else { x.CustomEventName = ''; } if('Javascript' in x) { if(x.Javascript) { if(typeof x.Javascript === 'function') { x.Javascript = x.Javascript; } } else { x.Javascript = ''; } } else { x.Javascript = ''; } if('AdUnit' in x) { if(x.AdUnit.toString()) { x.AdUnit = x.AdUnit.toString(); } else { x.AdUnit = ''; } } else { x.AdUnit = ''; } if('AdUnitSizesInlineMobile' in x) { x.AdUnitSizesInlineMobile = x.AdUnitSizesInlineMobile; } else if('GAMAdUnitSizesInlineMobileDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineMobile = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineMobileDefault } if('AdUnitSizesInlineDesktop' in x) { x.AdUnitSizesInlineDesktop = x.AdUnitSizesInlineDesktop; } else if('GAMAdUnitSizesInlineDesktopDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesInlineDesktop = EnhancedAdvertisingConfig.GAMAdUnitSizesInlineDesktopDefault; } if('AdUnitSizesRHC' in x) { x.AdUnitSizesRHC = x.AdUnitSizesRHC; } else if('GAMAdUnitSizesRHCDefault' in EnhancedAdvertisingConfig) { x.AdUnitSizesRHC = EnhancedAdvertisingConfig.GAMAdUnitSizesRHCDefault; } if('RefreshDelaySeconds' in x) { x.RefreshDelaySeconds = parseInt(x.RefreshDelaySeconds.toString(), 10); } else { x.RefreshDelaySeconds = 30; } return x; }); var storyInlineContent = EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "inline" || ((!isDesktopResolution || isStoryFullLayout) && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddInlineGroups.indexOf(subel) != -1 || allAddInlineGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveInlineGroups.indexOf(subel) != -1 || allRemoveInlineGroups.indexOf('[all]') != -1; }); }); var storyRHCContent = isDesktopResolution ? EnhancedAdvertisingConfig.Slots.filter(function(el) { return el && (el.Position.toLowerCase() == "right" || (isDesktopResolution && !isStoryFullLayout && el.Position.toLowerCase() == "preferright")) && (el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allAddRHCGroups.indexOf(subel) != -1 || allAddRHCGroups.indexOf('[all]') != -1; }) && !(el.Group || "").split(',').filter(function(subel) { return subel && subel != undefined; }).map(function(subel) { return subel.toLowerCase(); }).some(function(subel) { return allRemoveRHCGroups.indexOf(subel) != -1 || allRemoveRHCGroups.indexOf('[all]') != -1; }); }) : []; storyInlineContent.forEach( (c, ix) => c.inlineIndex = ix ); storyRHCContent.forEach( (c, ix) => c.rhcIndex = ix ); var googletag = w.googletag || {}; googletag.cmd = googletag.cmd || []; if( isNumberPositive(maxInlineSlots) ){ //PWVD-781 for(var tmpCounter = 0, i = 0, eL = storyCustomContentPlaceholders.length, adThresholdCounter = 1; i < eL; i++) { var currentIsPara = matches(storyCustomContentPlaceholders[i], 'p:not([class])'); var nextIsPara = (i + 1 < eL) && matches(storyCustomContentPlaceholders[i + 1], 'p:not([class])'); if( currentIsPara && !nextIsPara ){ //PWVD-897 - count paragraphs followed by any other element if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } } else if( currentIsPara && nextIsPara ) { if(adThresholdCounter < (tmpCounter == 0 ? paragraphFirstThreshold : paragraphThreshold)) { adThresholdCounter++; continue; } tmpCounter++; adThresholdCounter = 1; storyCustomContentPlaceholders[i].outerHTML = storyCustomContentPlaceholders[i].outerHTML + "<div class=\"story-inlinecontent-placeholder story-inlinecontent-placeholder-init item-notin-viewport\" data-storyinlinecontainer=\"" + tmpCounter + "\"><div class=\"story-inlinecontent-placeholder-inner\" data-id=\"story-inline-item-" + tmpCounter + "\" data-storyinlineitem=\"" + tmpCounter + "\"></div></div>"; if(tmpCounter >= maxInlineSlots && maxInlineSlots) break; } } } if(d.querySelector('#story.enhanced-advertising:not(.story-full-layout) #rightcolumn_sleeve')) { if(!(d.body.id == "story" || d.body.id == "story_custom") && !d.querySelector('.storytext div.table-full:not(.initialized)')) { w.addEventListener("abacus:storytexttablefull:finished", function(e) { adjustRHCHeightAndInitialAds(); }, true); } else { adjustRHCHeightAndInitialAds(); } } if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').forEach(function(el) { if(el) { var inlineAdsObserver = new IntersectionObserver(function(entries) { return inlineAdsObserverCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); inlineAdsObserver.observe(el); } }); var inlineAdsObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); }; d.querySelectorAll('.storytext-end, #rhcreflow-extra-end').forEach(function(el) { if(el) { var adsInViewportObserver = new IntersectionObserver(function(entries) { return adsInViewportObserverCallback(entries); }, { root: null, rootMargin: "0px 0px 200px 0px", threshold: [1] }); adsInViewportObserver.observe(el); } }); var adsInViewportObserverCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { if(entry.target.classList.contains('storytext-end') && d.body.classList.contains('enhanced-advertising-inline-init')) { d.body.classList.add('enhanced-advertising-storytext-endreached'); } // RHC is empty at load time so it always fires as in viewport, need to check whether rhc ads slots already init if(entry.target.classList.contains('rhcreflow-extra-end') && d.body.classList.contains('enhanced-advertising-rhc-init')) { d.body.classList.add('enhanced-advertising-rhc-endreached'); } /* if(entry.target.id === 'rhcreflow-extra'){ //Fix for issue when RHC is not in initial viewport if( location.host.indexOf('abasoftaws.co.uk') > 0 ) console.log('New observer callback'); readjusRHCHeight(); } */ } }); }; } var inlineEl = d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-completed):not(.story-inlinecontent-placeholder-processing)'); if(inlineEl) { googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { d.body.classList.add('enhanced-advertising-inline-init'); insertInlineSlot(inlineEl); console.log('Init inline ad slot load'); }); } function slotRender(event){ var el, slot = event.slot, slotId = slot.getSlotElementId(); if(enhAdDebug) console.log('Slot render: ' + slotId); if(slotId == 'custom-inline'){ el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.dataId}"]`); //Get inline slot (does not have ID) //if(!el) // el = document.querySelector(`div.story-inlinecontent-placeholder-inner[data-id="story-inline-item-${event.inlineIndex+1}"]`); } else el = d.getElementById(slotId); if(el) { var minHeight = 0; var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { var classList = el.classList; if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad'); var index = parseInt(parentInlineNode.hasAttribute('data-index') ? parentInlineNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad'); classList.add('mob-ad-50'); classList.add('ad-story-inline'); classList.add('ad-story-inline-notempty'); parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-size-' + event.size.join('x')); parentInlineNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; if(currentInlineSlot[0].Repeat == false) { currentInlineSlot[0].Used = true; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentInlineNode.classList.add('story-inlinecontent-placeholder-finished'); insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } else { classList.add('ad-story-inline-isempty'); var currentInlineSlot = storyInlineContent.filter(function(e) { return e.Index == index; }); if(currentInlineSlot.length) { minHeight = currentInlineSlot[0].MinHeight; currentInlineSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentInlineNode && parentInlineNode.hasAttribute('data-nobackfill')) { if(parentInlineNode.getAttribute('data-nobackfill') == '1') { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); if(!storyInlineContent.some(function(el) { return el.Used == false; })) { finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } else { insertInlineSlot(d.querySelector('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)')); } initRHCHeightCalc(); return; } } // Move to next from the list if( storyInlineContent.some( function(e){ return e.Used == false; } ) ) { if(enhAdDebug) console.log('slotRender: parentInlineNode: Move to next from the list') var adRetryCssClass = 'ad-story-inline-retry'; var nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Index > index && e.Used == false; }); if(!nextInlineSlotList.length) { // select repeatable ads nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextInlineSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextInlineSlotList = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextInlineSlotList.length) { // no more ads to add d.body.classList.add('enhanced-advertising-inline-runoutofslots'); finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); initRHCHeightCalc(); return; } } } var mapInlineAdItem = nextInlineSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } if(mapInlineAdItem.Repeat) { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-false'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-true'); } else { parentInlineNode.classList.remove('story-inlinecontent-placeholder-repeat-true'); parentInlineNode.classList.add('story-inlinecontent-placeholder-repeat-false'); } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } googletag.display(slotId); el.classList.add(adRetryCssClass); parentInlineNode.setAttribute('data-index', mapInlineAdItem.Index); if(mapInlineAdItem.ExtraHTML) { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapInlineAdItem.ExtraHTML; } } else { var extraHTMLEl = parentInlineNode.querySelector('.story-inlinecontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyInlineSlotContainers(parentInlineNode.classList, true); } } } else if(parentRHCNode) { parentRHCNode.classList.add('story-rhccontent-placeholder-ad'); var index = parseInt(parentRHCNode.hasAttribute('data-index') ? parentRHCNode.getAttribute('data-index') : '0', 10); if(!event.isEmpty) { classList.add('ad-rhc'); classList.add('ad-story-rhc'); classList.add('ad-story-rhc-notempty'); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-size-' + event.size.join('x')); parentRHCNode.setAttribute('data-slot', slot.getAdUnitPath()); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { minHeight = currentRHCSlot[0].MinHeight; if(currentRHCSlot[0].Repeat == false) { currentRHCSlot[0].Used = true; } if(currentRHCSlot[0].InsertIfNoRHCSpace) { currentRHCSlot[0].InsertIfNoRHCSpace = false; } } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } parentRHCNode.classList.remove('story-rhccontent-placeholder-isempty'); parentRHCNode.classList.remove('story-rhccontent-placeholder-notempty'); parentRHCNode.classList.add((event.isEmpty ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); parentRHCNode.classList.add('story-rhccontent-placeholder-ad-completed'); parentRHCNode.classList.add('story-rhccontent-placeholder-finished'); var canAddRHC = isStoryTextTallerThanRHC(); if( ( index > 0 && !d.body.classList.contains('enhanced-advertising-inline-completed') && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') ) || ( canAddRHC.canAdd && parentRHCNode.classList.contains('story-rhccontent-placeholder-canbesticky') && canAddRHC.delta > EnhancedAdvertisingConfig.RHCMinHeightForStickyAd ) ){ parentRHCNode.classList.remove('story-rhccontent-placeholder-canbesticky'); parentRHCNode.classList.add('story-rhccontent-placeholder-sticky'); } } else { classList.add('ad-story-rhc-isempty'); var currentRHCSlot = storyRHCContent.filter(function(e) { return e.Index == index; }); if(currentRHCSlot.length) { currentRHCSlot[0].Used = true; } else { console.log('Slot with index [data-index="' + index + '"] was not found'); } if(parentRHCNode && parentRHCNode.hasAttribute('data-nobackfill')) { if(parentRHCNode.getAttribute('data-nobackfill') == '1') { updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); if(!storyRHCContent.some(function(el) { return el.Used == false; })) { d.body.classList.add('enhanced-advertising-rhc-runoutofslots'); finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, true); } initRHCHeightCalc(); return; } } // Move to next from the list if(enhAdDebug){ console.log('slotRender: parentRHCNode: storyRHCContent: index: ' + index); console.log(storyRHCContent); } if(storyRHCContent.some(function(e) { return e.Used == false; })) { var adRetryCssClass = 'ad-story-rhc-retry'; var nextRHCSlotList = storyRHCContent.filter(function(e) { if(enhAdDebug) console.log('%c Current index: ' + e.Index + ', slot data index: ' + index, 'color: #0C6') return e.Index > index && e.Used == false; }); if(enhAdDebug){ console.log('%c slotRender: parentRHCNode: Moved to next from the list', 'color: #06C'); console.log(nextRHCSlotList); } if(!nextRHCSlotList.length) { // select repeatable ads nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Index > index && e.Repeat == true; }); if(!nextRHCSlotList.length) { // if no repeatable ads by indexed order then start from the beginning or just pick any existing nextRHCSlotList = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!nextRHCSlotList.length) { // no more ads to add finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); initRHCHeightCalc(); return; } } } var mapRHCAdItem = nextRHCSlotList[0]; var refresh = EnhancedAdvertisingConfig.Refresh; googletag.destroySlots([slot]); if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } if(mapRHCAdItem.Repeat) { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-false'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-true'); } else { parentRHCNode.classList.remove('story-rhccontent-placeholder-repeat-true'); parentRHCNode.classList.add('story-rhccontent-placeholder-repeat-false'); } if(mapRHCAdItem.Type == 'customcontent'){ //Custom content (RSCCS-540) if(enhAdDebug) console.log('Next RHC config item is custom content'); adjustRHCHeightAndInitialAds(); } else if(mapRHCAdItem.AdUnit){ //Google ad var mapInlineAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile, slotId); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping( googletag.sizeMapping().build() ).setTargeting( 'refresh', (refresh ? 'true' : 'false') ).setTargeting( 'refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile) ).setCollapseEmptyDiv( EnhancedAdvertisingConfig.CollapseEmptyDivs, false ).addService( googletag.pubads() ); } else { console.warn('SlotRender: Something wrong with RHC ad slot \'' + slotId + '\', size(s) \'' + (isDesktopResolution ? mapRHCAdItem.AdUnitSizesInlineDesktop : mapRHCAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } googletag.display(slotId); } el.classList.add(adRetryCssClass); parentRHCNode.setAttribute('data-index', mapRHCAdItem.Index); if(mapRHCAdItem.ExtraHTML) { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = mapRHCAdItem.ExtraHTML; } } else { var extraHTMLEl = parentRHCNode.querySelector('.story-rhccontent-placeholder-ad-extrahtml'); if(extraHTMLEl) { extraHTMLEl.innerHTML = ''; } } } else { // no slots to add.. finalizeRemainingEmptyRHCSlotContainers(parentRHCNode.classList, false); } } } if(parentInlineNode) { updateInlinePlaceholderClasses(parentInlineNode, event.isEmpty, minHeight); } else { //updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty, minHeight); updateRHCPlaceholderClasses(parentRHCNode, event.isEmpty); } } } initRHCHeightCalc(); } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRequested', function(event) { var slot = event.slot; var el = d.getElementById(slot.getSlotElementId()); if(el) { var parentInlineNode = getClosestParent(el, '.story-inlinecontent-placeholder'); var parentRHCNode = getClosestParent(el, '.story-rhccontent-placeholder'); if(parentInlineNode || parentRHCNode) { if(parentInlineNode) { parentInlineNode.classList.add('story-inlinecontent-placeholder-ad-init'); } else { parentRHCNode.classList.add('story-rhccontent-placeholder-ad-init'); } } } }); googletag.pubads().addEventListener('slotRenderEnded', function(event) { var sId = event.slot.getSlotElementId(); if( enhAdDebug && sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot RENDER END (${sId})`, 'color: #FE2ACA'); console.log(event); //loadOrRender(sId, 'render', event); } slotRender(event); }); if(enhAdDebug){ //Track slot load events googletag.pubads().addEventListener('slotOnload', (evLoad) => { var sId = evLoad.slot.getSlotElementId(); if( sId.includes('story-rhcad') || sId.includes('story-inlinead') ){ console.log(`%c Slot LOAD (${ evLoad.slot.getSlotElementId() })`, 'color: #C00;'); console.log(event); //loadOrRender(sId, 'load'); } }); } googletag.pubads().addEventListener('slotVisibilityChanged', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1 && event.inViewPercentage > 0) { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode || parentStoryRHCNode) { if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = inlineEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-inline-refreshed'); inlineEl.setAttribute('data-shouldrefresh', '0'); } } } } else { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.hasAttribute('data-shouldrefresh')) { var shouldRefresh = rhcEl.getAttribute('data-shouldrefresh'); if(shouldRefresh && shouldRefresh == '1') { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); classList.add('ad-story-rhc-refreshed'); rhcEl.setAttribute('data-shouldrefresh', '0'); } } } } } } }); googletag.pubads().addEventListener('impressionViewable', function(event) { var slot = event.slot; if(slot.getTargeting('refresh').indexOf('true') > -1) { var refreshdelayseconds = slot.getTargeting('refreshdelayseconds').length ? parseInt(slot.getTargeting('refreshdelayseconds')[0], 10) : 0; if(refreshdelayseconds) { setTimeout(function() { var el = d.getElementById(slot.getSlotElementId()); var parentStoryInlineNode = getClosestParent(el, '.ad-story-inline'); var parentStoryRHCNode = getClosestParent(el, '.ad-story-rhc'); if(parentStoryInlineNode) { var inlineEl = getClosestParent(el, '.story-inlinecontent-placeholder'); if(inlineEl) { if(inlineEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryInlineNode.classList; var cssClassName = 'ad-story-inline-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryInlineNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); inlineEl.setAttribute('data-shouldrefresh', '0'); } else { inlineEl.setAttribute('data-shouldrefresh', '1'); } } } else if(parentStoryRHCNode) { var rhcEl = getClosestParent(el, '.story-rhccontent-placeholder'); if(rhcEl) { if(rhcEl.classList.contains('item-in-viewport')) { googletag.cmd.push(function() { googletag.pubads().refresh([slot], { changeCorrelator: false }); }); var classList = parentStoryRHCNode.classList; var cssClassName = 'ad-story-rhc-refreshed-'; var cssClassCounter = 1; for(var i = 0, c = parentStoryRHCNode.className.split(' '), iL = c.length; i < iL; i++) { var v = c[i]; if(v.indexOf(cssClassName) != -1) { cssClassCounter = parseInt(v.split(cssClassName).join(''), 10) + 1; classList.remove(v); break; } } classList.add(cssClassName + cssClassCounter); rhcEl.setAttribute('data-shouldrefresh', '0'); } else { rhcEl.setAttribute('data-shouldrefresh', '1'); } } } }, refreshdelayseconds * 1000); } else { console.log('Ad refresh delay in seconds is incorrect (slot: ' + slot.getSlotElementId() + '): ', refreshdelayseconds); } } }); }); function isBoolean(n) { return !!n === n; } function isNumber(n) { return +n === n; } function isString(n) { return '' + n === n; } function isNumberPositive(n) { return +n === n && n > 0; } function isNumberPositiveOrZero(n) { return +n === n && n >= 0; } function isArrayOfArrays(a) { return a.every(function(x) { return Array.isArray(x); }); } function getAbsoluteHeight(element) { if(!element) return 0; var styles = w.getComputedStyle(element); var margin = parseFloat(styles['margin-top']) + parseFloat(styles['margin-bottom']); var minHeight = element.clientHeight; return Math.ceil(minHeight ? minHeight + margin : element.offsetHeight + margin); } function updateRHCContainerState() { var classList = d.body.classList; if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed').length) { d.body.classList.add('enhanced-advertising-rhc-empty'); } else { d.body.classList.remove('enhanced-advertising-rhc-empty'); } } function insertRHCSlot(el) { if(el) { el.classList.add('story-rhccontent-placeholder-processing'); } if(el && storyRHCContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredRHCAds = storyRHCContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredRHCAds = storyRHCContent.filter(function(e) { return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { tempFilteredRHCAds = storyRHCContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); } if(!tempFilteredRHCAds.length) { finalizeRemainingEmptyRHCSlotContainers(classList, false); return; } var mapRHCAdItem = tempFilteredRHCAds[0]; classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); if(mapRHCAdItem.CSSClass) { mapRHCAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapRHCAdItem.Type == 'gamadvert') { if(placeholder) { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); if(mapRHCAdItem.Sticky) { classList.add('story-rhccontent-placeholder-canbesticky'); placeholder.classList.add('sticky'); } if(mapRHCAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapRHCAdItem.Refresh) { refresh = mapRHCAdItem.Refresh; } var mapRHCAdItemSlot = googletag.defineSlot(mapRHCAdItem.AdUnit, mapRHCAdItem.AdUnitSizesRHC, 'story-rhcad-' + rhcAdCounter); if(mapRHCAdItemSlot) { mapRHCAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapRHCAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with rhc ad slot \'' + 'story-rhcad-' + rhcAdCounter + '\', size(s) \'' + mapRHCAdItem.AdUnitSizesRHC.join('x') + '\', path \'' + mapRHCAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-rhccontent-placeholder-refresh-true'); } else { classList.add('story-rhccontent-placeholder-refresh-false'); } classList.add('story-rhccontent-placeholder-ad'); placeholder.id = 'story-rhcad-' + rhcAdCounter; placeholder.outerHTML = '<div class="story-rhccontent-placeholder-ad-extrahtml">' + mapRHCAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapRHCAdItem.AdUnit); googletag.display('story-rhcad-' + rhcAdCounter); $(w).trigger("wvcfe:storyrhcaditeminit", [$(el), $(placeholder), mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcAdCounter, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } rhcAdCounter++; } } else if(mapRHCAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); classList.add('story-rhccontent-placeholder-customcontent'); if(placeholder) { placeholder.innerHTML = mapRHCAdItem.HTML; classList.add('story-rhccontent-placeholder-notempty'); $(w).trigger("wvcfe:storyrhcitemajaxinit", [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); if(mapRHCAdItem.CustomEventName) { $(w).trigger(mapRHCAdItem.CustomEventName, [$(el), $(placeholder), mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type]); } if(mapRHCAdItem.Javascript) { if(typeof mapRHCAdItem.Javascript === 'function') { mapRHCAdItem.Javascript.call(this, el, placeholder, mapRHCAdItem, rhcCounter, false, 'rhc', mapRHCAdItem.Type); } } el.classList.add('story-rhccontent-placeholder-finished'); } } el.setAttribute('data-index', mapRHCAdItem.Index); rhcCounter++; } else { console.log('Missing placeholder: [data-id="story-rhc-item-' + rhcCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyRHCSlotContainers(classList, false); } else { console.log('Missing RHC element'); } } function insertInlineSlot(el) { if(el) { el.classList.add('story-inlinecontent-placeholder-processing'); } if(el && storyInlineContent.some(function(e) { return e.Used == false; })) { var classList = el.classList; var placeholder = el.querySelector('[data-id]'); var tempFilteredInlineAds = storyInlineContent; if(placeholder) { var elemsIndexes = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; tempFilteredInlineAds = storyInlineContent.filter(function(e){ return slotIndex < e.Index && e.Used == false; }); if(!tempFilteredInlineAds.length) { tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && slotIndex < e.Index && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { // start from the first repeatable ad index tempFilteredInlineAds = storyInlineContent.filter(function(e) { return e.Used == false && e.Repeat == true; }); if(!tempFilteredInlineAds.length) { finalizeRemainingEmptyInlineSlotContainers(classList, true); return; } } } var mapInlineAdItem = tempFilteredInlineAds[0]; classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); if(mapInlineAdItem.CSSClass) { mapInlineAdItem.CSSClass.split(' ').forEach(function(elem) { if(elem) { classList.add(elem); } }); } if(mapInlineAdItem.Type == 'gamadvert') { var refresh = EnhancedAdvertisingConfig.Refresh; el.setAttribute('data-storycustomcontent', '0'); el.classList.add('story-inlinecontent-placeholder-ad'); if(mapInlineAdItem.Sticky) { classList.add('story-inlinecontent-placeholder-sticky'); placeholder.classList.add('sticky'); } if(mapInlineAdItem.NoBackfill) { el.setAttribute('data-nobackfill', '1'); } else { el.setAttribute('data-nobackfill', '0'); } if(mapInlineAdItem.Repeat) { classList.add('story-inlinecontent-placeholder-repeat-true'); } else { classList.add('story-inlinecontent-placeholder-repeat-false'); } if(mapInlineAdItem.Refresh) { refresh = mapInlineAdItem.Refresh; } var mapInlineAdItemSlot = googletag.defineSlot(mapInlineAdItem.AdUnit, isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile, 'story-inlinead-' + inlineAdCounter); if(mapInlineAdItemSlot) { mapInlineAdItemSlot.defineSizeMapping(googletag.sizeMapping().build()).setTargeting('refresh', (refresh ? 'true' : 'false')).setTargeting('refreshdelayseconds', mapInlineAdItem.RefreshDelaySeconds || (isDesktopResolution ? EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultDesktop : EnhancedAdvertisingConfig.RefreshDelaySecondsDefaultMobile)).setCollapseEmptyDiv(EnhancedAdvertisingConfig.CollapseEmptyDivs, false).addService(googletag.pubads()); } else { console.warn('Something wrong with inline ad slot \'' + 'story-inlinead-' + inlineAdCounter + '\', size(s) \'' + (isDesktopResolution ? mapInlineAdItem.AdUnitSizesInlineDesktop : mapInlineAdItem.AdUnitSizesInlineMobile).join('x') + '\', path \'' + mapInlineAdItem.AdUnit + '\''); } if(refresh) { el.setAttribute('data-shouldrefresh', '0'); classList.add('story-inlinecontent-placeholder-refresh-true'); } else { classList.add('story-inlinecontent-placeholder-refresh-false'); } placeholder.id = 'story-inlinead-' + inlineAdCounter; placeholder.outerHTML = '<div class="story-inlinecontent-placeholder-ad-extrahtml">' + mapInlineAdItem.ExtraHTML + '</div>' + placeholder.outerHTML; el.setAttribute('data-slot', mapInlineAdItem.AdUnit); googletag.display('story-inlinead-' + inlineAdCounter); $(w).trigger("wvcfe:storyinlineaditeminit", [$(el), $(placeholder), mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineAdCounter, inlineCounter, false, 'inline', mapInlineAdItem.Type); } } inlineAdCounter++; } else if(mapInlineAdItem.Type == 'customcontent') { el.setAttribute('data-storycustomcontent', '1'); el.classList.add('story-inlinecontent-placeholder-customcontent'); placeholder.innerHTML = mapInlineAdItem.HTML; $(w).trigger("wvcfe:storyinlineitemajaxinit", [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); if(mapInlineAdItem.CustomEventName) { $(w).trigger(mapInlineAdItem.CustomEventName, [$(el), $(placeholder), mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type]); } if(mapInlineAdItem.Javascript) { if(typeof mapInlineAdItem.Javascript === 'function') { mapInlineAdItem.Javascript.call(this, el, placeholder, mapInlineAdItem, inlineCounter, false, 'inline', mapInlineAdItem.Type.toLowerCase()); } } el.classList.add('story-inlinecontent-placeholder-finished'); var inlineCustomEvent = { dataId: (mapInlineAdItem.Index+1), slot: { getSlotElementId: function(){ return 'custom-inline'; }, getAdUnitPath: function(){return 'custom-inline'} }, isEmpty: false, size:[0,0] }; el.setAttribute('data-index', mapInlineAdItem.Index); slotRender(inlineCustomEvent); //$(w).trigger('abacus:inlinecontentrender', inlineCustomEvent); } el.setAttribute('data-index', mapInlineAdItem.Index); //el.setAttribute('data-index', inlineCounter); inlineCounter++; } else { console.log('Missing placeholder: [data-id="story-inline-item-' + inlineCounter + '"]'); } } else if(el) { // All slots are used, mark current slot placeholder and the rest ones as completed and used var classList = el.classList; finalizeRemainingEmptyInlineSlotContainers(classList, true); } else { console.log('Missing inline element'); } } function finalizeRemainingEmptyRHCSlotContainers(classList, processremaining) { classList.remove('story-rhccontent-placeholder-init'); classList.remove('story-rhccontent-placeholder-processing'); classList.add('story-rhccontent-placeholder-completed'); classList.add('story-rhccontent-placeholder-isempty'); classList.add('story-rhccontent-placeholder-runoutofslots'); classList.add('story-rhccontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-rhccontent-placeholder-init'); c.add('story-rhccontent-placeholder-completed'); c.add('story-rhccontent-placeholder-isempty'); c.add('story-rhccontent-placeholder-runoutofslots'); c.add('story-rhccontent-placeholder-finished'); } } } } function finalizeRemainingEmptyInlineSlotContainers(classList, processremaining) { classList.remove('story-inlinecontent-placeholder-init'); classList.remove('story-inlinecontent-placeholder-processing'); classList.add('story-inlinecontent-placeholder-completed'); classList.add('story-inlinecontent-placeholder-isempty'); classList.add('story-inlinecontent-placeholder-runoutofslots'); classList.add('story-inlinecontent-placeholder-finished'); if(processremaining) { for(var i = 0, elems = d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-placeholder-processing)'), iL = elems.length; i < iL; i++) { var e = elems[i]; if(e) { var c = e.classList; c.remove('story-inlinecontent-placeholder-init'); c.add('story-inlinecontent-placeholder-completed'); c.add('story-inlinecontent-placeholder-isempty'); c.add('story-inlinecontent-placeholder-runoutofslots'); c.add('story-inlinecontent-placeholder-finished'); } } } } function updateInlinePlaceholderClasses(node, status, minHeight) { node.classList.remove('story-inlinecontent-placeholder-isempty'); node.classList.remove('story-inlinecontent-placeholder-notempty'); node.classList.add((status ? 'story-inlinecontent-placeholder-isempty' : 'story-inlinecontent-placeholder-notempty')); node.classList.add('story-inlinecontent-placeholder-ad-completed'); if(!status) { var computedMinHeightValue = w.getComputedStyle(node).minHeight || 0; var computedMinHeight = parseInt(computedMinHeightValue, 10); if(minHeight > computedMinHeight) { node.style.minHeight = minHeight + 'px'; } } } function updateRHCPlaceholderClasses(node, status) { node.classList.remove('story-rhccontent-placeholder-ad-init'); node.classList.remove('story-rhccontent-placeholder-isempty'); node.classList.remove('story-rhccontent-placeholder-notempty'); node.classList.add((status ? 'story-rhccontent-placeholder-isempty' : 'story-rhccontent-placeholder-notempty')); node.classList.add('story-rhccontent-placeholder-ad-completed'); } function initRHCHeightCalc() { updateRHCFirstandLastItemStyles(); // readjust height if no in progress/loading ads as the height might change on storytext or RHC if(!d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder.story-rhccontent-placeholder-completed.story-rhccontent-placeholder-ad-init').length) { readjusRHCHeight(); } else { setTimeout(function() { initRHCHeightCalc(); }, 0); } } function isInViewport(element) { var rect = element.getBoundingClientRect(); var height = w.innerHeight || d.documentElement.clientHeight; var width = w.innerWidth || d.documentElement.clientWidth; return ( rect.right >= 0 && rect.bottom >= 0 && rect.left <= width && rect.top <= height ); } function processElementsInViewport() { var adsInlinePlaceholders = d.querySelectorAll('.storytext .story-inlinecontent-placeholder'); //PWVD-893 : change from rhccontent var adsRHCPlaceholders = d.querySelectorAll('#rhcreflow-extra .story-rhccontent-placeholder'); if(adsInlinePlaceholders || adsRHCPlaceholders) { if(adsInlinePlaceholders) { adsInlinePlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-inlinecontent-placeholder-isinviewport'); classList.add('story-inlinecontent-placeholder-isnotinviewport'); } else { classList.remove('story-inlinecontent-placeholder-isnotinviewport'); classList.add('story-inlinecontent-placeholder-isinviewport'); } }); } else { adsRHCPlaceholders.forEach(function(el) { var classList = el.classList; if(!isInViewport(el)) { classList.remove('story-rhccontent-placeholder-isinviewport'); classList.add('story-rhccontent-placeholder-isnotinviewport'); } else { classList.remove('story-rhccontent-placeholder-isnotinviewport'); classList.add('story-rhccontent-placeholder-isinviewport'); } }); } } } function adjustRHCHeightAndInitialAds() { var output = []; var googletag = w.googletag || {}; var rhcreflowExtra = d.querySelector('#rhcreflow-extra'); if(rhcreflowExtra) { rhcreflowExtra.innerHTML = ''; minRHCSlotsToFitIn = (minRHCSlots > 0 ? minRHCSlots : 2); maxRHCSlotsToFitIn = (maxRHCSlots > 0 ? maxRHCSlots : 0); for(var i = 0, iL = Math.max(storyRHCContent.length, maxRHCSlotsToFitIn); i < iL; i++) { rhcCounter = i + 1; output.push("<div class=\"story-rhccontent-placeholder story-rhccontent-placeholder-init item-notin-viewport\" data-storyrhccontainer=\"" + rhcCounter + "\"><div class=\"story-rhccontent-placeholder-inner\" data-id=\"story-rhc-item-" + rhcCounter + "\" data-storyrhcitem=\"" + rhcCounter + "\"></div></div>"); if(rhcCounter >= maxRHCSlotsToFitIn) break; } d.querySelector('#rhcreflow-extra').innerHTML = output.join(''); if('IntersectionObserver' in w && 'IntersectionObserverEntry' in w && 'intersectionRatio' in w.IntersectionObserverEntry.prototype) { d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-init').forEach(function(el) { if(el) { observer = new IntersectionObserver(function(entries) { return observerCallback(entries); }, { root: null, rootMargin: "50px 0px 50px 0px", threshold: [0, 0.01, 0.99, 1] }); observer.observe(el); } }); var observerCallback = function(entries) { return entries.forEach(function(entry, i) { if(entry.isIntersecting) { entry.target.classList.remove('item-notin-viewport'); entry.target.classList.add('item-in-viewport'); } else { entry.target.classList.remove('item-in-viewport'); entry.target.classList.add('item-notin-viewport'); } }); } } googletag.cmd = googletag.cmd || []; googletag.cmd.push(function() { var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var hasAnyRHCLoadedBefore = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); if(rhcEl && !hasAnyRHCLoadedBefore.length) { insertRHCSlot(rhcEl); d.body.classList.add('enhanced-advertising-rhc-init'); } }); updateRHCContainerState(); } } function isStoryTextTallerThanRHC() { var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, colmain = d.getElementById('colmain').clientHeight; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); return { "canAdd": colmain > calcHeight, "delta": colmain - calcHeight }; } else { return { "canAdd": false, "delta": 0 }; } } function canAddRHCItem() { // check whether inline and RHC ads finished loading, otherwise ignore var storyRHCSlotHeight = EnhancedAdvertisingConfig.RHCMinHeightForSlotInsert; var calcHeight = 0; if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { var h = 0, innerChild = 0; d.querySelectorAll('#rightcolumn_sleeve > *:not(#rhcreflow-extra)').forEach(function(item) { h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); d.querySelectorAll('#rhcreflow-extra > *').forEach(function(item) { //innerChild = (item || item.querySelector('.story-rhccontent-placeholder-inner') || item.firstChild); //h = getAbsoluteHeight(innerChild); //if (h == 0) { // h = getAbsoluteHeight(item); //} h = getAbsoluteHeight(item); item.setAttribute('data-height', h); calcHeight += h; }); var result = { "canAddRHCItem": d.getElementById('colmain').clientHeight > calcHeight + storyRHCSlotHeight, "colmainTaller": d.getElementById('colmain').clientHeight > calcHeight }; return result; } else { return { "canAddRHCItem": false, "colmainTaller": false }; } } function readjusRHCHeight() { if(w.matchMedia("screen and (min-width: 1023px)").matches && !d.body.classList.contains('story-full-layout')) { d.getElementById('rightcolumn_sleeve').style.minHeight = d.getElementById('colmain').clientHeight + 'px'; } var elemsIndexes = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed[data-index]'); var slotIndex = elemsIndexes.length ? parseInt(elemsIndexes[elemsIndexes.length - 1].getAttribute('data-index'), 10) : -1; var rhcEl = d.querySelector('.story-rhccontent-placeholder.story-rhccontent-placeholder-init:not(.story-rhccontent-placeholder-completed):not(.story-rhccontent-placeholder-processing)'); var canAdd = canAddRHCItem(); var hasInsertIfNoRHCSpace = storyRHCContent.some(function(e) { return e.InsertIfNoRHCSpace == true && e.Used == false && e.Index > slotIndex; }); if(!rhcEl || (!canAdd.canAddRHCItem && !hasInsertIfNoRHCSpace && !d.querySelectorAll('.story-inlinecontent-placeholder.story-inlinecontent-placeholder-init:not(.story-inlinecontent-processing)').length)) { d.body.classList.add('enhanced-advertising-rhc-completed'); } else { d.body.classList.remove('enhanced-advertising-rhc-completed'); } //var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished)'); var rhcElementsInitialised = d.querySelectorAll('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-finished):not(.story-rhccontent-placeholder-isempty)'); //var rhcElemInit = $('.story-rhccontent-placeholder.story-rhccontent-placeholder-completed'); //PWVD-749 //var classesToExclude = ['init', 'processing', 'finished'].map( cls => '.story-rhccontent-placeholder-' + cls); //, 'isempty' //rhcElemInit = rhcElemInit.find( classesToExclude.join(',') ).remove(); if(rhcEl && (canAdd.canAddRHCItem || hasInsertIfNoRHCSpace) && rhcElementsInitialised.length == 0) { googletag.cmd.push(function() { insertRHCSlot(rhcEl); }); } } function updateRHCFirstandLastItemStyles() { d.querySelectorAll('#rhcreflow-extra > *:not(.story-rhccontent-placeholder-init):not(.story-rhccontent-placeholder-processing):not(.story-rhccontent-placeholder-isempty)').forEach(function(item, index, data) { item.classList.remove('story-rhccontent-placeholder-first'); item.classList.remove('story-rhccontent-placeholder-last'); if(index == 0) { item.classList.add('story-rhccontent-placeholder-first'); } if(index == data.length - 1) { item.classList.add('story-rhccontent-placeholder-last'); } }); if((d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-completed').length == d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-finished').length) && !d.querySelectorAll('.storytext .story-inlinecontent-placeholder.story-inlinecontent-placeholder-init').length) { d.body.classList.add('enhanced-advertising-inline-completed'); } else { d.body.classList.remove('enhanced-advertising-inline-completed'); } } w.addEventListener('scroll', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener('resize', function(e) { if(!ticking) { w.requestAnimationFrame(function() { processElementsInViewport(); readjusRHCHeight(); ticking = false; }); ticking = true; } }, true); w.addEventListener("abacus:loadcontent:complete", function(evt, context) { readjusRHCHeight(); }, true); if(d.querySelector('#story .storytext img.lazyload')) { d.addEventListener('lazyloaded', function(e) { if(w.googletag && googletag.apiReady) { if(getClosestParent(e.target, '.storytext')) { readjusRHCHeight(); } } }); } w.addEventListener("abacus:advertb:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:gamadvert:loaded", function(evt, context) { readjusRHCHeight(); }, true); w.addEventListener("abacus:readjusrhcheight", function(evt, context) { readjusRHCHeight(); }, true); //w.addEventListener('abacus:inlinecontentrender', function(customEvent) { // slotRender(customEvent); //}, true); } }); })(window, document); </script> <!-- GOOGLE ANALYTICS IS BEING INCLUDED THROUGH GOOGLE TAG MANAGER --> <!-- Global site tag (gtag.js) - Google Analytics <script async src="https://www.googletagmanager.com/gtag/js?id=UA-2220664-14"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-2220664-14'); gtag('config', 'AW-1034638432'); </script> --> <!-- Abacus Google Tag Manager DO NOT delete --> <script>(function(w,d,s,l,i){ w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:''; j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl; f.parentNode.insertBefore(j,f); } ) (window,document,'script','dataLayer','GTM-MJ3XLK3'); </script> <!-- End Google Tag Manager --> <script data-ad-client="ca-pub-7045852503918369" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> </head> <body id="story" class="M1-master js-disabled story-style-1 story-format-1013 story-type-1097 enhanced-advertising enhanced-advertising-rhc-empty"> <!-- Abacus Google Tag Manager (noscript) DO NOT delete --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MJ3XLK3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!---Railway Gazette Google Tag Manager---> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KGQPK8B" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!--[if lte IE 10]> <link rel="stylesheet" href="/CSS/dest/notsupported.css"> <div class="notSupported"> <div class="sleeve"> <span id="logo" class="vector-icon i-brand-logo i-brand-logo-dims"></span> <h2> Your browser is not supported </h2> <p> Sorry but it looks as if your browser is out of date. To get the best experience using our site we recommend that you upgrade or switch browsers. </p> <p class="buttonContainer"> <a class="button" href="https://www.google.co.uk/webhp?ion=1&espv=2&ie=UTF-8#q=update+my+browser" target="_blank">Find a solution</a> </p> </div> </div> <![endif]--> <script type="text/javascript">document.body.className = document.body.className.replace('js-disabled', ''); document.cookie = "_js=1; path=/";</script> <div id="wrapper"> <ul id="skiplinks"><li><a href="#wrapper_sleeve">Skip to main content</a></li><li><a href="#mainnav">Skip to navigation</a></li></ul> <header id="masthead" class="masthead"> <div class="htmlContent"> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <div id='div-gpt-ad-1602240785818-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602240785818-0'); }); </script> </div> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1602146700128-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602146700128-0'); }); </script> </div>--> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1602173815824-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602173815824-0'); } ); </script> </div> --> <!--wallpaper--> <!-- /13644946/WallpaperV5 --> <!--<div id='div-gpt-ad-1578661320890-0' class="wallpaper-ad" data-site-width-1024> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1578661320890-0'); }); </script></div>--> <!-- /13644946/RGI_Interstitial --> <div id='div-gpt-ad-1663232421348-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1663232421348-0'); }); </script> </div> <!-- /13644946/RGI_Adhesion --> <div id='div-gpt-ad-1725960169073-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1725960169073-0'); }); </script> </div> </div> <!--<div class="leaderboard"> <div class="ad"> <div id='div-gpt-ad-1601973347622-0' class="dt-ad-90 tab-ad-90 mob-ad-50"> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1601973347622-0'); }); </script> </div> </div>--> <div class="mast container full" role="banner" data-multi-toggle-menu> <div class="inner-sleeve" data-menu-open-pushed> <div class="mastheadLogo"> <a href="https://www.railwaygazette.com/"> <span class="logoIcon"> <span class="assistive">Railway Gazette</span> </span> </a> </div> <div id="print_logo"> <img src="/magazine/dest/graphics/logo/print_logo.png" alt="railway gazette logo" /> </div> <div class="mastheadMobileLogo"> <a href="/"> <span class="logoIcon"> <span class="assistive">Railway Gazette</span> </span> </a> </div> <ol class="mast-sharing-icons"> <li><a href="https://facebook.com/railwaygazette" aria-label="Facebook" rel="noopener noreferrer" target="_blank"><svg id="mast-fb-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-fb-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.46,15.46,0,0,1,4.89,5.17L5.06,5A15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" transform="translate(0 0)" fill="#005092"/><path id="mast-fb-share-ring" d="M16,31A15,15,0,1,0,1,16,15.08,15.08,0,0,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" transform="translate(0 0)" fill="#fff"/><path id="mast-fb-share-icon" d="M19.15,16.38H17V24H13.83V16.38h-1.5v-2.7h1.5V11.95a3,3,0,0,1,3.23-3.22h2.32v2.62H17.65c-.3,0-.67.15-.67.75v1.58h2.4Z" transform="translate(0 0)" fill="#fff"/></svg></a></li> <li><a href="https://twitter.com/railwaygazette" aria-label="Twitter" rel="noopener noreferrer" target="_blank"><svg id="mast-twitter-share" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_30_2)"> <path id="mast-tw-share-circle" d="M16 31.1111C24.3456 31.1111 31.1111 24.3456 31.1111 16C31.1111 7.65439 24.3456 0.888916 16 0.888916C7.65436 0.888916 0.888885 7.65439 0.888885 16C0.888885 24.3456 7.65436 31.1111 16 31.1111Z" fill="#005092"/> <path d="M17.5225 14.7749L23.4788 8H22.0671L16.8979 13.8825L12.7643 8H8L14.2468 16.8957L8 24H9.41173L14.8732 17.7876L19.2357 24H24L17.5225 14.7749ZM15.5889 16.9722L14.9539 16.0882L9.92 9.03991H12.088L16.1495 14.7279L16.7821 15.6137L22.0677 23.0076H19.8997L15.5889 16.9722Z" fill="white"/> </g> <defs> <clipPath id="clip0_30_2"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg> </a></li> <li><a href="https://www.linkedin.com/company/railway-gazette-international/" aria-label="LinkedIn" rel="noopener noreferrer" target="_blank"><svg id="mast-linked-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-linked-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-linked-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><g id="mast-linked-share-icon"><path id="mast-linked-share-icon-n" d="M19.07,12.77A2.53,2.53,0,0,0,16.75,14V13H14.13v7.88h2.63V16.45a2.08,2.08,0,0,1,.08-.67,1.5,1.5,0,0,1,1.35-1c1,0,1.35.75,1.35,1.8v4.2h2.63V16.3C22.08,13.9,20.8,12.78,19.07,12.77Z" fill="#fff"/><rect id="mast-linked-share-icon-i" x="10" y="13" width="2.63" height="7.88" fill="#fff"/><path id="mast-linked-share-icon-tittle" d="M11.35,9.18a1.39,1.39,0,0,0-1.5,1.26s0,.06,0,.09a1.36,1.36,0,0,0,1.37,1.35h.05a1.39,1.39,0,0,0,1.5-1.26s0-.06,0-.09a1.32,1.32,0,0,0-1.29-1.35Z" fill="#fff"/></g></svg></a></li> <li><a href="https://www.youtube.com/RailwayGazette" aria-label="YouTube" rel="noopener noreferrer" target="_blank"><svg id="mast-youtube-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-youtube-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-youtube-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><path id="mast-youtube-share-icon" d="M14.31,18.25V13.47l4.38,2.44ZM24,12.63a4,4,0,0,0-.62-1.69,2.83,2.83,0,0,0-1.61-.75C19.49,10,16.1,10,16.1,10h0s-3.39,0-5.72.19a1.87,1.87,0,0,0-1.61.75,3.27,3.27,0,0,0-.62,1.69A25,25,0,0,0,8,15.34v1.31a22.86,22.86,0,0,0,.18,2.72,4,4,0,0,0,.63,1.69,3,3,0,0,0,1.79.75c1.25.09,5.54.19,5.54.19s3.39,0,5.63-.19a1.87,1.87,0,0,0,1.61-.75A4,4,0,0,0,24,19.38a25,25,0,0,0,.18-2.72V15.34A22.86,22.86,0,0,0,24,12.63Z" fill="#fff"/></svg></a></li> <li><a href="https://www.instagram.com/railwaygazette/" aria-label="Instagram" rel="noopener noreferrer" target="_blank"><svg id="mast-instagram-share" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path id="mast-instagram-share-circle" d="M16,31.5a15.31,15.31,0,0,1-6-1.22A15.54,15.54,0,0,1,5.06,27,15.44,15.44,0,0,1,5.06,5,15.54,15.54,0,0,1,10,1.72a15.36,15.36,0,0,1,12,0A15.73,15.73,0,0,1,30.27,10a15.31,15.31,0,0,1,0,12A15.73,15.73,0,0,1,22,30.27,15.23,15.23,0,0,1,16,31.5Z" fill="#005092"/><path id="mast-instagram-share-ring" d="M16,31A15.08,15.08,0,0,0,31,16,15,15,0,1,0,16,31m0,1a15.81,15.81,0,0,1-6.2-1.26,16.15,16.15,0,0,1-8.53-8.51,15.94,15.94,0,0,1,0-12.46A16.15,16.15,0,0,1,9.8,1.26a15.86,15.86,0,0,1,12.41,0A16.23,16.23,0,0,1,30.73,9.8a15.81,15.81,0,0,1,0,12.41,16.23,16.23,0,0,1-8.53,8.53A15.73,15.73,0,0,1,16,32Z" fill="#fff"/><path id="mast-instagram-share-icon" d="M22.3,10.76A1.38,1.38,0,0,0,21.16,9.7H10.76A1.48,1.48,0,0,0,9.7,10.84v10.4a1.48,1.48,0,0,0,1.14,1.06h10.4a1.39,1.39,0,0,0,1.06-1.06Zm-3-.08h1.21a.52.52,0,0,1,.53.51s0,0,0,0v1.21a.51.51,0,0,1-.45.53H19.34a.64.64,0,0,1-.53-.3V11.29a.46.46,0,0,1,.45-.61ZM16,13.42a2.54,2.54,0,0,1,.23,5.08H16a2.54,2.54,0,0,1,0-5.09Zm4.93,1.44v5.62a.52.52,0,0,1-.51.53H11.52A.52.52,0,0,1,11,20.5s0,0,0,0V14.86H12.2A4,4,0,0,0,12.5,18,3.66,3.66,0,0,0,14,19.49a3.81,3.81,0,0,0,4.1-.15,3.51,3.51,0,0,0,1.14-1.21,3.61,3.61,0,0,0,.53-1.59,4.17,4.17,0,0,0-.15-1.67Z" fill="#fff"/></svg></a></li> </ol> <div class="mastControls"> <nav data-multi-toggle-item="" class="mastNav loggedout hide"><span class="toggleIcon"><a href="#mastnav" data-toggle-button=""><span class="assistive">Mast navigation</span></a></span><ul id="mastnav" data-toggle-element=""><li><a href="https://www.railwaygazette.com/advertise-with-us" class="newWindow">Advertise</a></li><li><a href="https://account.railwaygazette.com/register?surveycode=50&campaigncode=reg_toplink?returl=https://www.railwaygazette.com/56310.article">Register</a></li><li><a href="https://www.railwaygazette.com/subscriptions?campaigncode=rgsubusernav">Subscribe</a></li><li><a class="popup signIn" href="https://www.railwaygazette.com/sign-in">Sign In</a></li></ul></nav> <div class="mastheadSearch hide" data-multi-toggle-item=""> <span class="toggleIcon"> <a href="#search" data-toggle-button=""> <span class="assistive">Search our site</span> </a> </span> <form action="https://www.railwaygazette.com/searchresults" method="get" id="mastsearch" data-toggle-element=""> <fieldset> <div> <label for="search">Search our site</label> <input type="text" id="search" value="" name="qkeyword" class="text" placeholder="Search our site" /> <button class="mastSearch" type="submit">Search</button> </div> </fieldset> </form> </div> <div class="menuToggle"> <span class="toggleIcon"><a href="#mobilemenu" data-menu-toggle-button=""><span class="assistive">Menu</span></a></span> </div> </div> </div> </div> <div class="menuContainer"> <div class="mobileMenu" id="mobilemenu"> <div class="sleeve"> <a class="menuClose" href="#wrapper"> <span>Close<span class="assistive"> menu</span></span> </a> <ul class="main"> <li class="home-icon"> <a href="https://www.railwaygazette.com/"> <span>Home</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/news" aria-expanded="false"> <span>News</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/news"> <span>News</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/passenger"> <span>Passenger</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/traction-and-rolling-stock"> <span>Traction & Rolling Stock</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/high-speed"> <span>High Speed</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/freight"> <span>Freight</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/infrastructure"> <span>Infrastructure</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/policy"> <span>Policy</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/technology"> <span>Technology</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/business"> <span>Business</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/research-training-and-skills"> <span>Research, Training & Skills</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/accessibility-and-inclusion/2297.subject"> <span>Accessibility & inclusion</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/news/people"> <span>People</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/news/regions" aria-expanded="false"> <span>Regions</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/news/regions"> <span>Regions</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/africa"> <span>Africa</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/asia"> <span>Asia</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/australasia"> <span>Australasia</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/europe"> <span>Europe</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/middle-east"> <span>Middle East</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/central-and-south-america"> <span>Central & South America</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/regions/north-america"> <span>North America</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/uk" class="newWindow"> <span>UK news from Rail Business UK</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.metro-report.com" class="newWindow" aria-expanded="false"> <span>Urban transport news from Metro Report International</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.metro-report.com" class="newWindow"> <span>Urban transport news from Metro Report International</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/metros" class="newWindow"> <span>Metros</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/light-rail-and-tram" class="newWindow"> <span>Light Rail & Tram</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/metro-report/news/modes/suburban-and-commuter-rail" class="newWindow"> <span>Suburban & Commuter Rail</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/metro-report/news/modes/peoplemovers-and-monorails" class="newWindow"> <span>Peoplemovers & Monorails</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/news/innotrans"> <span>InnoTrans</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/in-depth"> <span>In depth</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/events" aria-expanded="false"> <span>Events</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/events"> <span>Events</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-industry-events-2024"> <span>Rail Industry Events 2024</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-industry-events-2025"> <span>Rail Industry Events 2025</span> </a> </li> <li class=""> <a href="https://www.railbusinessawards.com/" class="newWindow"> <span>Rail Business Awards</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2024"> <span>Rail Training & Skills Courses 2024</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2025"> <span>Rail Training & Skills Courses 2025</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/news/innotrans"> <span>InnoTrans</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data" aria-expanded="false"> <span>Maps & Data</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/maps-and-data"> <span>Maps & Data</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators" aria-expanded="false"> <span>Railway Operators</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators"> <span>Railway Operators</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/passenger"> <span>Passenger</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/freight"> <span>Freight</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/train-operator-/-open-access"> <span>Train Operator / Open Access</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/track-authority"> <span>Track Authority</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/holding-company"> <span>Holding Company</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/maps-and-data/railway-operators/tourist"> <span>Tourist</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators" aria-expanded="false"> <span>Urban Railway Operators</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators"> <span>Urban Railway Operators</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/metro"> <span>Metro</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/light-rail-/-tramway"> <span>Light Rail / Tramway</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/commuter"> <span>Commuter</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/infrastructure/track-authority"> <span>Infrastructure/Track Authority</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/holding-company"> <span>Holding Company</span> </a> </li> <li class="break"> <a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/urban-rail-list-of-openings"> <span>Urban rail - list of openings</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/maps-and-data/maps" aria-expanded="false"> <span>Maps</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/maps-and-data/maps"> <span>Maps</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps/country-and-city-map-directory/53920.article"> <span>Country and city map directory</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/country-profiles"> <span>Country Profiles</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/regulatory-authorities"> <span>Regulatory Authorities</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/associations"> <span>Associations</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/maps-and-data/data-and-analysis"> <span>Data & Analysis</span> </a> </li> </ul> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/magazines" aria-expanded="false"> <span>Magazines</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/magazines"> <span>Magazines</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/magazines/railway-gazette-international"> <span>Railway Gazette International</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/magazines/metro-report-international"> <span>Metro Report International</span> </a> </li> </ul> </li> <li class=""> <a href="https://www.railwaygazette.com/tenders-and-jobs"> <span>Tenders & Jobs</span> </a> </li> <li class="hasChildren "> <a href="https://www.railwaygazette.com/sponsored-content" aria-expanded="false"> <span>Sponsored content</span> </a> <ul aria-hidden="true" class="subMenu hide"> <li class="parentBack"> <a class="toolbar" href="#"> <span class="header">Back<span class="assistive"> to parent navigation item</span></span> <span class="btn backBtn"> <i></i> </span> </a> </li> <li class="parentNav"> <a href="https://www.railwaygazette.com/sponsored-content"> <span>Sponsored content</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-white-papers/23803.more"> <span>White Papers</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-broadcasts/23797.more?navcode=369"> <span>Webinars</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/our-sponsored-content/23800.more?navcode=369"> <span>Digital Advertorials</span> </a> </li> <li class=""> <a href="https://www.railwaygazette.com/sponsored-content/supplier-directory"> <span>Supplier Directory</span> </a> </li> </ul> </li> </ul> </div> </div> <div class="mobileMenuClose"></div> <div id="mainnav" class="desktopNavigation container" data-menu-open-pushed=""><div class="dropdown vanityPanel"><div class="inner-sleeve"></div></div><div class="inner-sleeve"><ul class="main preJS"><li data-navcode="352" data-rootnavcode="352" class="home-icon"><a href="https://www.railwaygazette.com/"><span>Home</span></a></li><li data-navcode="31" data-rootnavcode="31" class="current hasChildren fourSubNav"><a href="https://www.railwaygazette.com/news"><span>News</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="36" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/passenger"><span>Passenger</span></a></li><li data-navcode="47" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/traction-and-rolling-stock"><span>Traction & Rolling Stock</span></a></li><li data-navcode="46" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/high-speed"><span>High Speed</span></a></li><li data-navcode="40" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/freight"><span>Freight</span></a></li><li data-navcode="39" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/infrastructure"><span>Infrastructure</span></a></li><li data-navcode="37" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/policy"><span>Policy</span></a></li><li data-navcode="48" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/technology"><span>Technology</span></a></li><li data-navcode="38" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/business"><span>Business</span></a></li><li data-navcode="286" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/research-training-and-skills"><span>Research, Training & Skills</span></a></li><li data-navcode="6215" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/accessibility-and-inclusion/2297.subject"><span>Accessibility & inclusion</span></a></li><li data-navcode="49" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/news/people"><span>People</span></a></li></ul></li><li class="subnav"><ul><li data-navcode="50" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions"><span>Regions</span></a><ul><li data-navcode="70" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/africa"><span>Africa</span></a></li><li data-navcode="73" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/asia"><span>Asia</span></a></li><li data-navcode="74" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/australasia"><span>Australasia</span></a></li><li data-navcode="75" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/europe"><span>Europe</span></a></li><li data-navcode="76" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/middle-east"><span>Middle East</span></a></li><li data-navcode="72" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/central-and-south-america"><span>Central & South America</span></a></li><li data-navcode="71" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/regions/north-america"><span>North America</span></a></li><li data-navcode="77" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/uk" class="newWindow"><span>UK news from Rail Business UK</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="35" data-rootnavcode="31" class=""><a href="https://www.metro-report.com" class="newWindow"><span>Urban transport news from Metro Report International</span></a><ul><li data-navcode="354" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/metros" class="newWindow"><span>Metros</span></a></li><li data-navcode="355" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/light-rail-and-tram" class="newWindow"><span>Light Rail & Tram</span></a></li><li data-navcode="356" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/metro-report/news/modes/suburban-and-commuter-rail" class="newWindow"><span>Suburban & Commuter Rail</span></a></li><li data-navcode="357" data-rootnavcode="31" class="break"><a href="https://www.railwaygazette.com/metro-report/news/modes/peoplemovers-and-monorails" class="newWindow"><span>Peoplemovers & Monorails</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="44" data-rootnavcode="31" class=""><a href="https://www.railwaygazette.com/news/innotrans"><span>InnoTrans</span></a></li></ul></li></ul></div></div></li><li data-navcode="33" data-rootnavcode="33" class="hasChildren"><a href="https://www.railwaygazette.com/in-depth"><span>In depth</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="promotedStory"><a href="/in-depth/stations-keeping-eurostar-passengers-connected/67826.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/7/9/68679_eurostarlondonstpancrasphotobz_110946.jpg" loading="lazy" class="lazyloaded" alt="Eurostar London St Pancras photo BZ"></div><div class="captionBlock"><span class="title">Stations: Keeping Eurostar passengers connected</span></div></a></li><li class="promotedStory"><a href="/in-depth/stations-barcelonas-next-rail-hub-nears-completion/67792.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/2/5/68625_cabeceranortelasagreraadif_452635.jpg" loading="lazy" class="lazyloaded" alt="cabecera norte La SagreraADIF"></div><div class="captionBlock"><span class="title">Stations: Barcelona’s next rail hub nears completion</span></div></a></li><li class="promotedStory"><a href="/in-depth/interview-putting-era-at-the-heart-of-europes-railway-ecosystem/67774.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/6/3/68563_ertmsstakeholdersplatform_705799.jpg" loading="lazy" class="lazyloaded" alt="ertms stakeholders platform"></div><div class="captionBlock"><span class="title">Interview: Putting ERA at the heart of Europe’s railway ecosystem</span></div></a></li><li class="promotedStory"><a href="/in-depth/interview-ukrainian-railways-looks-for-more-international-partnerships/67765.article" class="image layoutIcon pictureLayout"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/5/2/68552_ukrainianrailwaysphotoukrainianrailways1_136772.jpg" loading="lazy" class="lazyloaded" alt="Ukrainian Railways (photo Ukrainian Railways) (1)"></div><div class="captionBlock"><span class="title">Interview: Ukrainian Railways looks for more international partnerships</span></div></a></li></ul></div></div></li><li data-navcode="344" data-rootnavcode="344" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/events"><span>Events</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="6311" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-industry-events-2024"><span>Rail Industry Events 2024</span></a></li><li data-navcode="6381" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-industry-events-2025"><span>Rail Industry Events 2025</span></a></li><li data-navcode="6334" data-rootnavcode="344" class=""><a href="https://www.railbusinessawards.com/" class="newWindow"><span>Rail Business Awards</span></a></li><li data-navcode="6382" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2024"><span>Rail Training & Skills Courses 2024</span></a></li><li data-navcode="6409" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/events/rail-training-and-skills-courses-2025"><span>Rail Training & Skills Courses 2025</span></a></li><li data-navcode="6406" data-rootnavcode="344" class=""><a href="https://www.railwaygazette.com/news/innotrans"><span>InnoTrans</span></a></li></ul></li><li class="promotedStory"><a class="image" href="https://www.railbusinessawards.com/" data-story="67533" target="_blank" rel="noopener noreferrer"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/0/67880_rbas_463180.png" loading="lazy" class="lazyloaded" alt="RBAs"></div><div class="captionBlock"><span class="title">Rail Business Awards</span></div></a></li><li class="promotedStory"><a class="image" href="https://www.railwaygazette.com/events/rail-industry-events-2025" data-story="65503"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/7/61887_2025_903874.jpg" loading="lazy" class="lazyloaded" alt="2025"></div><div class="captionBlock"><span class="title">Rail Industry Events 2025</span></div></a></li><li class="promotedStory"><a class="image" href="https://www.railwaygazette.com/events/rail-industry-events-2024" data-story="63299"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/8/6/61886_2024_960559.jpg" loading="lazy" class="lazyloaded" alt="2024"></div><div class="captionBlock"><span class="title">Rail Industry Events 2024</span></div></a></li></ul></div></div></li><li data-navcode="118" data-rootnavcode="118" class="hasChildren threeSubNav"><a href="https://www.railwaygazette.com/maps-and-data"><span>Maps & Data</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="125" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators"><span>Railway Operators</span></a><ul><li data-navcode="132" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/passenger"><span>Passenger</span></a></li><li data-navcode="131" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/freight"><span>Freight</span></a></li><li data-navcode="133" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/train-operator-/-open-access"><span>Train Operator / Open Access</span></a></li><li data-navcode="134" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/track-authority"><span>Track Authority</span></a></li><li data-navcode="130" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/holding-company"><span>Holding Company</span></a></li><li data-navcode="129" data-rootnavcode="118" class="break"><a href="https://www.railwaygazette.com/maps-and-data/railway-operators/tourist"><span>Tourist</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="124" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators"><span>Urban Railway Operators</span></a><ul><li data-navcode="138" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/metro"><span>Metro</span></a></li><li data-navcode="139" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/light-rail-/-tramway"><span>Light Rail / Tramway</span></a></li><li data-navcode="136" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/commuter"><span>Commuter</span></a></li><li data-navcode="135" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/infrastructure/track-authority"><span>Infrastructure/Track Authority</span></a></li><li data-navcode="137" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/holding-company"><span>Holding Company</span></a></li><li data-navcode="330" data-rootnavcode="118" class="break"><a href="https://www.railwaygazette.com/maps-and-data/urban-railway-operators/urban-rail-list-of-openings"><span>Urban rail - list of openings</span></a></li></ul></li></ul></li><li class="subnav"><ul><li data-navcode="151" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/maps"><span>Maps</span></a><ul><li data-navcode="161" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps/country-and-city-map-directory/53920.article"><span>Country and city map directory</span></a></li></ul></li><li data-navcode="128" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/country-profiles"><span>Country Profiles</span></a></li><li data-navcode="126" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/regulatory-authorities"><span>Regulatory Authorities</span></a></li><li data-navcode="127" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/associations"><span>Associations</span></a></li><li data-navcode="383" data-rootnavcode="118" class=""><a href="https://www.railwaygazette.com/maps-and-data/data-and-analysis"><span>Data & Analysis</span></a></li></ul></li></ul></div></div></li><li data-navcode="111" data-rootnavcode="111" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/magazines"><span>Magazines</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="121" data-rootnavcode="111" class=""><a href="https://www.railwaygazette.com/magazines/railway-gazette-international"><span>Railway Gazette International</span></a></li><li data-navcode="122" data-rootnavcode="111" class=""><a href="https://www.railwaygazette.com/magazines/metro-report-international"><span>Metro Report International</span></a></li></ul></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-current-issue-november-2024/67681.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/3/1/4/68314_rgin2411coverminipic_108396.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2411-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International Current Issue - November 2024</span></div></a></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-2024-digital-archive/65790.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/9/7/3/62973_rgin2401coverminipic_848447.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2401-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International 2024 Digital Archive</span></div></a></li><li class="promotedStory"><a href="/magazines/railway-gazette-international-2023-digital-archive/63453.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/6/4/1/55641_rgin2301coverminipic_330197.jpg" loading="lazy" class="lazyloaded" alt="RGIN-2301-cover-minipic"></div><div class="captionBlock"><span class="title">Railway Gazette International 2023 Digital Archive</span></div></a></li></ul></div></div></li><li data-navcode="349" data-rootnavcode="349" class="hasChildren"><a href="https://www.railwaygazette.com/tenders-and-jobs"><span>Tenders & Jobs</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="promotedStory"><a href="/tenders-and-jobs/the-pays-de-la-loire-region--west-of-france/67867.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/6/7/68767_logofondsblanc_156719300x200_588471.jpg" loading="lazy" class="lazyloaded" alt="logofondsblanc_156719-300x200"></div><div class="captionBlock"><span class="title">The Pays-de-la Loire Region ( West of France)</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/principal-structures-engineer/67845.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/1/8/68718_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Principal Structures Engineer</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/commercial-procurement-manager/67776.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/7/3/68573_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Commercial Procurement Manager</span></div></a></li><li class="promotedStory"><a href="/tenders-and-jobs/project-manager/67777.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/5/7/2/68572_rssbjpg_359885.jpg" loading="lazy" class="lazyloaded" alt="RSSBJpg"></div><div class="captionBlock"><span class="title">Project Manager</span></div></a></li></ul></div></div></li><li data-navcode="369" data-rootnavcode="369" class="hasChildren oneSubNav"><a href="https://www.railwaygazette.com/sponsored-content"><span>Sponsored content</span></a><div class="dropdown"><div class="inner-sleeve"><ul><li class="subnav"><ul><li data-navcode="6320" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-white-papers/23803.more"><span>White Papers</span></a></li><li data-navcode="6318" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-broadcasts/23797.more?navcode=369"><span>Webinars</span></a></li><li data-navcode="6319" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/our-sponsored-content/23800.more?navcode=369"><span>Digital Advertorials</span></a></li><li data-navcode="6383" data-rootnavcode="369" class=""><a href="https://www.railwaygazette.com/sponsored-content/supplier-directory"><span>Supplier Directory</span></a></li></ul></li><li class="promotedStory"><a href="/sponsored-content/rail-baltica-creating-a-strategic-link-for-europe/67648.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/2/6/9/68269_estoniaulemistestationvisualisation1_3467.jpg" loading="lazy" class="lazyloaded" alt="Estonia-Ulemiste-station-visualisation-(1)"></div><div class="captionBlock"><span class="title">Rail Baltica: creating a strategic link for Europe</span><span class="author">Sponsored by <span class="noLink">Rail Baltica</span></span></div></a></li><li class="promotedStory"><a href="/sponsored-content/croatian-konar-group-among-the-first-in-europe-to-manufacture-battery-multiple-unit-and-the-only-one-to-present-such-an-advancement-at-innotrans-2024/67523.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/8/3/2/67832_konarsmeasurementtrain_793077.jpg" loading="lazy" class="lazyloaded" alt="KONČAR's-Measurement-train"></div><div class="captionBlock"><span class="title">Croatian KONČAR Group among the first in Europe to manufacture Battery Multiple Unit and the only one to present such an advancement at InnoTrans 2024</span><span class="author">Sponsored by <span class="noLink">KONČAR</span></span></div></a></li><li class="promotedStory"><a href="/sponsored-content/lb-foster-highlights-at-innotrans/67476.article" class="image"><div class="image"><img src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/274x183/7/1/9/67719_lbfoster_92071.jpg" loading="lazy" class="lazyloaded" alt="LBFoster"></div><div class="captionBlock"><span class="title">L.B. Foster highlights at InnoTrans</span><span class="author">Sponsored by <span class="noLink">L.B. Foster</span></span></div></a></li></ul></div></div></li><li class="more hide"><a href="#mobilemenu" data-menu-toggle-button="" aria-expanded="false"><span> More from<span class="assistive"> navigation items</span></span></a></li></ul></div></div><div class="desktopNavigationSpace"></div> </div> </header> <!-- Masthead leaderboard - under nav--> <div class="ad showMenuPushed" class="ad showMenuPushed" data-a-menu-open-pushed="true" style="position: relative; margin-top: 24px;"> <!-- /13644946/RGI.COM_LEAD_GENERAL_PAGES --> <div id='div-gpt-ad-1601973347622-0' class="dt-ad-90 tab-ad-90 mob-ad-50"> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1601973347622-0'); }); </script> </div> </div> <!-- Masthead leaderboard - under nav <div class="ad showMenuPushed" class="ad showMenuPushed" data-a-menu-open-pushed="true" style="position: relative; margin-top: 24px;"> <!-- /210416249/RGI.COM_LEAD_GENERAL_PAGES <div id='div-gpt-ad-1568119471514-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1568119471514-0'); }); </script> </div> </div>--> <div id="wrapper_sleeve" data-menu-open-pushed> <div class="storyLayout standard"></div> <div class="headerWrapper"> <div class="container titleByline"> <div class="inner-sleeve"> <div class="storyPrimaryNav"><a href="https://www.railwaygazette.com/news/traction-and-rolling-stock">Traction & Rolling Stock</a></div> <div class="story_title"> <h1>Norfolk Southern revives battery traction ambitions with Alstom partnership</h1> </div> <p class="byline meta">By <span class="author"><a href="https://www.railwaygazette.com/railway-gazette-international/1098.bio" rel="author">Railway Gazette International</a></span><span class="date" data-date-timezone="{"publishdate": "2024-11-22T17:12:00","format": "D MMMM YYYY"}">2024-11-22T17:12:00+00:00</span></p> </div> </div> </div> <div id="columns" class="container"> <div id="colwrapper" class="inner-sleeve"> <div id="colmain" role="main" class="restrictedcontent"> <div id="content"> <div id="content_sleeve"> <div class="contentWrapper"> <div class="storyContentWrapper"> <div class="pageOptions"> <ul><!-- <li> <a data-facebook-share="true" data-share-url='https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article' data-share-title="Norfolk Southern revives battery traction ambitions with Alstom partnership" href="javascript:void(0)" class="facebook" title="Share this on Facebook" rel="noopener noreferrer"></a> </li> <li> <a data-twitter-share="true" data-share-url='https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article' data-share-title="Norfolk Southern revives battery traction ambitions with Alstom partnership" href="javascript:void(0)" class="twitter" title="Share this on Twitter" rel="noopener noreferrer"></a> </li> <li> <a data-linkedin-share="true" data-share-url='https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article' data-share-title="Norfolk Southern revives battery traction ambitions with Alstom partnership" href="javascript:void(0)" class="linkedin" title="Share this on Linked in" rel="noopener noreferrer"></a> </li> <li> <a data-whatsapp-share="true" data-share-url='https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article' data-share-title="Norfolk Southern revives battery traction ambitions with Alstom partnership" href="javascript:void(0)" class="whatsapp" title="Share this on Whatsapp" rel="noopener noreferrer"></a> </li> --> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.railwaygazette.com%2ftraction-and-rolling-stock%2fnorfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership%2f67869.article&e=Norfolk+Southern+revives+battery+traction+ambitions+with+Alstom+partnership" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=Norfolk+Southern+revives+battery+traction+ambitions+with+Alstom+partnership&url=https%3a%2f%2fwww.railwaygazette.com%2ftraction-and-rolling-stock%2fnorfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership%2f67869.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.railwaygazette.com%2ftraction-and-rolling-stock%2fnorfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership%2f67869.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=Norfolk Southern revives battery traction ambitions with Alstom partnership&body=https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/67869/bookmark"> </li> </ul> </div> <div class="articleWrapper"> <div class="articleContent"> <div class="storytext"><div class="inline_image inline_image_right image_size_med" data-attachment="68775" data-sequence="1"> <p class="picture"><img alt="us-norfolk southern-NS999_11_3_09" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xAny/7/7/5/68775_usnorfolksouthernns999_11_3_09_88792.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/480xAny/7/7/5/68775_usnorfolksouthernns999_11_3_09_88792.jpg 480w" loading="eager" class="lazyloaded" width="1024" height="683"></p> <div class="inline_meta"><p class="inline_caption">Norfolk Southern converted an EMD GP38 loco to operate on battery power in 2009, rebranding it as NS 999.</p></div></div> <p>USA: Class I railroad Norfolk Southern Corp is to convert two diesel prime movers to hybrid operation through a partnership with <a class="intextlink" href="https://www.railwaygazette.com/alstom/2059.subject" target="_blank" rel="intextlink_0">Alstom</a>.</p> <p>The initiative will see hybrid powertrains developed by Alstom and used on European rolling stock deployed in north America for the first time, according to NS. The two 50 year old EMD GP38/40 four-axle diesel locos will be stripped back to the underframe, before being rebuilt with hybrid power units. Batteries will provide primary propulsion while a smaller Tier 4 diesel engine will run only when needed to charge them.</p> <p>The modular design will allow the propulsion systems to be upgraded or replaced as <a class="intextlink" href="https://www.railwaygazette.com/news/traction-and-rolling-stock/battery-traction" rel="intextlink_2">battery</a> and engine technology advances, NS said.</p> <p>The finished locomotives will deliver quieter, lower-emission operations with an estimated 90% fewer emissions and 30% greater haulage capacity than conventional diesel locos, NS added. Alstom will lead the design and assembly of the hybrid locomotives at its Kanona works in New York state.</p> <p>The project is being funded through a Consolidated Rail Infrastructure & Safety Improvements grant from the Federal Railroad Administration, as well as support from the Steuben County’s Industrial Development Agency in New York State and Binghamton University’s New Energy New York consortium.</p> <p>‘Rail is already the most sustainable mode of land transportation, and these hybrid conversions will deliver quieter, cleaner rail options’, said NS Chief Sustainability Officer Josh Raglin when the project was launched on November 12. ‘Thanks to the FRA’s CRISI grant and strong support from Alstom, Steuben County IDA, and NENY, we’re charting a path to deliver a better product for our customers and better experience for the communities where Norfolk Southern operates.’</p> <p>NS has previously tested a rebuilt GP38 loco fitted with traction batteries as part of a research programme launched with Pennsylvania State University in 2008, covering trails of hybrid shunting and light main line locos. The converted locomotive, known as NS 999, was sold to Rail Propulsions Systems in November 2019 and has since been used on trip freight duties around Los Angeles. </p> <p><em>An in-depth feature on Norfolk Southern’s decarbonisation trials appeared in the September 2011 edition of <a class="intextlink" href="https://www.railwaygazette.com/" rel="intextlink_1">Railway Gazette International</a>. This is available for subscribers to <a href="https://www.railwaygazette.com/railway-gazette-international-2011-digital-archive/53888.article" target="_blank">read in our digital archive</a>.</em></p></div><div id="storytext-end" class="storytext-end"></div> </div> </div> <div class="htmlContent"> </div> </div> <div class="topics"><div class="sleeve"><span class="topicsLabel"></span><h2>Topics</h2><ul class="topicsList"><li><a href="/news/traction-and-rolling-stock/battery-traction">Battery traction</a></li><li><a href="/usa/2082.subject">USA</a></li></ul></div></div> <div class="pageOptions"> <ul><!-- <li> <a data-facebook-share="true" data-share-url='https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article' data-share-title="Norfolk Southern revives battery traction ambitions with Alstom partnership" href="javascript:void(0)" class="facebook" title="Share this on Facebook" rel="noopener noreferrer"></a> </li> <li> <a data-twitter-share="true" data-share-url='https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article' data-share-title="Norfolk Southern revives battery traction ambitions with Alstom partnership" href="javascript:void(0)" class="twitter" title="Share this on Twitter" rel="noopener noreferrer"></a> </li> <li> <a data-linkedin-share="true" data-share-url='https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article' data-share-title="Norfolk Southern revives battery traction ambitions with Alstom partnership" href="javascript:void(0)" class="linkedin" title="Share this on Linked in" rel="noopener noreferrer"></a> </li> <li> <a data-whatsapp-share="true" data-share-url='https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article' data-share-title="Norfolk Southern revives battery traction ambitions with Alstom partnership" href="javascript:void(0)" class="whatsapp" title="Share this on Whatsapp" rel="noopener noreferrer"></a> </li> --> <!--facebook--> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fwww.railwaygazette.com%2ftraction-and-rolling-stock%2fnorfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership%2f67869.article&e=Norfolk+Southern+revives+battery+traction+ambitions+with+Alstom+partnership" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=Norfolk+Southern+revives+battery+traction+ambitions+with+Alstom+partnership&url=https%3a%2f%2fwww.railwaygazette.com%2ftraction-and-rolling-stock%2fnorfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership%2f67869.article" class="twitter" title="Share this on Twitter" target="_blank"></a> </li> <!--linked in--> <li> <a href="https://www.linkedin.com/cws/share?url=https%3a%2f%2fwww.railwaygazette.com%2ftraction-and-rolling-stock%2fnorfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership%2f67869.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=Norfolk Southern revives battery traction ambitions with Alstom partnership&body=https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article" class="email" title="Email this article"></a></li> </ul> <ul class="pageOptions_right"> <li class=" last" aria-live="polite" data-cache-bust="true" data-ajax-load-content="" data-url="/67869/bookmark"> </li> </ul> </div> </div> </div> </div> </div> <div id="rightcolumn" class="fixedrightcolumn rightcolumn restrictedcontent"> <div id="rightcolumn_sleeve"> <!-- BELOW NOT SUPPORT Instructions for implementation depending on right or bottom. If this in the bottom position then we might need to wrap the code with ` <div class="container"> <div class="inner-sleeve"> // taxanomy-list to go here </div> </div> ` --> <div data-mpu1-reflow></div> <div id="rhcreflow-tabletlandscape"></div> <div id="rhcreflow-desktop" class="rhc-mostpopular-desktop"> </div> <div id="rhcreflow-extra"></div> <div id="rhcreflow-extra-end" class="rhcreflow-extra-end"></div> </div> </div> </div> </div> <div class="container bottomAdContainer restrictedcontent"> <div class="inner-sleeve"> <div class="bottomAd"> </div> </div> </div> <div class="container relatedVideos restrictedcontent"> <div class="inner-sleeve"> <div id="videosreflow-tabletportrait"></div> <div id="videosreflow-mobile"></div> </div> </div> <div class="container relatedArticles" id="relatedArticles"> <div class="inner-sleeve"> <div class="extras relatedarticles restrictedcontent"> <div class="relatedarticles_sleeve"> <div class="extras_heading"> <h3>Related articles</h3> </div> <div class="extrasStory listBlocks"> <div class="contentWrapper loadMoreItems" data-load-more-ajax=""> <ul data-load-more-context=""> <li class=""> <a href="https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-tests-tier-4-gp34eco-locomotive/60013.article" class="image"> <img alt="NS Progress 2E32009C edit" loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/6/1/3/44613_nsprogress2e32009cedit_645615_crop.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/6/1/3/44613_nsprogress2e32009cedit_645615_crop.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/6/1/3/44613_nsprogress2e32009cedit_645615_crop.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/6/1/3/44613_nsprogress2e32009cedit_645615_crop.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/6/1/3/44613_nsprogress2e32009cedit_645615_crop.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-tests-tier-4-gp34eco-locomotive/60013.article">Norfolk Southern tests Tier 4 GP34ECO Locomotive</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2021-10-01T08:05:00Z","format": "D MMMM YYYY HH:mm"}">2021-10-01T08:05:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p> USA: Progress Rail and Norfolk Southern have started testing the first EMD GP34ECO locomotive for yard work and intermediate freight traffic, which uses selective catalytic reduction to meet Environmental Protection Agency Tier 4 emissions regulations. Remanufactured from a GP59 at Norfolk Southern’s Juniata Locomotive Shop in ...</p> </div> </li> <li class=""> <a href="https://www.railwaygazette.com/traction-and-rolling-stock/wabtec-breathes-new-life-into-older-locomotives/59699.article" class="image"> <img alt="Wabtec has completed the 1 000th locomotive it has remanufactured for customers in the Americas under a programme launched in 2015." loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/5/4/8/43548_wabtec1000thmodseventcommemorationft.worthtxtheirphoto2_947305.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/5/4/8/43548_wabtec1000thmodseventcommemorationft.worthtxtheirphoto2_947305.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/5/4/8/43548_wabtec1000thmodseventcommemorationft.worthtxtheirphoto2_947305.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/5/4/8/43548_wabtec1000thmodseventcommemorationft.worthtxtheirphoto2_947305.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/5/4/8/43548_wabtec1000thmodseventcommemorationft.worthtxtheirphoto2_947305.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/traction-and-rolling-stock/wabtec-breathes-new-life-into-older-locomotives/59699.article">Wabtec breathes new life into older locomotives</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2021-08-12T13:53:00Z","format": "D MMMM YYYY HH:mm"}">2021-08-12T13:53:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p>USA: This month Wabtec completed the 1 000th locomotive it has remanufactured for customers in the Americas under a programme launched in 2015. Norfolk Southern has taken delivery of 500 of the locos, with other customers including Canadian Pacific, BNSF, Union Pacific and Brazilian operator Rumo.</p> </div> </li> <li class=""> <a href="https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-unveils-publicly-funded-gp33eco-locomotive/40387.article" class="image"> <img alt="Norfolk Southern GP33ECO locomotive." loading="lazy" sizes="(max-width:767px) 100px, (max-width: 1179px) 220px, 280px" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/9/8/5/10985_tn_us-ns-gp33eco.jpg" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/100x67/9/8/5/10985_tn_us-ns-gp33eco.jpg 100w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/172x115/9/8/5/10985_tn_us-ns-gp33eco.jpg 172w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/220x148/9/8/5/10985_tn_us-ns-gp33eco.jpg 220w,https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280x188/9/8/5/10985_tn_us-ns-gp33eco.jpg 280w" width="100" height="67" class="lazyloaded" /> </a> <div class="storyDetails"> <a href="https://www.railwaygazette.com/news/1013.type" class="storyType">News</a> <h3> <a href="https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-unveils-publicly-funded-gp33eco-locomotive/40387.article">Norfolk Southern unveils publicly-funded GP33ECO locomotive</a> </h3> <p class="meta"> <span class="date" data-date-timezone="{"publishdate": "2015-01-08T10:44:00Z","format": "D MMMM YYYY HH:mm"}">2015-01-08T10:44:00Z</span> <span class="author">By <a rel="author" href="https://www.railwaygazette.com/railway-gazette-international/1098.bio">Railway Gazette International</a></span> </p> <p>USA: A GP33ECO shunting locomotive remanufactured from an EMD GP50 at Norfolk Southern’s Juniata Locomotive Shop in Altoona, Pennsylvania, using funding from the Congestion Mitigation & Air Quality Improvement Program was unveiled on January 6. A total of 25 locomotives are being repowered with Tier 3 compliant EMD 12-710 ...</p> </div> </li> </ul> <div class="loadMoreButtonWrapper" data-load-more-button-wrapper=""> <button type="button" class="button" data-load-more-button="" data-items-offset="3" data-ajax-url="https://www.railwaygazette.com/67869/loadmore?code=ARTICLES" data-items-to-load="8" data-loading-more-text="Loading more articles"> Load more articles </button> </div> </div> </div> <div class="fixedrightcolumn rightcolumn"> <!-- 22-09-22 - New ENHANCED ADS unit--> <!-- /13644946/RGI_MPU_C --> <div class="ad"> <div id='div-gpt-ad-1666188956933-0' style='min-width: 300px; min-height: 250px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1666188956933-0'); }); </script> </div></div> <!-- /210416249/RGI_MPU_C --> <!-- <div class="ad"> <div id='div-gpt-ad-1572343283773-0'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1572343283773-0'); }); </script> </div> </div>--> <!--<div class="ad">--> <!-- /13644946/RGI_MPU_C <div id='div-gpt-ad-1602146167342-0' style='width: 300px; height: 250px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1602146167342-0'); } ); </script> </div> </div>--> </div> </div> </div> </div> </div> <div class="container commentContainer restrictedcontent"> <div class="inner-sleeve"> <div class=" extras"> <div class="extrasStory"> <div class="contentWrapper"></div> </div></div> </div> </div> <div class="container"><div class="inner-sleeve"><div id="rhcreflow-tabletportrait"></div><div id="rhcreflow-mobile"></div></div></div><div id="mobile-drop-zone"></div> <div class="footer_ad"> <div class="footer_ad_strip"> <div class="ad"> </div> </div> </div> <div id="footer" class="footer" role="contentinfo"> <div class="container footerTopNavPageText"> <div class="inner-sleeve"> <div class="brand-list"> <ul> <li> <a href="https://www.railwaygazette.com"> <svg id="Group_1156" data-name="Group 1156" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="212" height="50" viewBox="0 0 212 50"> <rect id="Rectangle_1553" data-name="Rectangle 1553" width="212" height="50" fill="#fff"/> <g id="Group_1155" data-name="Group 1155"> <path id="Path_2131" data-name="Path 2131" d="M25,0A24.993,24.993,0,0,0,5.3,40.378H34.725a3.2,3.2,0,0,0,3.19-3.19V35.41h-7.76a5.781,5.781,0,0,1-5.775-5.775V14.155a5.738,5.738,0,0,1,1-3.243H15.367a3.194,3.194,0,0,0-3.19,3.19V35.4H9.644V14.1a5.729,5.729,0,0,1,5.723-5.723H34.725A5.729,5.729,0,0,1,40.447,14.1V37.188a5.729,5.729,0,0,1-5.722,5.722H7.566A25,25,0,1,0,25,0" fill="#005191"/> <path id="Path_2132" data-name="Path 2132" d="M34.725,10.912h-4.57a3.245,3.245,0,0,0-3.242,3.242V29.636a3.246,3.246,0,0,0,3.242,3.242h7.76V14.1a3.194,3.194,0,0,0-3.19-3.19" fill="#005191"/> <g id="Group_1151" data-name="Group 1151"> <path id="Path_2133" data-name="Path 2133" d="M61.792,25.954H59.531V10.628H65.3a6.432,6.432,0,0,1,3.983,1.011,3.959,3.959,0,0,1,1.291,3.316v.688a4.516,4.516,0,0,1-.742,2.745,3.822,3.822,0,0,1-2.293,1.367l3.746,6.2H68.659L65.214,19.97H61.792Zm6.522-10.72a4.79,4.79,0,0,0-.15-1.324,1.552,1.552,0,0,0-.5-.785,1.939,1.939,0,0,0-.925-.377,9.068,9.068,0,0,0-1.443-.1H61.792v5.3H65.3a9.068,9.068,0,0,0,1.443-.1,1.887,1.887,0,0,0,.925-.388,1.616,1.616,0,0,0,.5-.8,4.781,4.781,0,0,0,.15-1.324Z" fill="#1d1d1b"/> </g> <g id="Group_1152" data-name="Group 1152"> <path id="Path_2134" data-name="Path 2134" d="M81.747,24.1a1.83,1.83,0,0,1-.474,1.442,2.7,2.7,0,0,1-1.722.409H76.322a5.022,5.022,0,0,1-3.24-.828A3.073,3.073,0,0,1,72.1,22.64v-.474a2.979,2.979,0,0,1,1.065-2.583,5.7,5.7,0,0,1,3.326-.775,7.881,7.881,0,0,1,2.024.2,3.791,3.791,0,0,1,1.076.442v-.646a5.128,5.128,0,0,0-.075-.937,1.194,1.194,0,0,0-.366-.667,1.93,1.93,0,0,0-.84-.409,6.335,6.335,0,0,0-1.5-.14q-.9,0-1.926.011t-1.755.032l.409-1.873q.6-.021,1.486-.032t1.786-.011a6.137,6.137,0,0,1,3.767.915,3.231,3.231,0,0,1,1.163,2.7Zm-7.535-1.485a1.385,1.385,0,0,0,.453,1.13,2.674,2.674,0,0,0,1.657.377h3.272V22.144a2.619,2.619,0,0,0-.086-.71.87.87,0,0,0-.345-.484,1.873,1.873,0,0,0-.753-.27,8.165,8.165,0,0,0-1.313-.085h-.5a7.543,7.543,0,0,0-1.173.075,1.812,1.812,0,0,0-.732.258.967.967,0,0,0-.377.484,2.258,2.258,0,0,0-.108.754Z" fill="#1d1d1b"/> <path id="Path_2135" data-name="Path 2135" d="M86.655,11.532a1.5,1.5,0,0,1-.334,1.087,1.941,1.941,0,0,1-2.174,0,1.492,1.492,0,0,1-.334-1.087,1.489,1.489,0,0,1,.334-1.087,1.936,1.936,0,0,1,2.174,0A1.493,1.493,0,0,1,86.655,11.532Zm-2.541,3.293h2.261V25.954H84.114Z" fill="#1d1d1b"/> <path id="Path_2136" data-name="Path 2136" d="M88.721,9.96h2.26V25.954h-2.26Z" fill="#1d1d1b"/> <path id="Path_2137" data-name="Path 2137" d="M100.367,17.538l-2.239,8.416H95.8L92.51,14.825h2.26l2.217,8.762,2.346-8.762h2.2l2.239,8.8,2.346-8.8h2.11l-3.358,11.129h-2.325Z" fill="#1d1d1b"/> </g> <g id="Group_1153" data-name="Group 1153"> <path id="Path_2138" data-name="Path 2138" d="M118.557,24.1a1.83,1.83,0,0,1-.474,1.442,2.693,2.693,0,0,1-1.721.409h-3.229a5.022,5.022,0,0,1-3.24-.828,3.07,3.07,0,0,1-.98-2.486v-.474a2.98,2.98,0,0,1,1.066-2.583,5.694,5.694,0,0,1,3.325-.775,7.876,7.876,0,0,1,2.024.2,3.787,3.787,0,0,1,1.077.442v-.646a5.122,5.122,0,0,0-.076-.937,1.183,1.183,0,0,0-.366-.667,1.92,1.92,0,0,0-.839-.409,6.338,6.338,0,0,0-1.5-.14q-.9,0-1.926.011t-1.755.032l.409-1.873q.6-.021,1.486-.032t1.786-.011a6.138,6.138,0,0,1,3.768.915,3.23,3.23,0,0,1,1.162,2.7Zm-7.534-1.485a1.388,1.388,0,0,0,.452,1.13,2.677,2.677,0,0,0,1.658.377H116.4V22.144a2.616,2.616,0,0,0-.087-.71.869.869,0,0,0-.344-.484,1.879,1.879,0,0,0-.753-.27,8.173,8.173,0,0,0-1.313-.085h-.5a7.543,7.543,0,0,0-1.173.075,1.812,1.812,0,0,0-.732.258.973.973,0,0,0-.377.484,2.286,2.286,0,0,0-.107.754Z" fill="#1d1d1b"/> <path id="Path_2139" data-name="Path 2139" d="M121.98,27.849q1.077.042,1.873.043h1.636a5.68,5.68,0,0,0,1.356-.14,2.028,2.028,0,0,0,.915-.474,1.855,1.855,0,0,0,.5-.915,6.021,6.021,0,0,0,.152-1.484v-.238c-.13.116-.273.23-.431.345a2.386,2.386,0,0,1-.592.3,4.463,4.463,0,0,1-.883.2,9.483,9.483,0,0,1-1.3.075,5.451,5.451,0,0,1-3.175-.785,3.16,3.16,0,0,1-1.109-2.767v-7.19h2.26V21.5a7.315,7.315,0,0,0,.054.948,1.352,1.352,0,0,0,.28.689,1.37,1.37,0,0,0,.711.419,4.919,4.919,0,0,0,1.323.14,7.472,7.472,0,0,0,1.486-.118,1.723,1.723,0,0,0,.86-.409,1.473,1.473,0,0,0,.409-.754,5.157,5.157,0,0,0,.109-1.151V14.825h2.26V24.879a7.606,7.606,0,0,1-.291,2.259,3.352,3.352,0,0,1-.926,1.507,3.845,3.845,0,0,1-1.614.85,8.872,8.872,0,0,1-2.335.27H123.7q-.452,0-.969-.011c-.344-.007-.732-.019-1.162-.032Z" fill="#1d1d1b"/> <path id="Path_2140" data-name="Path 2140" d="M149.749,17.925v6.006a2.7,2.7,0,0,1-.345,1.528,1.29,1.29,0,0,1-1.141.5H144.54a10.11,10.11,0,0,1-3.165-.419A4.447,4.447,0,0,1,139.4,24.3a4.576,4.576,0,0,1-1-2.056,13.16,13.16,0,0,1-.28-2.873V17.194a13.247,13.247,0,0,1,.27-2.81,4.279,4.279,0,0,1,3.013-3.358,10.422,10.422,0,0,1,3.326-.441h2.39q1.1,0,2.195.043l-.366,2.023c-.6-.014-1.123-.025-1.56-.032s-.826-.011-1.163-.011h-1.647a10.141,10.141,0,0,0-2.066.172,2.3,2.3,0,0,0-1.249.667,2.773,2.773,0,0,0-.613,1.421,14.513,14.513,0,0,0-.161,2.411v2a13.058,13.058,0,0,0,.183,2.454,2.828,2.828,0,0,0,.634,1.41,2.2,2.2,0,0,0,1.227.636,10.455,10.455,0,0,0,1.938.15h3.014V19.863h-2.842l.409-1.938Z" fill="#1d1d1b"/> <path id="Path_2141" data-name="Path 2141" d="M161.309,24.1a1.834,1.834,0,0,1-.474,1.442,2.7,2.7,0,0,1-1.722.409h-3.229a5.022,5.022,0,0,1-3.24-.828,3.073,3.073,0,0,1-.979-2.486v-.474a2.979,2.979,0,0,1,1.065-2.583,5.7,5.7,0,0,1,3.326-.775,7.867,7.867,0,0,1,2.023.2,3.787,3.787,0,0,1,1.077.442v-.646a5.121,5.121,0,0,0-.076-.937,1.183,1.183,0,0,0-.366-.667,1.92,1.92,0,0,0-.839-.409,6.335,6.335,0,0,0-1.5-.14q-.9,0-1.926.011c-.682.007-1.268.018-1.755.032l.409-1.873q.6-.021,1.485-.032t1.787-.011a6.137,6.137,0,0,1,3.767.915,3.231,3.231,0,0,1,1.163,2.7Zm-7.535-1.485a1.388,1.388,0,0,0,.452,1.13,2.677,2.677,0,0,0,1.658.377h3.272V22.144a2.619,2.619,0,0,0-.086-.71.875.875,0,0,0-.345-.484,1.873,1.873,0,0,0-.753-.27,8.173,8.173,0,0,0-1.313-.085h-.495a7.566,7.566,0,0,0-1.174.075,1.823,1.823,0,0,0-.732.258.971.971,0,0,0-.376.484,2.258,2.258,0,0,0-.108.754Z" fill="#1d1d1b"/> <path id="Path_2142" data-name="Path 2142" d="M165.915,24.082h6.78l-.387,1.872H163.2V24.19l6.48-7.492h-6.458l.387-1.873h8.762V16.59Z" fill="#1d1d1b"/> <path id="Path_2143" data-name="Path 2143" d="M176.463,21.219a8.867,8.867,0,0,0,.1,1.464,1.72,1.72,0,0,0,.387.882,1.5,1.5,0,0,0,.807.442,6.474,6.474,0,0,0,1.378.118h1.582q.957,0,2.486-.043l-.387,1.872c-.445.015-.826.025-1.141.033s-.606.01-.872.01h-1.668a7.265,7.265,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.507-1.011,3.562,3.562,0,0,1-.743-1.593,10.3,10.3,0,0,1-.193-2.078v-1.2a10.879,10.879,0,0,1,.2-2.207,3.831,3.831,0,0,1,.754-1.657,3.476,3.476,0,0,1,1.528-1.044,7.409,7.409,0,0,1,2.55-.366,6.969,6.969,0,0,1,2.357.334,3.6,3.6,0,0,1,1.443.9,3.023,3.023,0,0,1,.721,1.313,6.077,6.077,0,0,1,.194,1.539v.323a6.9,6.9,0,0,1-.086,1.227,1.623,1.623,0,0,1-.28.7.88.88,0,0,1-.484.323,2.79,2.79,0,0,1-.7.076Zm2.669-4.952a5.838,5.838,0,0,0-1.378.13,1.471,1.471,0,0,0-.807.484,2,2,0,0,0-.387.98,10.839,10.839,0,0,0-.1,1.614h5.36v-.732a5.181,5.181,0,0,0-.118-1.195,1.469,1.469,0,0,0-.431-.764,1.832,1.832,0,0,0-.829-.4A6.019,6.019,0,0,0,179.132,16.267Z" fill="#1d1d1b"/> <path id="Path_2144" data-name="Path 2144" d="M186,12.2l2.261-.409v3.035h4.089l-.387,1.873h-3.7v5.166a7.223,7.223,0,0,0,.075,1.163,1.326,1.326,0,0,0,.29.689,1.12,1.12,0,0,0,.614.323,5,5,0,0,0,1.022.086h1.96l-.388,1.829h-1.55a9.594,9.594,0,0,1-2.121-.193,2.775,2.775,0,0,1-1.312-.656,2.444,2.444,0,0,1-.668-1.238A8.618,8.618,0,0,1,186,21.929Z" fill="#1d1d1b"/> <path id="Path_2145" data-name="Path 2145" d="M193.9,12.2l2.261-.409v3.035h4.089l-.387,1.873h-3.7v5.166a7.225,7.225,0,0,0,.075,1.163,1.326,1.326,0,0,0,.29.689,1.12,1.12,0,0,0,.614.323,5,5,0,0,0,1.022.086h1.959l-.387,1.829h-1.55a9.594,9.594,0,0,1-2.121-.193,2.783,2.783,0,0,1-1.313-.656,2.45,2.45,0,0,1-.667-1.238,8.619,8.619,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <path id="Path_2146" data-name="Path 2146" d="M203.8,21.219a8.867,8.867,0,0,0,.1,1.464,1.729,1.729,0,0,0,.388.882,1.494,1.494,0,0,0,.806.442,6.48,6.48,0,0,0,1.378.118h1.583q.957,0,2.486-.043l-.388,1.872c-.444.015-.825.025-1.14.033s-.607.01-.872.01H206.47a7.273,7.273,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.506-1.011,3.574,3.574,0,0,1-.744-1.593,10.374,10.374,0,0,1-.193-2.078v-1.2a10.8,10.8,0,0,1,.205-2.207,3.83,3.83,0,0,1,.753-1.657,3.476,3.476,0,0,1,1.528-1.044,7.415,7.415,0,0,1,2.551-.366,6.977,6.977,0,0,1,2.357.334,3.6,3.6,0,0,1,1.442.9,3.036,3.036,0,0,1,.722,1.313,6.078,6.078,0,0,1,.193,1.539v.323a6.81,6.81,0,0,1-.086,1.227,1.6,1.6,0,0,1-.28.7.876.876,0,0,1-.484.323,2.776,2.776,0,0,1-.7.076Zm2.669-4.952a5.843,5.843,0,0,0-1.378.13,1.464,1.464,0,0,0-.806.484,2.014,2.014,0,0,0-.388.98,10.839,10.839,0,0,0-.1,1.614h5.36v-.732a5.181,5.181,0,0,0-.118-1.195,1.462,1.462,0,0,0-.431-.764,1.833,1.833,0,0,0-.828-.4A6.035,6.035,0,0,0,206.47,16.267Z" fill="#1d1d1b"/> </g> <g id="Group_1154" data-name="Group 1154"> <path id="Path_2147" data-name="Path 2147" d="M60.394,33.579v7.213H59.331V33.579Z" fill="#1d1d1b"/> <path id="Path_2148" data-name="Path 2148" d="M62.937,33.579l3.718,5.44v-5.44h1.063v7.213h-.962l-3.7-5.41v5.41H61.995V33.579Z" fill="#1d1d1b"/> <path id="Path_2149" data-name="Path 2149" d="M74.992,33.579l-.193.952H72.4v6.261H71.335V34.531H68.8L69,33.579Z" fill="#1d1d1b"/> <path id="Path_2150" data-name="Path 2150" d="M81.019,33.579l-.192.952H77.139v2.077h3.627l-.193.952H77.139v2.279h3.88l-.192.953H76.076V33.579Z" fill="#1d1d1b"/> <path id="Path_2151" data-name="Path 2151" d="M83.39,40.792H82.326V33.579h2.715a3.02,3.02,0,0,1,1.874.476,1.864,1.864,0,0,1,.608,1.56v.325a2.125,2.125,0,0,1-.35,1.291,1.8,1.8,0,0,1-1.078.643l1.762,2.918H86.621L85,37.976H83.39Zm3.069-5.045a2.246,2.246,0,0,0-.071-.623.728.728,0,0,0-.233-.37.911.911,0,0,0-.435-.177,4.165,4.165,0,0,0-.679-.046H83.39v2.492h1.651a4.294,4.294,0,0,0,.679-.045.9.9,0,0,0,.435-.183.756.756,0,0,0,.233-.375,2.246,2.246,0,0,0,.071-.623Z" fill="#1d1d1b"/> <path id="Path_2152" data-name="Path 2152" d="M89.883,33.579l3.718,5.44v-5.44h1.063v7.213H93.7L90,35.382v5.41H88.941V33.579Z" fill="#1d1d1b"/> <path id="Path_2153" data-name="Path 2153" d="M100.489,38.725H97.521l-.75,2.067H95.7l2.755-7.213h1.175l2.755,7.213h-1.134Zm-2.644-.912h2.31L99,34.653Z" fill="#1d1d1b"/> <path id="Path_2154" data-name="Path 2154" d="M109.079,33.579l-.193.952h-2.4v6.261h-1.064V34.531H102.89l.192-.952Z" fill="#1d1d1b"/> <path id="Path_2155" data-name="Path 2155" d="M111.227,33.579v7.213h-1.064V33.579Z" fill="#1d1d1b"/> <path id="Path_2156" data-name="Path 2156" d="M115.7,40.974a4.79,4.79,0,0,1-1.565-.213,2.054,2.054,0,0,1-.942-.633,2.336,2.336,0,0,1-.461-1.043,7.616,7.616,0,0,1-.122-1.444v-.922a7.558,7.558,0,0,1,.117-1.4,2.412,2.412,0,0,1,.451-1.048,2.08,2.08,0,0,1,.937-.659,4.587,4.587,0,0,1,1.585-.228,4.813,4.813,0,0,1,1.565.213,2.054,2.054,0,0,1,.942.633,2.334,2.334,0,0,1,.461,1.044,7.517,7.517,0,0,1,.122,1.443v.922a7.558,7.558,0,0,1-.117,1.4,2.4,2.4,0,0,1-.451,1.049,2.089,2.089,0,0,1-.936.658A4.577,4.577,0,0,1,115.7,40.974Zm0-.922a4.648,4.648,0,0,0,.988-.086,1.078,1.078,0,0,0,.6-.35,1.537,1.537,0,0,0,.3-.744,8,8,0,0,0,.08-1.271V36.76a7.909,7.909,0,0,0-.08-1.261,1.546,1.546,0,0,0-.3-.745,1.108,1.108,0,0,0-.6-.355,4.419,4.419,0,0,0-.988-.091,4.625,4.625,0,0,0-.987.086,1.077,1.077,0,0,0-.6.35,1.526,1.526,0,0,0-.3.745,7.96,7.96,0,0,0-.081,1.271V37.6a7.9,7.9,0,0,0,.081,1.261,1.518,1.518,0,0,0,.3.744,1.1,1.1,0,0,0,.6.355A4.339,4.339,0,0,0,115.7,40.052Z" fill="#1d1d1b"/> <path id="Path_2157" data-name="Path 2157" d="M121.124,33.579l3.718,5.44v-5.44H125.9v7.213h-.962l-3.7-5.41v5.41h-1.064V33.579Z" fill="#1d1d1b"/> <path id="Path_2158" data-name="Path 2158" d="M131.72,38.725h-2.968L128,40.792h-1.074l2.756-7.213h1.175l2.755,7.213H132.48Zm-2.644-.912h2.31l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2159" data-name="Path 2159" d="M135.711,33.579v6.26h3.657l-.192.953h-4.528V33.579Z" fill="#1d1d1b"/> </g> </g> </svg> </a> </li> <li> <a href="https://www.railwaygazette.com/metro-report"> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width="187.227" height="50.27" viewBox="0 0 187.227 50.27"> <g id="Group_1169" data-name="Group 1169" transform="translate(0.5)"> <rect id="Rectangle_1567" data-name="Rectangle 1567" width="187" height="50" transform="translate(-0.5 0.27)" fill="none"/> <g id="Group_1165" data-name="Group 1165"> <path id="Path_2267" data-name="Path 2267" d="M66.869,19.367,62.8,12.048V23.737H60.54V8.41h2.519l4.908,8.783L72.595,8.41h2.562V23.737H72.9V11.854l-4.025,7.512Z" fill="#1d1d1b"/> <path id="Path_2268" data-name="Path 2268" d="M79.806,19a8.97,8.97,0,0,0,.1,1.464,1.732,1.732,0,0,0,.387.883,1.511,1.511,0,0,0,.808.441,6.409,6.409,0,0,0,1.378.118h1.582q.957,0,2.486-.043l-.387,1.873c-.445.014-.826.025-1.141.032s-.607.011-.872.011H82.476a7.3,7.3,0,0,1-2.487-.355,3.5,3.5,0,0,1-1.507-1.012,3.567,3.567,0,0,1-.742-1.593,10.28,10.28,0,0,1-.194-2.077V17.537a10.787,10.787,0,0,1,.205-2.206,3.829,3.829,0,0,1,.753-1.658,3.464,3.464,0,0,1,1.529-1.043,7.383,7.383,0,0,1,2.55-.367,6.977,6.977,0,0,1,2.357.334,3.607,3.607,0,0,1,1.442.9,3.037,3.037,0,0,1,.722,1.313,6.086,6.086,0,0,1,.194,1.54v.322a6.8,6.8,0,0,1-.087,1.227,1.621,1.621,0,0,1-.279.7.885.885,0,0,1-.484.323,2.844,2.844,0,0,1-.7.075Zm2.67-4.951a5.9,5.9,0,0,0-1.378.129,1.47,1.47,0,0,0-.808.484,2.018,2.018,0,0,0-.387.98,10.976,10.976,0,0,0-.1,1.614h5.361v-.731a5.169,5.169,0,0,0-.119-1.195,1.458,1.458,0,0,0-.431-.764,1.833,1.833,0,0,0-.829-.4,6.086,6.086,0,0,0-1.312-.118" fill="#1d1d1b"/> <path id="Path_2269" data-name="Path 2269" d="M89.342,9.981,91.6,9.573v3.034h4.09l-.388,1.874H91.6v5.166a7.336,7.336,0,0,0,.075,1.162,1.334,1.334,0,0,0,.291.689,1.114,1.114,0,0,0,.613.323,4.947,4.947,0,0,0,1.022.086h1.96l-.388,1.83h-1.55a9.577,9.577,0,0,1-2.12-.194,2.765,2.765,0,0,1-1.314-.657,2.431,2.431,0,0,1-.667-1.237,8.619,8.619,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <path id="Path_2270" data-name="Path 2270" d="M97.221,23.737V16.116a4.037,4.037,0,0,1,.3-1.646,2.763,2.763,0,0,1,.851-1.1,3.569,3.569,0,0,1,1.323-.614,7.167,7.167,0,0,1,1.722-.193h1.593c.374,0,.682.007.926.021l-.387,1.873h-.216c-.129,0-.287,0-.473-.011s-.387-.01-.6-.01h-.624a3.961,3.961,0,0,0-1.185.14A1.289,1.289,0,0,0,99.8,15a1.405,1.405,0,0,0-.269.689,7.126,7.126,0,0,0-.054.925v7.126Z" fill="#1d1d1b"/> <path id="Path_2271" data-name="Path 2271" d="M110.179,12.263a9.859,9.859,0,0,1,2.38.248,3.435,3.435,0,0,1,1.6.861,3.615,3.615,0,0,1,.915,1.636,9.575,9.575,0,0,1,.291,2.572v1.184a9.578,9.578,0,0,1-.291,2.573,3.62,3.62,0,0,1-.915,1.636,3.435,3.435,0,0,1-1.6.861,11.58,11.58,0,0,1-4.758,0,3.434,3.434,0,0,1-1.6-.861,3.639,3.639,0,0,1-.915-1.636,9.622,9.622,0,0,1-.29-2.573V17.58a9.62,9.62,0,0,1,.29-2.572,3.634,3.634,0,0,1,.915-1.636,3.434,3.434,0,0,1,1.6-.861,9.841,9.841,0,0,1,2.378-.248m2.885,5.317a11.067,11.067,0,0,0-.118-1.819,2.16,2.16,0,0,0-.431-1.044,1.514,1.514,0,0,0-.871-.484,9.147,9.147,0,0,0-2.929,0,1.517,1.517,0,0,0-.871.484,2.15,2.15,0,0,0-.43,1.044,11.049,11.049,0,0,0-.119,1.819v1.184a11.055,11.055,0,0,0,.119,1.82,2.142,2.142,0,0,0,.43,1.043,1.513,1.513,0,0,0,.871.485,9.147,9.147,0,0,0,2.929,0,1.509,1.509,0,0,0,.871-.485,2.151,2.151,0,0,0,.431-1.043,11.072,11.072,0,0,0,.118-1.82Z" fill="#1d1d1b"/> <path id="Path_2272" data-name="Path 2272" d="M125.248,23.737h-2.261V8.41h5.77a6.429,6.429,0,0,1,3.983,1.012,3.96,3.96,0,0,1,1.291,3.315v.688a4.516,4.516,0,0,1-.743,2.745A3.82,3.82,0,0,1,131,17.538l3.745,6.2h-2.626l-3.444-5.985h-3.423Zm6.523-10.72a4.776,4.776,0,0,0-.151-1.324,1.56,1.56,0,0,0-.495-.786,1.963,1.963,0,0,0-.926-.377,9.068,9.068,0,0,0-1.442-.1h-3.509v5.3h3.509a8.938,8.938,0,0,0,1.442-.1,1.881,1.881,0,0,0,.926-.387,1.62,1.62,0,0,0,.495-.8,4.776,4.776,0,0,0,.151-1.324Z" fill="#1d1d1b"/> <path id="Path_2273" data-name="Path 2273" d="M138.271,19a8.971,8.971,0,0,0,.1,1.464,1.724,1.724,0,0,0,.387.883,1.511,1.511,0,0,0,.808.441,6.409,6.409,0,0,0,1.378.118h1.582q.959,0,2.486-.043l-.387,1.873c-.445.014-.826.025-1.141.032s-.607.011-.872.011h-1.668a7.286,7.286,0,0,1-2.486-.355,3.492,3.492,0,0,1-1.508-1.012,3.556,3.556,0,0,1-.742-1.593,10.28,10.28,0,0,1-.194-2.077V17.537a10.862,10.862,0,0,1,.2-2.206,3.841,3.841,0,0,1,.754-1.658A3.464,3.464,0,0,1,138.5,12.63a7.379,7.379,0,0,1,2.55-.367,6.977,6.977,0,0,1,2.357.334,3.606,3.606,0,0,1,1.442.9,3.036,3.036,0,0,1,.722,1.313,6.086,6.086,0,0,1,.194,1.54v.322a6.8,6.8,0,0,1-.087,1.227,1.621,1.621,0,0,1-.28.7.878.878,0,0,1-.484.323,2.833,2.833,0,0,1-.7.075Zm2.67-4.951a5.9,5.9,0,0,0-1.378.129,1.47,1.47,0,0,0-.808.484,2.008,2.008,0,0,0-.387.98,10.977,10.977,0,0,0-.1,1.614h5.36v-.731a5.175,5.175,0,0,0-.118-1.195,1.458,1.458,0,0,0-.431-.764,1.833,1.833,0,0,0-.829-.4,6.086,6.086,0,0,0-1.312-.118" fill="#1d1d1b"/> <path id="Path_2274" data-name="Path 2274" d="M152.952,12.264a9.615,9.615,0,0,1,2.347.247,3.3,3.3,0,0,1,1.581.872,3.681,3.681,0,0,1,.894,1.668,10.426,10.426,0,0,1,.28,2.637v.969a11.512,11.512,0,0,1-.226,2.443,3.746,3.746,0,0,1-.8,1.679,3.4,3.4,0,0,1-1.56.979,8.332,8.332,0,0,1-2.54.323,5.167,5.167,0,0,1-1.712-.247,3.337,3.337,0,0,1-1.13-.635V27.5h-2.282V17.58a9.466,9.466,0,0,1,.291-2.55,3.628,3.628,0,0,1,.915-1.636,3.51,3.51,0,0,1,1.593-.873,9.223,9.223,0,0,1,2.346-.257m-.021,9.966a6.581,6.581,0,0,0,1.453-.129,1.508,1.508,0,0,0,.86-.517,2.188,2.188,0,0,0,.41-1.087,14.072,14.072,0,0,0,.1-1.84v-.969a13.072,13.072,0,0,0-.108-1.883,2.189,2.189,0,0,0-.42-1.077,1.484,1.484,0,0,0-.861-.495,8.6,8.6,0,0,0-2.852,0,1.576,1.576,0,0,0-.883.484,2.093,2.093,0,0,0-.441,1.044,11.04,11.04,0,0,0-.119,1.819v1.528a7.557,7.557,0,0,0,.13,1.551,2.021,2.021,0,0,0,.452.958,1.661,1.661,0,0,0,.882.484,6.371,6.371,0,0,0,1.4.129" fill="#1d1d1b"/> <path id="Path_2275" data-name="Path 2275" d="M165.071,12.263a9.844,9.844,0,0,1,2.379.248,3.439,3.439,0,0,1,1.6.861,3.623,3.623,0,0,1,.914,1.636,9.535,9.535,0,0,1,.291,2.572v1.184a9.537,9.537,0,0,1-.291,2.573,3.628,3.628,0,0,1-.914,1.636,3.439,3.439,0,0,1-1.6.861,11.575,11.575,0,0,1-4.757,0,3.429,3.429,0,0,1-1.6-.861,3.639,3.639,0,0,1-.915-1.636,9.623,9.623,0,0,1-.29-2.573V17.58a9.62,9.62,0,0,1,.29-2.572,3.634,3.634,0,0,1,.915-1.636,3.429,3.429,0,0,1,1.6-.861,9.835,9.835,0,0,1,2.378-.248m2.885,5.317a11.18,11.18,0,0,0-.118-1.819,2.16,2.16,0,0,0-.431-1.044,1.52,1.52,0,0,0-.872-.484,9.141,9.141,0,0,0-2.928,0,1.517,1.517,0,0,0-.871.484,2.15,2.15,0,0,0-.431,1.044,11.051,11.051,0,0,0-.119,1.819v1.184a11.056,11.056,0,0,0,.119,1.82,2.142,2.142,0,0,0,.431,1.043,1.513,1.513,0,0,0,.871.485,9.141,9.141,0,0,0,2.928,0,1.515,1.515,0,0,0,.872-.485,2.151,2.151,0,0,0,.431-1.043,11.185,11.185,0,0,0,.118-1.82Z" fill="#1d1d1b"/> <path id="Path_2276" data-name="Path 2276" d="M172.347,23.737V16.116a4.037,4.037,0,0,1,.3-1.646,2.772,2.772,0,0,1,.851-1.1,3.574,3.574,0,0,1,1.324-.614,7.155,7.155,0,0,1,1.722-.193h1.593q.56,0,.925.021l-.387,1.873h-.215c-.129,0-.288,0-.474-.011s-.388-.01-.6-.01h-.624a3.944,3.944,0,0,0-1.184.14,1.287,1.287,0,0,0-.646.419,1.415,1.415,0,0,0-.269.689,7.127,7.127,0,0,0-.054.925v7.126Z" fill="#1d1d1b"/> <path id="Path_2277" data-name="Path 2277" d="M180.376,9.981l2.26-.408v3.034h4.091l-.388,1.874h-3.7v5.166a7.2,7.2,0,0,0,.076,1.162,1.334,1.334,0,0,0,.29.689,1.121,1.121,0,0,0,.613.323,4.95,4.95,0,0,0,1.023.086H186.6l-.387,1.83h-1.55a9.57,9.57,0,0,1-2.12-.194,2.761,2.761,0,0,1-1.314-.657,2.431,2.431,0,0,1-.667-1.237,8.618,8.618,0,0,1-.183-1.938Z" fill="#1d1d1b"/> <rect id="Rectangle_1568" data-name="Rectangle 1568" width="1.064" height="7.213" transform="translate(60.34 31.361)" fill="#1d1d1b"/> <path id="Path_2278" data-name="Path 2278" d="M63.956,31.361l3.718,5.44v-5.44h1.064v7.213h-.963l-3.7-5.41v5.41H63.014V31.361Z" fill="#1d1d1b"/> <path id="Path_2279" data-name="Path 2279" d="M76.011,31.361l-.193.952h-2.4v6.26H72.354v-6.26H69.821l.192-.952Z" fill="#1d1d1b"/> <path id="Path_2280" data-name="Path 2280" d="M82.038,31.361l-.193.952H78.158V34.39h3.627l-.192.952H78.158v2.279h3.88l-.193.952H77.094V31.361Z" fill="#1d1d1b"/> <path id="Path_2281" data-name="Path 2281" d="M84.418,38.573H83.355V31.361h2.714a3.03,3.03,0,0,1,1.875.476,1.863,1.863,0,0,1,.607,1.56v.324a2.126,2.126,0,0,1-.349,1.292,1.8,1.8,0,0,1-1.079.643l1.763,2.917H87.65l-1.621-2.815H84.418Zm3.07-5.044a2.251,2.251,0,0,0-.071-.623.734.734,0,0,0-.233-.37.925.925,0,0,0-.436-.177,4.271,4.271,0,0,0-.679-.046H84.418v2.492h1.651a4.156,4.156,0,0,0,.679-.046.88.88,0,0,0,.436-.182.763.763,0,0,0,.233-.375,2.241,2.241,0,0,0,.071-.623Z" fill="#1d1d1b"/> <path id="Path_2282" data-name="Path 2282" d="M90.912,31.361l3.718,5.44v-5.44h1.064v7.213H94.73l-3.7-5.41v5.41H89.969V31.361Z" fill="#1d1d1b"/> <path id="Path_2283" data-name="Path 2283" d="M101.517,36.507H98.549L97.8,38.574H96.726l2.755-7.213h1.176l2.755,7.213h-1.135ZM98.874,35.6h2.31l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2284" data-name="Path 2284" d="M110.108,31.361l-.193.952h-2.4v6.26h-1.064v-6.26h-2.533l.192-.952Z" fill="#1d1d1b"/> <rect id="Rectangle_1569" data-name="Rectangle 1569" width="1.064" height="7.213" transform="translate(111.192 31.361)" fill="#1d1d1b"/> <path id="Path_2285" data-name="Path 2285" d="M116.733,38.756a4.782,4.782,0,0,1-1.565-.213,2.054,2.054,0,0,1-.942-.633,2.341,2.341,0,0,1-.461-1.043,7.609,7.609,0,0,1-.122-1.444V34.5a7.55,7.55,0,0,1,.117-1.4,2.4,2.4,0,0,1,.45-1.049,2.082,2.082,0,0,1,.937-.658,4.547,4.547,0,0,1,1.586-.229,4.79,4.79,0,0,1,1.565.213,2.054,2.054,0,0,1,.942.633,2.35,2.35,0,0,1,.461,1.044,7.608,7.608,0,0,1,.121,1.444v.921a7.564,7.564,0,0,1-.116,1.4,2.41,2.41,0,0,1-.45,1.049,2.1,2.1,0,0,1-.938.658,4.563,4.563,0,0,1-1.585.228m0-.922a4.632,4.632,0,0,0,.987-.086,1.077,1.077,0,0,0,.6-.349,1.526,1.526,0,0,0,.3-.745,7.978,7.978,0,0,0,.081-1.271v-.841a7.892,7.892,0,0,0-.081-1.261,1.526,1.526,0,0,0-.3-.745,1.1,1.1,0,0,0-.6-.355,4.411,4.411,0,0,0-.987-.09,4.577,4.577,0,0,0-.988.086,1.071,1.071,0,0,0-.6.349,1.532,1.532,0,0,0-.3.744,8.132,8.132,0,0,0-.08,1.272v.841a8.021,8.021,0,0,0,.08,1.261,1.532,1.532,0,0,0,.3.744,1.1,1.1,0,0,0,.6.355,4.355,4.355,0,0,0,.988.091" fill="#1d1d1b"/> <path id="Path_2286" data-name="Path 2286" d="M122.152,31.361l3.718,5.44v-5.44h1.064v7.213h-.963l-3.7-5.41v5.41H121.21V31.361Z" fill="#1d1d1b"/> <path id="Path_2287" data-name="Path 2287" d="M132.759,36.507h-2.968l-.75,2.067h-1.074l2.756-7.213H131.9l2.756,7.213h-1.134Zm-2.644-.912h2.309l-1.155-3.16Z" fill="#1d1d1b"/> <path id="Path_2288" data-name="Path 2288" d="M136.75,31.361v6.26h3.657l-.192.952h-4.528V31.361Z" fill="#1d1d1b"/> <path id="Path_2289" data-name="Path 2289" d="M25.273,0a25,25,0,1,0,6.2,49.224V29.946h-.016V13.633a3.2,3.2,0,0,0-3.193-3.193H25.053a3.2,3.2,0,0,0-3.193,3.193V35.165H19.327V29.958h0V13.644a3.2,3.2,0,0,0-3.193-3.193h-3.21a3.2,3.2,0,0,0-3.193,3.193V35.168H7.2V13.644a5.731,5.731,0,0,1,5.725-5.725h3.21a5.712,5.712,0,0,1,4.456,2.139,5.718,5.718,0,0,1,4.466-2.151h3.209a5.712,5.712,0,0,1,4.552,2.267,5.712,5.712,0,0,1,4.379-2.046h5.418V10.66H37.193A3.194,3.194,0,0,0,34,13.85V48.43A25,25,0,0,0,25.273,0" fill="#009254"/> </g> </g> </svg> </a> </li> <li> <a href="https://www.railwaygazette.com/uk"> <svg id="rail_business_uk_small" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="219" height="50" viewBox="0 0 219 50"> <rect id="Rectangle_1554" data-name="Rectangle 1554" width="219" height="50" fill="#fff"/> <g id="Group_1157" data-name="Group 1157"> <path id="Path_2160" data-name="Path 2160" d="M62.156,31.85H59.9V16.523h5.769a6.425,6.425,0,0,1,3.983,1.012,3.956,3.956,0,0,1,1.291,3.314v.69a4.513,4.513,0,0,1-.742,2.744A3.809,3.809,0,0,1,67.9,25.65l3.746,6.2H69.023l-3.445-5.985H62.156Zm6.522-10.72a4.738,4.738,0,0,0-.151-1.324,1.542,1.542,0,0,0-.5-.786,1.949,1.949,0,0,0-.925-.377,9.082,9.082,0,0,0-1.443-.1H62.156v5.295h3.508a8.952,8.952,0,0,0,1.443-.1,1.886,1.886,0,0,0,.925-.387,1.606,1.606,0,0,0,.5-.8,4.738,4.738,0,0,0,.151-1.324Z" fill="#1d1d1b"/> <path id="Path_2161" data-name="Path 2161" d="M82.111,30a1.833,1.833,0,0,1-.473,1.442,2.694,2.694,0,0,1-1.723.409H76.686a5.017,5.017,0,0,1-3.24-.829,3.073,3.073,0,0,1-.979-2.486v-.474a2.975,2.975,0,0,1,1.066-2.582,5.694,5.694,0,0,1,3.325-.775,7.836,7.836,0,0,1,2.024.2,3.773,3.773,0,0,1,1.077.441V24.7a5.114,5.114,0,0,0-.076-.937,1.186,1.186,0,0,0-.366-.667,1.9,1.9,0,0,0-.84-.409,6.273,6.273,0,0,0-1.5-.14q-.9,0-1.927.01t-1.755.032l.409-1.872q.6-.021,1.486-.032t1.787-.011a6.139,6.139,0,0,1,3.767.914,3.235,3.235,0,0,1,1.162,2.7Zm-7.534-1.485a1.385,1.385,0,0,0,.452,1.129,2.662,2.662,0,0,0,1.657.377h3.273V28.04a2.616,2.616,0,0,0-.087-.71.871.871,0,0,0-.344-.485,1.88,1.88,0,0,0-.753-.269,8.055,8.055,0,0,0-1.314-.086h-.494a7.674,7.674,0,0,0-1.174.075,1.827,1.827,0,0,0-.732.259.967.967,0,0,0-.377.484,2.262,2.262,0,0,0-.107.753Z" fill="#1d1d1b"/> <path id="Path_2162" data-name="Path 2162" d="M87,17.427a1.493,1.493,0,0,1-.334,1.087,1.937,1.937,0,0,1-2.175,0,1.489,1.489,0,0,1-.333-1.087,1.492,1.492,0,0,1,.333-1.087,1.937,1.937,0,0,1,2.175,0A1.5,1.5,0,0,1,87,17.427m-2.541,3.294h2.261V31.85H84.457Z" fill="#1d1d1b"/> <rect id="Rectangle_1555" data-name="Rectangle 1555" width="2.26" height="15.995" transform="translate(89.064 15.856)" fill="#1d1d1b"/> <path id="Path_2163" data-name="Path 2163" d="M99.2,16.523h6.243a5.278,5.278,0,0,1,3.467.926,3.607,3.607,0,0,1,1.075,2.884V20.5a3.957,3.957,0,0,1-.494,2.056,2.9,2.9,0,0,1-1.615,1.217,3.258,3.258,0,0,1,1.841,1.172,3.8,3.8,0,0,1,.7,2.4V27.7a3.707,3.707,0,0,1-1.313,3.164,5.849,5.849,0,0,1-3.6.991H99.2Zm8.482,3.854a1.762,1.762,0,0,0-.528-1.443,2.712,2.712,0,0,0-1.711-.431h-3.982v4.37h3.724a2.809,2.809,0,0,0,1.926-.527,2.172,2.172,0,0,0,.571-1.668Zm-6.221,9.493h4.047a2.985,2.985,0,0,0,1.97-.506,2.329,2.329,0,0,0,.569-1.8v-.279a2.426,2.426,0,0,0-.613-1.894,3.189,3.189,0,0,0-2.1-.539h-3.875Z" fill="#1d1d1b"/> <path id="Path_2164" data-name="Path 2164" d="M117.157,32.195a6.646,6.646,0,0,1-3.66-.818,3.112,3.112,0,0,1-1.227-2.8V20.72h2.261v7.406a6.14,6.14,0,0,0,.064.947,1.3,1.3,0,0,0,.322.69,1.616,1.616,0,0,0,.786.419,5.949,5.949,0,0,0,1.454.14,5.8,5.8,0,0,0,1.442-.14,1.6,1.6,0,0,0,.775-.419,1.283,1.283,0,0,0,.323-.69,6.13,6.13,0,0,0,.065-.947V20.72h2.26v7.859a3.112,3.112,0,0,1-1.227,2.8,6.6,6.6,0,0,1-3.638.818" fill="#1d1d1b"/> <path id="Path_2165" data-name="Path 2165" d="M130.245,25.285a4.248,4.248,0,0,1,1.571.4,2.5,2.5,0,0,1,1.367,1.7,4.3,4.3,0,0,1,.119.98v.3a2.836,2.836,0,0,1-1.1,2.379,5.494,5.494,0,0,1-3.379.85q-.969,0-2.25-.011T124,31.85l.387-1.872q1.163.021,2.368.032t2.175.01a3.625,3.625,0,0,0,1.712-.279,1.18,1.18,0,0,0,.462-1.1,2.074,2.074,0,0,0-.054-.484.875.875,0,0,0-.215-.4,1.263,1.263,0,0,0-.464-.291,2.975,2.975,0,0,0-.817-.16l-2.584-.238a3.817,3.817,0,0,1-1.355-.333,2.74,2.74,0,0,1-.9-.668,2.565,2.565,0,0,1-.5-.893,3.232,3.232,0,0,1-.162-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.243,5.243,0,0,1,3.315-.829h2.153q1.119,0,2.519.043l-.388,1.873c-.6-.014-1.134-.025-1.593-.033s-.866-.01-1.216-.01h-1.712a3.1,3.1,0,0,0-1.528.268,1.04,1.04,0,0,0-.431.959,2.029,2.029,0,0,0,.054.494.731.731,0,0,0,.215.366,1.325,1.325,0,0,0,.474.259,3.463,3.463,0,0,0,.829.15Z" fill="#1d1d1b"/> <path id="Path_2166" data-name="Path 2166" d="M137.931,17.427a1.493,1.493,0,0,1-.334,1.087,1.937,1.937,0,0,1-2.175,0,1.493,1.493,0,0,1-.334-1.087,1.5,1.5,0,0,1,.334-1.087,1.937,1.937,0,0,1,2.175,0,1.5,1.5,0,0,1,.334,1.087m-2.541,3.294h2.26V31.85h-2.26Z" fill="#1d1d1b"/> <path id="Path_2167" data-name="Path 2167" d="M140,31.85V23.993a3.157,3.157,0,0,1,1.2-2.778,8.733,8.733,0,0,1,7.47,0,3.159,3.159,0,0,1,1.194,2.778V31.85H147.6V24.445a6.149,6.149,0,0,0-.064-.947,1.29,1.29,0,0,0-.322-.689,1.621,1.621,0,0,0-.8-.42,8.007,8.007,0,0,0-2.971,0,1.617,1.617,0,0,0-.8.42,1.284,1.284,0,0,0-.323.689,6.149,6.149,0,0,0-.064.947V31.85Z" fill="#1d1d1b"/> <path id="Path_2168" data-name="Path 2168" d="M154.2,27.115a8.854,8.854,0,0,0,.1,1.463,1.733,1.733,0,0,0,.387.882,1.508,1.508,0,0,0,.807.443,6.484,6.484,0,0,0,1.378.117h1.582q.958,0,2.487-.042l-.387,1.872q-.669.021-1.141.032c-.317.008-.607.012-.872.012h-1.669a7.29,7.29,0,0,1-2.486-.355,3.5,3.5,0,0,1-1.507-1.012,3.55,3.55,0,0,1-.742-1.593,10.225,10.225,0,0,1-.194-2.078V25.65a10.869,10.869,0,0,1,.2-2.206,3.83,3.83,0,0,1,.754-1.658,3.471,3.471,0,0,1,1.528-1.044,7.44,7.44,0,0,1,2.551-.366,7,7,0,0,1,2.357.334,3.611,3.611,0,0,1,1.443.9,3.027,3.027,0,0,1,.721,1.314,6.072,6.072,0,0,1,.193,1.539v.322a6.9,6.9,0,0,1-.086,1.227,1.628,1.628,0,0,1-.279.7.882.882,0,0,1-.485.323,2.782,2.782,0,0,1-.7.076Zm2.669-4.952a5.838,5.838,0,0,0-1.378.13,1.464,1.464,0,0,0-.807.483,2.023,2.023,0,0,0-.387.98,10.863,10.863,0,0,0-.1,1.615h5.361v-.733a5.112,5.112,0,0,0-.119-1.194,1.462,1.462,0,0,0-.431-.764,1.833,1.833,0,0,0-.828-.4,5.973,5.973,0,0,0-1.314-.119" fill="#1d1d1b"/> <path id="Path_2169" data-name="Path 2169" d="M169.617,25.285a4.254,4.254,0,0,1,1.572.4,2.5,2.5,0,0,1,1.367,1.7,4.353,4.353,0,0,1,.118.98v.3a2.835,2.835,0,0,1-1.1,2.379,5.5,5.5,0,0,1-3.38.85q-.968,0-2.249-.011t-2.573-.032l.388-1.872q1.163.021,2.368.032t2.174.01a3.62,3.62,0,0,0,1.712-.279,1.18,1.18,0,0,0,.463-1.1,2.073,2.073,0,0,0-.055-.484.857.857,0,0,0-.215-.4,1.258,1.258,0,0,0-.463-.291,2.983,2.983,0,0,0-.817-.16l-2.584-.238a3.823,3.823,0,0,1-1.356-.333,2.735,2.735,0,0,1-.9-.668,2.583,2.583,0,0,1-.506-.893,3.232,3.232,0,0,1-.162-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.246,5.246,0,0,1,3.316-.829H169.9q1.118,0,2.518.043l-.388,1.873c-.6-.014-1.133-.025-1.593-.033s-.865-.01-1.216-.01h-1.711a3.1,3.1,0,0,0-1.529.268,1.042,1.042,0,0,0-.43.959,2.032,2.032,0,0,0,.053.494.723.723,0,0,0,.215.366,1.339,1.339,0,0,0,.475.259,3.464,3.464,0,0,0,.828.15Z" fill="#1d1d1b"/> <path id="Path_2170" data-name="Path 2170" d="M180.639,25.285a4.248,4.248,0,0,1,1.572.4,2.5,2.5,0,0,1,1.367,1.7,4.356,4.356,0,0,1,.119.98v.3a2.838,2.838,0,0,1-1.1,2.379,5.5,5.5,0,0,1-3.38.85q-.968,0-2.249-.011T174.4,31.85l.388-1.872q1.163.021,2.368.032c.8.007,1.529.01,2.174.01a3.62,3.62,0,0,0,1.712-.279,1.18,1.18,0,0,0,.463-1.1,2.021,2.021,0,0,0-.055-.484.857.857,0,0,0-.215-.4,1.258,1.258,0,0,0-.463-.291,2.983,2.983,0,0,0-.817-.16l-2.584-.238a3.823,3.823,0,0,1-1.356-.333,2.746,2.746,0,0,1-.9-.668,2.583,2.583,0,0,1-.506-.893,3.231,3.231,0,0,1-.161-1.012V23.8a2.8,2.8,0,0,1,1.012-2.292,5.241,5.241,0,0,1,3.315-.829h2.153q1.119,0,2.518.043l-.388,1.873c-.6-.014-1.133-.025-1.593-.033s-.865-.01-1.216-.01H178.53a3.1,3.1,0,0,0-1.529.268,1.042,1.042,0,0,0-.43.959,2.033,2.033,0,0,0,.053.494.731.731,0,0,0,.215.366,1.339,1.339,0,0,0,.475.259,3.454,3.454,0,0,0,.828.15Z" fill="#1d1d1b"/> <path id="Path_2171" data-name="Path 2171" d="M197.086,32.238a8.758,8.758,0,0,1-3-.43,3.951,3.951,0,0,1-1.8-1.271,4.824,4.824,0,0,1-.882-2.067,14.833,14.833,0,0,1-.238-2.8V16.523h2.262v9.192a13.888,13.888,0,0,0,.149,2.239,3.052,3.052,0,0,0,.561,1.4,2.133,2.133,0,0,0,1.119.721,8.271,8.271,0,0,0,3.66,0,2.137,2.137,0,0,0,1.119-.721,3.029,3.029,0,0,0,.559-1.4,13.631,13.631,0,0,0,.151-2.239V16.523h2.261v9.149a14.838,14.838,0,0,1-.237,2.8,4.837,4.837,0,0,1-.882,2.067,3.948,3.948,0,0,1-1.809,1.271,8.776,8.776,0,0,1-2.992.43" fill="#1d1d1b"/> <path id="Path_2172" data-name="Path 2172" d="M208.065,23.239l6.5-6.716h2.69L210.3,23.777l7.706,8.073h-3.122l-6.824-7.212V31.85H205.8V16.523h2.26Z" fill="#1d1d1b"/> <path id="Path_2173" data-name="Path 2173" d="M30.4,35.675h3.825a2.923,2.923,0,0,0,2.92-2.92V16.178a2.924,2.924,0,0,0-2.92-2.921H27.5V32.78h-.021a2.922,2.922,0,0,0,2.919,2.9" fill="#e8aa00"/> <path id="Path_2174" data-name="Path 2174" d="M27.5.124V10.741h6.723a5.444,5.444,0,0,1,5.436,5.437V32.755a5.443,5.443,0,0,1-5.436,5.436H30.4a5.442,5.442,0,0,1-5.434-5.412H24.95V13.325H15.625a3.222,3.222,0,0,0-3.179,3.257v21.6H9.891v-21.6a5.779,5.779,0,0,1,5.734-5.811H24.95V0A24.983,24.983,0,1,0,27.5.124" fill="#e8aa00"/> </g> </svg> </a> </li> </ul> </div> <!-- <div class="footerSocial"> <span class="footerSocialText">Connect with us</span> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook/railwaygazette" title="Connect with us on Facebook"></a> </li> <li class="footerSocialTwitter"> <a href="https://www.twitter.com/railwaygazette" title="Connect with us on Twitter"></a> </li> <li class="footerSocialLinkedin"> <a href="https://www.linkedin.com/company/railway-gazette-international" title="Connect with us on Linked in"></a> </li> <li class="footerSocialInstagram"> <a href="https://www.instagram.com/railwaygazette" title="Connect with us on Instagram"></a> </li> <li class="footerSocialYoutube"> <a href="https://www.youtube.com/railwaygazette" title="Connect with us on Youtube"></a> </li> <li class="footerSocialRSS"> <a href="#" title="RSS"></a> </li> </ul> </div> --> </div> </div> <div class="container bottomNav"><div class="inner-sleeve"><ul><li class="first"><a href="https://www.railwaygazette.com/contact-us">Contact us</a></li><li><a href="https://www.railwaygazette.com/about-us">About us</a></li><li><a href="https://www.railwaygazette.com/advertising">Advertising</a></li><li><a href="https://account.railwaygazette.com/register" class="newWindow">Register</a></li><li><a href="https://www.railwaygazette.com/subscriptions?campaigncode=rgsubusernav">Subscribe</a></li><li><a href="https://www.railwaygazette.com/terms-and-conditions">Terms and Conditions</a></li><li><a href="https://www.railwaygazette.com/54152.article">Cookie Policy</a></li><li><a href="https://www.dvvmediainternational.com/policies1/privacy-policy/" class="newWindow">Privacy Policy</a></li><li><a href="https://www.railwaygazette.com/topics-a-z">Topics A-Z</a></li><li><a href="https://www.railwaygazette.com/archive-by-date">Archive (by date)</a></li><li class="last"><a href="https://www.dvvmediainternational.com/" class="newWindow">© DVV Media International Ltd</a></li></ul></div></div> <div class="bottom"> <div class="container footerBottomNavPageText"> <div class="inner-sleeve"> <div class="footerSocial"> <span class="footerSocialText"><strong>Follow</strong> Railway Gazette on social media</span> <ul> <li class="footerSocialFacebook"> <a href="https://www.facebook.com/railwaygazette/" rel="noopener noreferrer" target="_blank" title="Connect with Railway Gazette on Facebook"></a> </li> <li class="footerSocialTwitter"> <a href="https://twitter.com/railwaygazette" rel="noopener noreferrer" target="_blank" title="Follow Railway Gazette on Twitter"></a> </li> <li class="footerSocialLinkedin"> <a href="https://www.linkedin.com/company/railway-gazette-international/" rel="noopener noreferrer" target="_blank" title="Connect with Railway Gazette on LinkedIn"></a> </li> <li class="footerSocialInstagram"> <a href="https://www.instagram.com/railwaygazette/" rel="noopener noreferrer" target="_blank" title="Connect with us on Instagram"></a> </li> </ul> </div> <p class="webvision">Site powered by <a href="https://www.abacusemedia.com/webvisioncloud">Webvision Cloud</a></p> </div> </div> </div> </div> </div> </div> <script src="/Magazine/core.js?p=7513768095036817" defer></script> <!-- AD Renewals Script - Start --> <script type="text/javascript"> (function(d, s) { var config = { baseUrl:'account.railwaygazette.com', partyId: 0 }; var cacheDate = new Date(); cacheDate.setHours(0,0,0,0); var _abacus_ = d.createElement('script'); _abacus_.type = 'text/javascript'; _abacus_.async = true; _abacus_.src = ('https:' == d.location.protocol ? 'https://' : 'http://') + config.baseUrl + '/templatejs?partyId=' + config.partyId + '&cacheDate=' + cacheDate.getTime(); var sc = d.getElementsByTagName(s)[0]; sc.parentNode.insertBefore(_abacus_, sc); })(document, 'script'); </script> <!-- AD Renewals Script - End --> <script type="application/ld+json">{ "@context": "https://schema.org", "@type": "Article", "description": "USA: Class I railroad Norfolk Southern Corp is to convert two diesel prime movers to hybrid operation through a partnership with Alstom.", "image": "https://d1c4d7gnm6as1q.cloudfront.net/Pictures/2000xAny/7/7/5/68775_usnorfolksouthernns999_11_3_09_88792.jpg", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.railwaygazette.com/traction-and-rolling-stock/norfolk-southern-revives-battery-traction-ambitions-with-alstom-partnership/67869.article" }, "author": { "@type": "Person", "name": "Railway Gazette International" }, "dateCreated": "2024-11-22", "dateModified": "2024-11-22", "datePublished": "2024-11-22", "hasPart": { "@type": "WebPageElement", "isAccessibleForFree": false, "cssSelector": ".restrictedcontent" }, "headline": "Norfolk Southern revives battery traction ambitions with Alstom partnership", "isAccessibleForFree": false, "publisher": { "@type": "Organization", "name": "Railway Gazette International", "logo": { "@type": "ImageObject", "url": "https://www.railwaygazette.com/magazine/dest/graphics/logo/logo.png" } } }</script> </body> </html>