CINXE.COM
Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems | Tender | 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"> <!-- 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>Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems | Tender | Railway Gazette International</title> <meta name="description" content="Organisation: Israel Railways Ltd.Location: Israel" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="momentnowdate" content="2024-11-23 20:11:04.911"/> <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="Tue, 06 Aug 2024 10:47 GMT" /> <link rel="canonical" href="https://www.railwaygazette.com/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article" /> <meta name="blockthis" content="blockGA" /> <meta name="showwallpaper" content="true" /> <meta name="navcode" content="349" /> <meta name="primarynavigation" content="Tenders & Jobs" /> <meta property="og:title" content="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" /> <meta property="og:type" content="Article" /> <meta property="og:url" content="https://www.railwaygazette.com/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article" /> <meta property="og:site_name" content="Railway Gazette International" /> <meta property="og:description" content="Organisation: Israel Railways Ltd.Location: Israel" /> <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/5/4/3/66543_israelrailwayslogo_537720.png" /> <meta property="og:image:alt" content="Israel Railways logo" /> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:title" content="Request for Information (RFI) For Train Timetable Planning, Train ..." /> <meta property="twitter:description" content="Organisation: Israel Railways Ltd.Location: Israel" /> <meta property="twitter:image:src" content="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/1120xAny/5/4/3/66543_israelrailwayslogo_537720.png" /> <meta property="twitter:image:alt" content="Israel Railways logo" /> <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':'67065'}); window.dataLayer.push({'StoryFormatProperty':'O'}); window.dataLayer.push({'StoryCategories':'|Tenders|Tenders & Jobs|'}); 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':'1030'}); window.dataLayer.push({'StoryCategoriesCodes':'|278|2013|'}); window.dataLayer.push({'StoryFullNavPath':'|1|349|'}); window.dataLayer.push({'UserID':undefined}); window.dataLayer.push({'NavCode':'349'}); window.dataLayer.push({'MicrositeNavCode':'-1'}); window.dataLayer.push({'NavKey':'103'}); window.dataLayer.push({'NavigationAreaNavCode':'349'}); </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|349|'}); window.dataLayer.push({'Content Title':'Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems | Tender'}); 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':'Tender'}); window.dataLayer.push({'Headline':'Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems'}); window.dataLayer.push({'LongHeadline':undefined}); window.dataLayer.push({'Intro':'Organisation: Israel Railways Ltd.Location: Israel'}); 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|Tenders & Jobs|'}); window.dataLayer.push({'PrimaryNavCurrent':'Tenders & Jobs'}); window.dataLayer.push({'PrimaryNavCodeCurrent':'349'}); window.dataLayer.push({'CategoryCodes':'|278|2013|'}); window.dataLayer.push({'Tags':'|tenderpast|'}); window.dataLayer.push({'Bylines':undefined}); window.dataLayer.push({'IssueDate':'01-08-2024'}); window.dataLayer.push({'IssueDateTime':'01-08-2024 00:00:00'}); window.dataLayer.push({'PublishDate':'06-08-2024'}); window.dataLayer.push({'PublishDateTime':'06-08-2024 10:47: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-1030 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="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="current 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/tenders-and-jobs">Tenders & Jobs</a></div> <div class="story_title"> <h1>Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems</h1> </div> </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/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article' data-share-title="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" 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/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article' data-share-title="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" 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/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article' data-share-title="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" 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/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article' data-share-title="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" 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%2ftenders-and-jobs%2frequest-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems%2f67065.article&e=Request+for+Information+(RFI)+For+Train+Timetable+Planning%2c+Train+Scheduling%2c+and+Employee+Appointment+Systems" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=Request+for+Information+(RFI)+For+Train+Timetable+Planning%2c+Train+Scheduling%2c+and+Employee+Appointment+Systems&url=https%3a%2f%2fwww.railwaygazette.com%2ftenders-and-jobs%2frequest-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems%2f67065.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%2ftenders-and-jobs%2frequest-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems%2f67065.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems&body=https://www.railwaygazette.com/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.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="/67065/bookmark"> </li> </ul> </div> <div class="articleWrapper"> <div class="articleContent"> <div class="storytext"><div class="factfile"> <div class="inline_image inline_image_right image_size_small" data-attachment="55444" data-sequence="1"> <p class="picture"><img alt="Israel Railways logo" src="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280xAny/4/4/4/55444_israelrailwayslogo_537720.png" srcset="https://d1c4d7gnm6as1q.cloudfront.net/Pictures/280xAny/4/4/4/55444_israelrailwayslogo_537720.png 280w" loading="lazy" class="lazyloaded" width="275" height="183"></p> </div> <p><strong>Organisation</strong>: Israel Railways Ltd.<br><strong>Location</strong>: Israel<strong><br></strong></p> <p> </p> </div> <p>Israel Railways Ltd. (“<strong>ISR</strong>”), in accordance with its obligations under the Israeli Mandatory Tender Laws and its implementing regulations and the International Agreement on Government Procurement, wishes to obtain Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems.</p> <p><strong>1. </strong>RFI Documents are available for review and download at ISR’s website at the following address: <a class="external" href="https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftender.rail.co.il%2F&data=05%7C02%7Cdeanl%40rail.co.il%7Ce431c1a8c7514609374c08dcb5089b15%7C6a7f95029cc44fb7818ba347c8495690%7C0%7C0%7C638584295771190864%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=qftxrJ08Az3JONJhybB%2FHZgWMYMSOamT18CvQQZLPTY%3D&reserved=0" target="_blank" rel="sponsored nofollow noopener noreferrer">https://tender.rail.co.il/</a>.</p> <p><strong>2. </strong>Any <strong><span style="text-decoration: underline;">Request for Clarifications</span></strong> should be addressed <span style="text-decoration: underline;">in writing only</span> to Mr. Dean S. Lipkin, International Procurement and Contracting Coordinator, no later than <strong><span style="text-decoration: underline;">August 28, 2024</span></strong>, by e-mail: <a class="external" href="mailto:deanl@rail.co.il" target="_blank" rel="sponsored nofollow noopener noreferrer">deanl@rail.co.il</a>. Bidders shall be responsible for verifying receipt by ISR of Requests for Clarification.</p> <p><strong>3. </strong><strong>The response to the RFI must be submitted to the e-mail address of International Procurement and Contracting coordinator, Mr. Dean S. Lipkin at </strong><a class="external" href="mailto:DeanL@rail.co.il" target="_blank" rel="sponsored nofollow noopener noreferrer"><strong>DeanL@rail.co.il</strong></a><strong> </strong><strong><span style="text-decoration: underline;">no later than September 25 ,2024</span></strong><strong><span style="text-decoration: underline;">.</span></strong> ISR shall be entitled to postpone the deadline at its sole discretion.</p> <p><strong>4. </strong>RFI Documents and notices regarding ISR tenders are also published on the internet at <a class="external" href="http://www.rail.co.il/" target="_blank" rel="sponsored nofollow noopener noreferrer">www.rail.co.il</a>. In case of discrepancy between any of the following: the terms of the RFI published in this publication, any of the publications on the internet and the RFI Documents, the RFI Documents shall prevail.</p> <p><strong>5. </strong>Bidders are advised to check for updates during the RFI process and before submitting proposals.</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="/tenderpast/629.tag">tenderpast</a></li></ul></div></div> <div class="pageOptions"> <ul><!-- <li> <a data-facebook-share="true" data-share-url='https://www.railwaygazette.com/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article' data-share-title="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" 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/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article' data-share-title="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" 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/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article' data-share-title="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" 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/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article' data-share-title="Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems" 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%2ftenders-and-jobs%2frequest-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems%2f67065.article&e=Request+for+Information+(RFI)+For+Train+Timetable+Planning%2c+Train+Scheduling%2c+and+Employee+Appointment+Systems" class="facebook" title="Share this on Facebook" target="_blank"></a> </li> <!-- twitter--> <li> <a href="https://twitter.com/intent/tweet?text=Request+for+Information+(RFI)+For+Train+Timetable+Planning%2c+Train+Scheduling%2c+and+Employee+Appointment+Systems&url=https%3a%2f%2fwww.railwaygazette.com%2ftenders-and-jobs%2frequest-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems%2f67065.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%2ftenders-and-jobs%2frequest-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems%2f67065.article" class="linkedin" title="Share this on Linked in" target="_blank"></a> </li> <li><a href="mailto:?subject=Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems&body=https://www.railwaygazette.com/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.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="/67065/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 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": "Organisation: Israel Railways Ltd.Location: Israel", "image": "https://d1c4d7gnm6as1q.cloudfront.net/Pictures/2000xAny/5/4/3/66543_israelrailwayslogo_537720.png", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.railwaygazette.com/tenders-and-jobs/request-for-information-rfi-for-train-timetable-planning-train-scheduling-and-employee-appointment-systems/67065.article" }, "author": { "@type": "Organization", "name": "Railway Gazette International" }, "dateCreated": "2024-08-06", "dateModified": "2024-11-11", "datePublished": "2024-08-06", "hasPart": { "@type": "WebPageElement", "isAccessibleForFree": false, "cssSelector": ".restrictedcontent" }, "headline": "Request for Information (RFI) For Train Timetable Planning, Train Scheduling, and Employee Appointment Systems", "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>