CINXE.COM
DVT and the Limitations of ‘Local Nexus’ Test in India
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <!-- HTML Meta Markup --> <title>DVT and the Limitations of ‘Local Nexus’ Test in India</title> <meta itemprop="image" content="https://www.pymnts.com/wp-content/uploads/2024/11/shutterstock_1826279691.jpg?w=500&h=300&crop=1" /> <!-- Link --> <meta name="theme-color" content="#712cf9"> <meta name="msapplication-TileImage" content="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_270.jpg" /> <link rel="shortcut icon" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_32.jpg" sizes="32x32" /> <link rel="shortcut icon" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_192.jpg" sizes="192x192" /> <link rel="apple-touch-icon-precomposed" href="https://www.pymnts.com/wp-content/uploads/2023/07/cpi_favicon_180.jpg" /> <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="https://www.pymnts.com/feed/" /> <link rel="alternate" type="text/xml" title="RSS .92" href="https://www.pymnts.com/feed/rss/" /> <link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="https://www.pymnts.com/feed/atom/" /> <link rel="pingback" href="https://www.pymnts.com/xmlrpc.php" /> <link rel="dns-prefetch" href="https://www.google.com"> <link rel="dns-prefetch" href="https://stats.g.doubleclick.net"> <link rel="dns-prefetch" href="https://googleads.g.doubleclick.net"> <link rel="dns-prefetch" href="https://fonts.gstatic.com"> <link rel="dns-prefetch" href="https://www.google-analytics.com"> <link rel="dns-prefetch" href="https://www.pymnts.com"> <link rel="preload" href="/wp-content/themes/flex-mag-sixspoke/2020/bootstrap-icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <!-- <script type="text/javascript" src="/wp-content/themes/flex-mag-sixspoke/2020/jquery-3.6.0.slim.min.js?v=1.0"> </script>--> <link rel="preload" as="script" href="https://ak.sail-horizon.com/spm/spm.v1.min.js?ver=5.5.10" /> <script src='https://ak.sail-horizon.com/spm/spm.v1.min.js?ver=5.5.10' type='text/javascript' async></script> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"> </script> <link rel="stylesheet" href="/wp-content/themes/flex-mag-sixspoke/2020/bootstrap-icons.css"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet"> <!-- Font --> <link href="https://fonts.googleapis.com/css?family=Playfair+Display:700,900&display=swap" rel="stylesheet"> <!-- css --> <link rel="stylesheet" href="https://www.pymnts.com/wp-content/themes/flex-mag-sixspoke/cpi-mini-site/cpi.css?v=37"> <!-- Google analytics --> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-3WHRCQ5780"></script> <script> let deviceIsBlockingAnalytics = null; let googleTracker = typeof ga !== 'undefined' && ga.getAll ? ga.getAll()[0] : null; console.log('googleTracker initial', googleTracker); if (!googleTracker) { let count = 0; let intervalId = setInterval(() => { ++count; googleTracker = typeof ga !== 'undefined' && ga.getAll ? ga.getAll()[0] : null; console.log('googleTracker', count, googleTracker); if (googleTracker || count > 5) { clearInterval(intervalId); console.log('tracker', googleTracker); return; } }, 500); } else { console.error('Google Tag Manager is blocked'); deviceIsBlockingAnalytics = true; } let lastUrlViewed = null; function parseCookieHeader() { const header = document.cookie; // Split the header into individual name-value pairs var pairs = header.split(';'); // Create an object to store the cookies var cookies = {}; // Loop through the name-value pairs and store them in the object for (var i = 0; i < pairs.length; i++) { var nameValue = pairs[i].split('='); cookies[nameValue[0].trim()] = nameValue[1]; } // Return the object return cookies; } // function registerPageView(url, tracker) { // console.log('registerPageView', url, tracker); // console.log('deviceIsBlockingAnalytics', deviceIsBlockingAnalytics); // tracker.set('page', url); // tracker.send('pageview', { // 'title': document.title, // 'url': url // }); // gtag("event", "pymnts_device_visit", { // path: url // }); // console.log('title', document.title); // if (!deviceIsBlockingAnalytics) doNotProxyReport(url); // } // let firstTrigger = true; // function triggerPageView (url, scrollingUp = false) { // console.log('triggerPageView', url); // if (!googleTracker) { // let count = 0; // let intervalId = setInterval(() => { // ++count; // if (googleTracker || count > 5) { // clearInterval(intervalId); // console.log('tracker', googleTracker); // registerPageView(url, googleTracker); // return; // } // }, 500); // } else { // console.log('tracker', googleTracker); // registerPageView(url, googleTracker); // } // } const cookies = parseCookieHeader(); let pymntsDeviceId; let storedId = localStorage.getItem('pymntsDeviceId'); if (cookies['pymnts-browser-id']) { pymntsDeviceId = cookies['pymnts-browser-id']; localStorage.setItem('pymntsDeviceId', pymntsDeviceId); } else { if (storedId) pymntsDeviceId = storedId; else pymntsDeviceId = 'unknown'; } console.log('pymntsDeviceId', pymntsDeviceId); if (!storedId || storedId === 'undefined') { localStorage.setItem('pymntsDeviceId', pymntsDeviceId); } /* * Setup GA4 */ window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); const { hostname } = window.location; let gtagCategory = hostname === 'gamma.pymnts.com' ? 'UA-11167465-10' : 'UA-11167465-1'; gtag('config', gtagCategory); console.log('gtag ua category', gtagCategory); gtagCategory = hostname === 'gamma.pymnts.com' ? 'G-NY60TDWHJ9' : 'G-3WHRCQ5780'; gtag('config', gtagCategory); console.log('gtag g4 category', gtagCategory); //gtag('set', {'user_id': pymntsDeviceId}); // Set the user ID using signed-in user_id. setTimeout(() => { gtag("event", "pymnts_device_visit", { path: window.location.pathname, }); }, 1000); let gaIsBlocked = null; let rtIsBlocked = false; let visitedPages = []; let connectionCount = 0; let maxConnectionAttempts = 3; const landingPage = window.location.pathname; const doNotProxyReport = pathname => { console.log('Do not report', pathname); let request = { url: `https://rt.pymnts.com:6300/dnr`, method: 'post', data: { pathname } } axios(request) .then(response => console.log(response.data)) .catch(error => console.error(error)); } async function checkIfGoogleAnalyticsIsBlocked() { let request = { url: 'https://www.google-analytics.com/collect', method: "post", params: { v: 1, tid: 'G-3WHRCQ5780', cid: pymntsDeviceId, t: 'web-view' } } console.log('request', request); let isBlocking; let response; try { response = await axios(request); deviceIsBlockingAnalytics = false; isBlocking = 'false'; console.log("Google Analytics is Allowed!!!!!!!!"); doNotProxyReport(landingPage) } catch (err) { // We are blocked!!! deviceIsBlockingAnalytics = true; isBlocking = 'true'; console.error('Google Analytics is Blocked!!!!!!!'); } } checkIfGoogleAnalyticsIsBlocked(); const recordLinkVisit = () => { const cookies = parseCookieHeader(); console.log('visit cookies', cookies); if (typeof cookies['cpi-org-info'] === 'undefined') return; const orgInfo = decodeURIComponent(cookies['cpi-org-info']).split(' --- '); //console.log(orgInfo); if (orgInfo.length < 2) return; const orderId = orgInfo[1]; const url = `https://www.competitionpolicyinternational.com/tracking/record-visit.php?order=${orderId}`; const request = { url, method: 'get' } axios(request) .then(response => console.log('axios success')) .catch(error => console.error('axios error', error)); } recordLinkVisit(); </script> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <!-- This site is optimized with the Yoast SEO Premium plugin v22.7 (Yoast SEO v23.4) - https://yoast.com/wordpress/plugins/seo/ --> <title>DVT and the Limitations of ‘Local Nexus’ Test in India | PYMNTS.com</title> <meta name="description" content="By Anisha Chand1 & Tanveer Verma2 On September 10 2024, the amendments to the Indian Competition Act, 2002 (Competition Act) regarding merger" /> <link rel="canonical" href="https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="DVT and the Limitations of ‘Local Nexus’ Test in India | PYMNTS.com" /> <meta property="og:description" content="By Anisha Chand1 & Tanveer Verma2 On September 10 2024, the amendments to the Indian Competition Act, 2002 (Competition Act) regarding merger" /> <meta property="og:url" content="https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/" /> <meta property="og:site_name" content="PYMNTS.com" /> <meta property="article:publisher" content="https://www.facebook.com/pymnts/" /> <meta property="article:modified_time" content="2024-11-10T12:48:18+00:00" /> <meta property="og:image" content="https://www.pymnts.com/wp-content/uploads/2024/11/shutterstock_1826279691.jpg" /> <meta property="og:image:width" content="500" /> <meta property="og:image:height" content="300" /> <meta property="og:image:type" content="image/jpeg" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@pymnts" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/","url":"https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/","name":"DVT and the Limitations of ‘Local Nexus’ Test in India | PYMNTS.com","isPartOf":{"@id":"https://www.pymnts.com/#website"},"primaryImageOfPage":{"@id":"https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/#primaryimage"},"image":{"@id":"https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/#primaryimage"},"thumbnailUrl":"https://www.pymnts.com/wp-content/uploads/2024/11/shutterstock_1826279691.jpg","datePublished":"2024-11-10T18:31:28+00:00","dateModified":"2024-11-10T12:48:18+00:00","description":"By Anisha Chand1 & Tanveer Verma2 On September 10 2024, the amendments to the Indian Competition Act, 2002 (Competition Act) regarding merger","breadcrumb":{"@id":"https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/#primaryimage","url":"https://www.pymnts.com/wp-content/uploads/2024/11/shutterstock_1826279691.jpg","contentUrl":"https://www.pymnts.com/wp-content/uploads/2024/11/shutterstock_1826279691.jpg","width":500,"height":300},{"@type":"BreadcrumbList","@id":"https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.pymnts.com/"},{"@type":"ListItem","position":2,"name":"DVT and the Limitations of ‘Local Nexus’ Test in India"}]},{"@type":"WebSite","@id":"https://www.pymnts.com/#website","url":"https://www.pymnts.com/","name":"PYMNTS.com","description":"What's next in payments and commerce","publisher":{"@id":"https://www.pymnts.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.pymnts.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://www.pymnts.com/#organization","name":"PYMNTS.com","url":"https://www.pymnts.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.pymnts.com/#/schema/logo/image/","url":"https://www.pymnts.com/wp-content/uploads/2023/05/PYMNTS_2023_logo_black-1.png","contentUrl":"https://www.pymnts.com/wp-content/uploads/2023/05/PYMNTS_2023_logo_black-1.png","width":3329,"height":687,"caption":"PYMNTS.com"},"image":{"@id":"https://www.pymnts.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/pymnts/","https://x.com/pymnts"]}]}</script> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//js.hs-scripts.com' /> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel="alternate" type="application/rss+xml" title="PYMNTS.com » Feed" href="https://www.pymnts.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="PYMNTS.com » Comments Feed" href="https://www.pymnts.com/comments/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.pymnts.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.2"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <!-- pymnts.com is managing ads with Advanced Ads --><script id="pymnt-ready"> window.advanced_ads_ready=function(e,a){a=a||"complete";var d=function(e){return"interactive"===a?"loading"!==e:"complete"===e};d(document.readyState)?e():document.addEventListener("readystatechange",(function(a){d(a.target.readyState)&&e()}),{once:"interactive"===a})},window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[]; </script> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='all-css-4' href='https://www.pymnts.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpobWxpZmhgbGwAAROEu5A==' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <link rel='stylesheet' id='all-css-6' href='https://www.pymnts.com/wp-content/plugins/contact-form-7/includes/css/styles.css?m=1739354845g' type='text/css' media='all' /> <link rel='stylesheet' id='studio-fonts-css' href='//fonts.googleapis.com/css?family=Oswald%3ALato%3A400%2C700%7CWork+Sans%3A900%7CMontserrat%3A400%2C700%7COpen+Sans%3A800%7CPlayfair+Display%3A400%2C700%2C900%7CQuicksand%7CRaleway%3A200%2C400%2C700%7CRoboto+Slab%3A400%2C700%26subset%3Dlatin%2Clatin-ext&ver=1.0.0' media='all' /> <script type="text/javascript" id="advanced-ads-advanced-js-js-extra"> /* <![CDATA[ */ var advads_options = {"blog_id":"1","privacy":{"enabled":false,"state":"not_needed"}}; /* ]]> */ </script> <script type="text/javascript" src="https://www.pymnts.com/_static/??-eJyVjt0KwjAMhV/Irsjm34X4LLGNXbY2q02r8+2touCFCEIgcHK+c6KvUREbXyyKHuqcC6bbazWBuBlkoX+ZVCCXIOOn2UyckbOOvjhi0WAvwAatAis6lqMno0EE8zPuff2WkHsMtfTkcVYBnBKaJU4jPjg7Bahv9WjGfzAB8rlPRbGvuuMSK30I++Wm3bWrbtuthzschWcp" ></script><link rel="https://api.w.org/" href="https://www.pymnts.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.pymnts.com/wp-json/wp/v2/cpi_posts/2290023" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.pymnts.com/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.7.2" /> <link rel='shortlink' href='https://www.pymnts.com/?p=2290023' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.pymnts.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.pymnts.com%2Fcpi-posts%2Fdvt-and-the-limitations-of-local-nexus-test-in-india%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.pymnts.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.pymnts.com%2Fcpi-posts%2Fdvt-and-the-limitations-of-local-nexus-test-in-india%2F&format=xml" /> <link rel="alternate" type="application/feed+json" title="PYMNTS.com » JSON Feed" href="https://www.pymnts.com/feed/json/" /> <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.1.40--> <script class="hsq-set-content-id" data-content-id="blog-post"> var _hsq = _hsq || []; _hsq.push(["setContentType", "blog-post"]); </script> <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> <style>img#wpstats{display:none}</style> <script type="text/javascript"> var advadsCfpQueue = []; var advadsCfpAd = function( adID ){ if ( 'undefined' == typeof advadsProCfp ) { advadsCfpQueue.push( adID ) } else { advadsProCfp.addElement( adID ) } }; </script> <script> var userObject; </script><meta property="article:published_time" content="2024-11-10T13:31:28-05:00" /> <!-- Begin comScore Tag --> <script> var _comscore = _comscore || []; _comscore.push({ c1: "2", c2: "39641934", options: { enableFirstPartyCookie: "true" } }); (function() { var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true; s.src = "https://sb.scorecardresearch.com/cs/39641934/beacon.js"; el.parentNode.insertBefore(s, el); })(); </script> <noscript> <img src="https://sb.scorecardresearch.com/p?c1=2&c2=39641934&cv=3.9.1&cj=1"> </noscript> <!-- End comScore Tag --> <style type="text/css"> .post-cont-out, .post-cont-in { margin-right: 0; } .nav-links { display: none; } .nav-left-wrap { width: 60px; } .nav-logo-out { margin-left: -60px; } .nav-logo-in { margin-left: 60px; } .nav-logo-show { padding-right: 20px; width: 200px; height: 50px; } .nav-logo-show img { width: auto; padding-top: 5px; } .nav-left-width { width: 280px !important; } .nav-logo-out-fade { margin-left: -280px; } .nav-logo-in-fade { margin-left: 280px; } .share-count, .feat-info-views { display: none; }</style> <style type="text/css" id="custom-background-css"> body.custom-background { background-color: #f9f9f9; } </style> <link rel="icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=32" sizes="32x32" /> <link rel="icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=192" sizes="192x192" /> <link rel="apple-touch-icon" href="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=180" /> <meta name="msapplication-TileImage" content="https://www.pymnts.com/wp-content/uploads/2022/11/cropped-PYMNTS-Icon-512x512-1.png?w=270" /> <!-- Google Tag Manager --> <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);j.async=true;j.src="https://load.gtm.pymnts.com/4gb8jtcwxmzux.js?"+i;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','dzrxseq=aWQ9R1RNLVdWRldDRDk1JmFzPXk%3D&page=1');</script> <!-- End Google Tag Manager --> <!-- Standard Google Analytics tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-LT5LN10NVZ"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-LT5LN10NVZ'); </script> <!-- End standard Google Analytics tag --> </head> <body class="d-flex flex-column" style="min-height:100vh;"> <div class="container-scroller" id="headerContainerScroller"> <div class="container"> <header class="blog-header lh-1 py-3"> <!-- <div class="d-flex flex-wrap flex-row border-bottom border-light"> <div id="cpi-verify" class="my-auto"> <ul class="nav col-12 col-md-auto"> <li><a class="px-2 link-dark" href="#" style="font-size:.9rem;"> Account</a> </li> </ul> </div> <div id="cpi-cart" class="text-end my-auto"> <i class="bi bi-cart-fill fs-5 text-secondary"></i> </div> </div> --> <div class="row flex-nowrap justify-content-between align-items-center g-1"> <div class="col col-md-3 col-lg-4 order-2 order-md-3 order-lg-1 align-self-center"> <ul class="nav col-12 col-md-auto flex-column flex-md-row justify-content-end justify-content-lg-start" id="utilityNav"> <!-- <li class="ps-2 ps-lg-0 d-none order-2 d-lg-block my-auto"><a class="nav-link py-1 link-secondary text-end text-md-start" style="font-size:.9rem;" href="http://www.pymnts.com/cpi/account-management">Verify Email</a> </li> --> <!-- IF THE USER IS LOGGED IN --> <li class="ps-2 ps-lg-0 order-1 my-auto d-none d-md-block"> <p class="p-0 text-end text-md-start mb-0"><a href="https://www.pymnts.com/cpi/account-management/" class="fw-bold text-uppercase" style="font-size:.8rem;"></a></p> </li> <!-- END USER IS LOGGED IN --> <!-- <li class="ps-2 ps-lg-0"><a class="p-0 py-md-1 link-secondary text-end text-md-start d-block d-lg-none" href="http://www.pymnts.com/cpi/account-management"><i class="bi bi-person-circle fs-3"></i></a> </li> --> </ul> <!-- <a class="link-secondary" href="https://www.competitionpolicyinternational.com/subscribe/">Subscribe</a> <span class="text-secondary">|</span> <a class="link-secondary" href="https://www.competitionpolicyinternational.com/cpi-subscriptions/">Join</a> --> </div> <div class="col-7 col-md-4 col-lg-4 px-2 ps-md-0 pe-md-3 order-1 order-lg-2 align-self-center"> <div class="text-center"> <a class="blog-header-logo text-dark" href="https://www.pymnts.com/cpi"> <img src="https://www.pymnts.com/wp-content/uploads/2023/03/CPI_Logo_Black-1.svg" width="100%" height="50px" class="img-fluid"> </a> <div class="d-block mt-1 mt-md-0"> <small><i>A PYMNTS Company</i></small> </div> </div> </div> <div class="col-md-4 col-lg-3 d-none d-md-block text-end text-lg-start order-md-2 order-lg-3"> <!-- <form class="col-12 col-lg-auto my-auto d-none d-md-block text-end me-3" role="search"> <input type="search" class="form-control" placeholder="Search" aria-label="Search"> </form> --> <form role="search" method="get" id="" action="https://www.pymnts.com/" class="col-12 col-lg-auto my-auto d-none d-md-block text-end me-3"> <input type="hidden" name="post_type" value="cpi_posts" /> <div class="input-group my-auto"> <input class="form-control" type="text" value="" name="s" id="s" placeholder="Search" /> <div class="input-group-append"> <button type="submit" class="input-group-text" style="border-top-left-radius: 0;border-bottom-left-radius: 0;height: 100%;" /> <i class="bi bi-search"></i> </button> </div> </div> </form> </div> <div class="col-2 col-md col-lg-auto my-auto text-end order-4"> <a class="link-white me-3 position-relative" href="https://www.competitionpolicyinternational.com/cart/" role="button"> <i class="bi bi-cart fs-4"></i> <!--<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-success"> 1 <span class="visually-hidden">unread messages</span> </span>--> </a> </div> </div> </header> <div class="nav-scroller py-1"> <nav class="nav d-flex justify-content-start justify-content-md-evenly"> <a class="p-2 link-primary fw-bold" href="https://www.pymnts.com/cpi/subscriptions">Pricing</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/latest-news-for-cpi/">News</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/cpi-column/">Columns</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi_category/antitrust-chronicle-2024/">Antitrust Chronicles</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi_category/techreg-chronicle-2024/">TechREG Chronicles</a><a class="p-2 link-secondary" href="https://www.pymnts.com/cpi/cpi-blog/">Blog o' Blogs</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-events/">Events</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-tv">CPI TV</a><a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-books/">Books</a> <a class="my-auto px-2 link-secondary d-inline d-md-none" href="#"><i class="bi bi-search text-dark fw-bold"></i></a> <!-- <a class="p-2 link-secondary" href="/audio/">Audio</a> --> <!-- <a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/cpi-journal/">CPI Journal</a> --> <!-- <a class="p-2 link-secondary" href="https://www.competitionpolicyinternational.com/category/library-recently-published/">Library</a> --> </nav> </div> </div> </div><style> .cpi-article img { max-width: 100%; height: auto; } </style> <script> const postType = 'default'; </script> <div class="main mt-3 mb-5 my-md-5" id="singleContainer"> <div class="container"> <div class="row" id="articlePost"> <div class="col-12 col-lg-8 ms-auto" id="insertArticle"> <div class="row"> <div class="col-12 my-auto"> <h1 class="my-auto blog-post-title text-center"> DVT and the Limitations of ‘Local Nexus’ Test in India </h1> <div class="row mt-3"> <div class="col-8 col-md-9 my-auto"> <span class="post-info-text fs-6 text-uppercase">By</span> <span class="author-name vcard fs-6 text-uppercase fw-bold" itemprop="author"> <a href="https://www.pymnts.com/author/chanda/" title="Posts by Anisha Chand" rel="author" class="fs-6">Anisha Chand</a> & <a href="https://www.pymnts.com/author/tanveerverma/" title="Posts by Tanveer Verma" rel="author" class="fs-6">Tanveer Verma</a> </span> <span class="fs-6 d-none d-md-inline"> | </span> <span class="fs-6 text-uppercase d-block d-md-inline">November 10, 2024</span> </div> <div class="col-4 col-md-3 my-auto"> <!-- Share icons --> <a href="https://www.facebook.com/sharer.php?u=https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/" class="link-dark"><i class="bi bi-facebook pe-2 fs-6"></i></a> <a href="https://twitter.com/intent/tweet?text=DVT+and+the+Limitations+of+%E2%80%98Local+Nexus%E2%80%99+Test+in+India&url=https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/" class="link-dark"><i class="bi bi-twitter-x pe-2 fs-6"></i></a> <a href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/" class="link-dark"><i class="bi bi-linkedin pe-2 fs-6"></i></a> <a href="mailto:?subject=DVT+and+the+Limitations+of+%E2%80%98Local+Nexus%E2%80%99+Test+in+India&body=I+found+this+article+interesting+and+want+to+share+it+with+you.+Check+it+out:+https://www.pymnts.com/cpi-posts/dvt-and-the-limitations-of-local-nexus-test-in-india/" class="link-dark"><i class="bi bi-envelope-fill pe-2 fs-6"></i></a> <a href="javascript:window.print()" class="link-dark"><i class="bi bi-printer-fill fs-6"></i></a> </div> </div> </div> <div class="row mt-4 mx-auto"> <div class="col-12 px-0 cpi-article"> <p><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-150323" src="https://www.competitionpolicyinternational.com/wp-content/uploads/2021/03/CPI-COLUMNS-South-Asia-cover-e1632143505745.jpg" alt="CPI COLUMNS South Asia cover" width="970" height="396" /></p> <p><em>By Anisha Chand</em><a href="#_ftn1" name="_ftnref1"><sup>1</sup></a><em> & Tanveer Verma</em><a href="#_ftn2" name="_ftnref2"><sup>2</sup></a></p> <p><strong> </strong></p> <p>On September 10 2024, the amendments to the Indian Competition Act, 2002 (Competition Act) regarding merger control came into force. A significant amendment was the introduction of the “Deal Value Threshold” (DVT), an additional metric for assessing the requirement of seeking prior approval for an M&A transaction. With the newly introduced DVT, transactions will require prior clearance from the Competition Commission of India (CCI) if the following criteria are met:</p> <ul> <li>the global value of the transaction exceeds INR 20 billion (approximately USD 239 million), and</li> <li>the target has “significant business operations in India” (SBOI).</li> </ul> <p>The concept of SBOI is similar to the ‘substantial domestic operations’ / ‘local nexus’ test used in Germany and Austria – the two jurisdictions which implemented DVT as early as 2017.</p> <p>The CCI has also laid down criteria for determining SBOI in Regulation 4 of the Competition Commission of India (Combination) Regulations, 2023 (Combination Regulations). As per the regulation, an entity engaged in “digital services” will be said to have SBOI if 10 percent of its global users, turnover, or gross merchandise value (GMV) is in/derived from India.</p> <p>While at first blush the criteria for SBOI appears robust, a closer examination reveals that the criteria for SBOI can allow market-altering transactions to evade scrutiny while bringing non-problematic deals into its regulatory fold. Before exploring this issue in detail, it is important to first understand the objectives that the Indian Parliament had in mind when introducing the DVT.</p> <p><strong> </strong><strong> </strong></p> <p><strong><em>Competition Law Review Committee’s Recommendations – The Prelude to DVT</em></strong></p> <p>The introduction of the DVT to India’s merger control regime traces back to recommendations made by the Competition Law Review Committee (CLRC) in 2019. Established in 2018, the CLRC aimed to strengthen India’s competition law framework by identifying enforcement gaps, particularly in digital markets. One highlighted issue was the CCI’s limited ability to review significant transactions involving companies with low assets or turnover, but high value derived from data or innovation—such as Snapdeal’s acquisition of Freecharge, and Facebook’s acquisition of WhatsApp. While the CLRC suggested DVT to tackle “killer acquisitions,” it also warned against a potential for regulatory overreach, emphasizing the need for a local nexus test to align with international standards.</p> <p><strong> </strong></p> <p><strong><em>Target as the “Focal Point” for SBOI assessment – The Fallacy Within the Framework </em></strong></p> <p>Considering that the central objective of the DVT was to curb “killer acquisitions,” the SBOI test stipulated in Regulation 4 has ostensibly been designed with the target entity in mind. However, the fine prints remains vague, which could potentially allow significant transactions to escape regulatory scrutiny. This can be illustrated by considering the hypothetical situations below:</p> <ol> <li>There are two separate global acquisitions, <u>each</u> having a transaction value over INR 20 billion (~ USD 240 million): <ol> <li><strong>Scenario 1: </strong>The target entity has 200 million users globally with 10 million users in India. The percentage of users in India is 5 percent.</li> <li><strong>Scenario 2: </strong>The target entity has 50 million users globally with 7.5 million users in India. The percentage of users in India is 15 percent.</li> </ol> </li> </ol> <p><em>Although the target entity in Scenario 1 has more users in India and thus a potentially greater competitive impact when compared to the target entity in Scenario 2, only Scenario 2 would fall under the DVT’s regulatory scope, while Scenario 1 would escape CCI review given that the target entity would not be considered to have SBOI. </em></p> <ol start="2"> <li>A global MNC (TopCo) runs an online platform with operations in more than 70 countries. It has various subsidiaries, one in each country, including India, to carry out various operations in relation to the platform (such as collection of subscription fees, compliance with local laws, etc.) in that country. While the proportion of users in India is substantially lower than 10 percent of the total users globally, the Indian subsidiary caters exclusively to users in India. Now, consider the following two scenarios: <ol> <li><strong>Scenario A</strong>: The TopCo divests its India business for a deal value which is slightly over INR 20 billion.</li> <li><strong>Scenario B: </strong>The owners of the TopCo sell the TopCo (including all its subsidiaries) in a global deal for a transaction value which is significantly over INR 20 billion (and much higher than the deal value for divestment of the India business as contemplated in Scenario A).</li> </ol> </li> </ol> <p><em>Despite identical competition implications in India, only Scenario A will require CCI approval, as the target is the Indian subsidiary which meets the SBOI criteria with 100 percent of its users being in India. In Scenario B, while the Indian subsidiary is part of the deal, the global parent is the direct target. Consequently, the 10 percent user threshold in India isn’t met, the transaction would evade regulatory scrutiny.</em></p> <p>This deficiency in the SBOI framework may not only allow potentially harmful M&A activities to bypass scrutiny, but also subject low-impact deals to unnecessary review. If the SBOI test is applied literally, it is possible that several innocuous transactions where (i) the target has an insignificant digital presence in India (for example, a website with only domestic users), and (ii) the high valuation of the deal is on account of the activities / assets of the target outside India (with no bearing / impact on the Indian markets), will also breach the SBOI threshold.</p> <p>Accordingly, the present SBOI test, while conceived with the right intentions, may not do the trick of <em>only</em> attracting scrutiny for transactions that have real impact on the Indian market. It may therefore be prudent to re-examine and recalibrate the SBOI test.</p> <p><strong> </strong></p> <p><strong><em>Brightline Number as Criteria for SBOI – Possible Solution</em></strong></p> <p>A potential solution could be to base the SBOI criteria for digital entities on a brightline – i.e. a specified number of users in India – as opposed to a percentage of the global users of the target entity which are present in India. Pertinently, a leaf could be taken from the draft Digital Competition Bill, 2024 (DCB), a proposed legislation for <em>ex-ante</em> regulation of large tech companies. Presently, the draft DCB proposes quantitative thresholds (10 million end-users or ten thousand businesses associated with the platform in India) for a digital entity to be classified as a “systematically significant digital enterprise,” i.e. the entities to which the DCB, if enforced, will apply. Similarly, the CCI could also consider providing a straight-forward quantitative threshold (in terms of an absolute number of business users/end users in India) for meeting the SBOI test for digital entities. The CCI may rely on the prevailing economic conditions / market realities to arrive at this quantitative threshold.</p> <p>Such an approach to SBOI will not only result in predictable outcomes but will help achieve the intended objective of reviewing problematic transactions in the technology sector which have market impact in India. This approach will also ensure that deals that have an identical market impact are not escaping review purely based on the structure of the transaction. Further, should the Draft DCB translate into reality, the underlying principles and standards for user base test would also be uniform across both legislations.</p> <p><strong><em><a href="https://www.pymnts.com/wp-content/uploads/2024/11/South-Asia-Column-November-2024-Full.pdf">Click here for a PDF version of the article</a></em></strong></p> <hr /> <p><a href="#_ftnref1" name="_ftn1">1</a> Anisha Chand is a Partner with the competition and antitrust law practice at Khaitan & Co’s Mumbai office. She can be reached at <a href="mailto:anisha.chand@khaitanco.com">anisha.chand@khaitanco.com</a>.</p> <p><a href="#_ftnref2" name="_ftn2">2</a> Tanveer Verma is a Principal Associate with the competition and antitrust law practice at Khaitan & Co’s Mumbai office. He can be reached at <a href="mailto:tanveer.verma@khaitanco.com">tanveer.verma@khaitanco.com</a>.</p> </div> </div> </div> </div> <div class="d-none d-lg-block col-3 ms-5 me-auto small" id="sidebar-container"> <!-- Inster sidebar content here --> <h4 class="fst-italic">Featured News</h4> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/public-interest-groups-push-for-rehearing-on-fcc-net-neutrality-case/" class="mb-0 fw-bold">Public Interest Groups Push for Rehearing on FCC Net Neutrality Case</a><br> <small>Feb 18, 2025 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/australian-regulator-backs-virgin-australia-qatar-airways-alliance/" class="mb-0 fw-bold">Australian Regulator Backs Virgin Australia-Qatar Airways Alliance</a><br> <small>Feb 18, 2025 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/eu-scales-back-ai-regulations-to-compete-with-us-in-global-tech-race/" class="mb-0 fw-bold">EU Scales Back AI Regulations to Compete with US in Global Tech Race</a><br> <small>Feb 18, 2025 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/democratic-lawmakers-raise-concerns-over-musks-task-force-and-taxpayer-data-security/" class="mb-0 fw-bold">Democratic Lawmakers Raise Concerns Over Musk’s Task Force and Taxpayer Data Security</a><br> <small>Feb 18, 2025 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/uks-cma-provisionally-approves-poultry-feed-merger/" class="mb-0 fw-bold">UK’s CMA Provisionally Approves Poultry Feed Merger</a><br> <small>Feb 18, 2025 by <a href="https://www.pymnts.com/author/nhoch/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <h4 class="fst-italic mt-4">Antitrust Mix by CPI</h4> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/antitrust-chronicle-international-criminal-enforcement/" class="mb-0 fw-bold">Antitrust Chronicle® – International Criminal Enforcement</a><br> <small>Jan 23, 2025 by <a href="https://www.pymnts.com/author/jrothpymnts-com/" title="Posts by CPI" rel="author">CPI</a> </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/the-antitrust-divisions-recent-work-to-combat-international-cartels/" class="mb-0 fw-bold">The Antitrust Division’s Recent Work to Combat International Cartels</a><br> <small>Jan 23, 2025 by Emma Burnham & Benjamin Christenson </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/information-sharing-the-new-frontier-of-u-s-antitrust-enforcement/" class="mb-0 fw-bold">Information Sharing: The New Frontier of U.S. Antitrust Enforcement</a><br> <small>Jan 23, 2025 by Brian P. Quinn, Casey Kovarik & Michael Tubach </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/the-key-role-of-guidelines-on-exchanges-of-information-among-competitors-and-the-divergent-transatlantic-paths/" class="mb-0 fw-bold">The Key Role of Guidelines on Exchanges of Information Among Competitors and the Divergent Transatlantic Paths</a><br> <small>Jan 23, 2025 by Rosa Abrantes-Metz & Albert Metz </small> </p> <p class="mt-3"> <a href="https://www.pymnts.com/cpi-posts/leniency-whistleblowers-and-compliance/" class="mb-0 fw-bold">Leniency, Whistleblowers, and Compliance</a><br> <small>Jan 23, 2025 by Richard Powers, Tara O’Malley & Cory Gordon </small> </p> <div class="sticky-top mt-3"> <h4 class="fst-italic mt-4">Subscribe to our newsletter</h4> <form class="sailthru-nl-signup" method="post" action="https://link.competitionpolicyinternational.com/s/daily_nl" data-list="daily_nl" > <div class="mb-3"> <label for="exampleInputEmail1" class="form-label">Your email address</label> <input type="email" class="form-control" required name="email"> </div> <div class="nl-signup-success m-0 p-0 mt-3 mb-3 d-none alert text-success" role="alert"> Thank you for subscribing </div> <div class="nl-signup-error m-0 p-0 mt-3 mb-3 d-none alert text-danger" role="alert"> <span class="nl-signup-error-msg"></span> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> </div> </div> </div> </div> <script> const config = { host: window.location.hostname, links: JSON.parse('{"current":"https:\/\/www.pymnts.com\/cpi-posts\/dvt-and-the-limitations-of-local-nexus-test-in-india\/","latest":["https:\/\/www.pymnts.com\/cpi-posts\/turkish-competition-authority-updates-regulation-on-fines\/","https:\/\/www.pymnts.com\/cpi-posts\/the-latest-legislative-development-and-enforcement-trends-of-the-prc-anti-monopoly-law\/","https:\/\/www.pymnts.com\/cpi-posts\/semper-aliquid-novi-africam-adferre-balancing-socio-economic-goals-with-competition-law\/","https:\/\/www.pymnts.com\/cpi-posts\/industrial-liberty\/","https:\/\/www.pymnts.com\/cpi-posts\/mare-liberum-or-mare-clausum-how-cabotage-laws-can-stifle-fair-competition-in-global-shipping\/","https:\/\/www.pymnts.com\/cpi-posts\/causation-confusion-a-response-to-judge-ginsburg-wong-ervin\/","https:\/\/www.pymnts.com\/cpi-posts\/advice-for-new-ftc-leadership\/","https:\/\/www.pymnts.com\/cpi-posts\/cpi-talks-with-thomas-kramler\/","https:\/\/www.pymnts.com\/cpi-posts\/the-dust-has-settled-for-now-reviewing-the-recent-amendments-to-the-canadian-competition-act\/","https:\/\/www.pymnts.com\/cpi-posts\/ftc-v-rambus-and-the-de-facto-causation-standard-under-sherman-section-2\/","https:\/\/www.pymnts.com\/cpi-posts\/enhancing-the-effectiveness-of-competition-regulation-in-malawi\/","https:\/\/www.pymnts.com\/cpi-posts\/observations-on-anti-monopoly-developments-in-chinas-pharmaceutical-industry-and-suggestions-for-compliance\/","https:\/\/www.pymnts.com\/cpi-posts\/competition-for-sustainability-the-sugar-case\/","https:\/\/www.pymnts.com\/cpi-posts\/new-commission-mandate-why-modernize-competition-policy-in-europe\/"]}'), sidebarSelector: '.sidebar-wrap', articleSelector: '[id^="article-number-"]', containerSelector: '#articlePost', insertSelector: '#insertArticle' }; const state = { nextArticleIndex: 0, loadedArticles: [], currentArticle: null, currentPath: window.location.pathname, currentTitle: document.title, pathTitles: [], lastUrlViewed: null, partialsAlreadyLoaded: new Set(), showingArticleId: 'orig', sidebarFreezeTrigger: null, isLoading: false, scrollRAF: null // For requestAnimationFrame }; // Utility functions const $ = selector => document.querySelector(selector); const $$ = selector => document.querySelectorAll(selector); /** * Creates an HTML element with specified attributes * @param {HTMLElement|string} parent - Parent element or selector * @param {string} tag - HTML tag name * @param {string} [className] - CSS class name * @param {string} [innerHTML] - Inner HTML content * @param {Object} [attributes] - Additional attributes * @param {Object} [style] - Inline styles * @returns {HTMLElement} - Created element */ const createElement = (parent, tag, className, innerHTML, attributes = {}, style = {}) => { const element = document.createElement(tag); if (parent) { (typeof parent === 'string' ? $(parent) : parent).appendChild(element); } if (className) { element.className = className; } if (innerHTML) { element.innerHTML = innerHTML; } Object.entries(attributes).forEach(([key, value]) => element.setAttribute(key, value)); Object.entries(style).forEach(([key, value]) => element.style[key] = value); return element; }; // Core functionality /** * Loads the next article * @param {boolean} [isFirst=false] - Whether this is the first article load * @returns {Promise<boolean>} - Whether the article was successfully loaded */ async function loadNextArticle(isFirst = false) { if (state.isLoading || state.nextArticleIndex >= config.links.latest.length) { return false; } state.isLoading = true; const nextUrl = config.links.latest[state.nextArticleIndex++]; if (state.partialsAlreadyLoaded.has(nextUrl)) { state.isLoading = false; return false; } try { const response = await fetch(`${nextUrl}?postType=partial`); if (!response.ok) throw new Error('Network response was not ok'); const data = await response.text(); state.partialsAlreadyLoaded.add(nextUrl); state.currentArticle = createElement( $(config.insertSelector), 'div', null, data, { id: `article-number-${state.nextArticleIndex}`, 'data-url': nextUrl } ); state.currentPath = nextUrl; updateArticleMetadata(state.currentArticle); hideContainerScroller(state.currentArticle); triggerPageView(new URL(nextUrl).pathname, isFirst); addDivToIframes(); state.isLoading = false; return true; } catch (error) { console.error('Error loading next article:', error); state.isLoading = false; return false; } } /** * Updates metadata for the newly loaded article * @param {HTMLElement} article - The article element */ function updateArticleMetadata(article) { const h1 = article.querySelector('h1'); state.currentTitle = h1.innerText; state.pathTitles.push({ path: state.currentPath, title: state.currentTitle }); } /** * Hides the container scroller in the loaded article * @param {HTMLElement} article - The article element */ function hideContainerScroller(article) { const containerScroller = article.querySelector('.container-scroller'); if (containerScroller?.classList) { containerScroller.classList.add('d-none'); } } /** * Triggers a page view for analytics * @param {string} url - The URL of the page view * @param {boolean} [isFirst=false] - Whether this is the first page view */ function triggerPageView(url, isFirst = false) { const triggerView = () => { if (url === state.lastUrlViewed) { return; } const info = state.pathTitles.find(entry => entry.path.includes(url)); if (!info) { return; } state.lastUrlViewed = url; if (window.googleTracker) { window.googleTracker.set('page', url); window.googleTracker.send('pageview', { 'title': info.title }); } console.log('Page view registered:', info.title, url); }; isFirst ? setTimeout(triggerView, 12000) : triggerView(); } /** * Handles scrolling behavior */ function handleScrolling() { const scrollPosition = window.scrollY; updateCurrentArticle(scrollPosition); updateSidebarPosition(); if (window.innerHeight + scrollPosition >= document.body.offsetHeight - 1000) { loadNextArticle(); } } /** * Updates the current article based on scroll position * @param {number} scrollPosition - Current scroll position */ function updateCurrentArticle(scrollPosition) { const articles = $$(config.articleSelector); let currentArticle = null; if (scrollPosition < window.innerHeight) { resetToOriginalArticle(); return; } for (const article of articles) { const { offsetTop, offsetHeight } = article; if (scrollPosition >= offsetTop - window.innerHeight / 2 && scrollPosition < offsetTop + offsetHeight) { currentArticle = article; break; } } if (currentArticle && currentArticle.id !== state.showingArticleId) { updatePageForArticle(currentArticle); } } /** * Updates the page URL and title for the current article * @param {HTMLElement} article - The current article element */ function updatePageForArticle(article) { if (!article) { return; } state.showingArticleId = article.id; state.currentPath = article.dataset.url; state.currentTitle = article.querySelector('h1').innerText; document.title = state.currentTitle; history.replaceState(null, '', state.currentPath); triggerPageView(new URL(state.currentPath).pathname); } /** * Resets the view to the original article */ function resetToOriginalArticle() { state.showingArticleId = 'orig'; triggerPageView(new URL(config.links.current).pathname, true); history.replaceState(null, '', config.links.current); state.currentTitle = $('h1').innerText; document.title = state.currentTitle; } /** * Updates the sidebar position based on scroll */ function updateSidebarPosition() { const sidebar = $(config.sidebarSelector); if (!sidebar) return; const { bottom } = sidebar.getBoundingClientRect(); const containerRect = $(config.containerSelector).getBoundingClientRect(); if (state.sidebarFreezeTrigger && window.scrollY < state.sidebarFreezeTrigger) { resetSidebarPosition(sidebar); } else if (bottom <= window.innerHeight) { freezeSidebarPosition(sidebar, containerRect); } } /** * Resets the sidebar to its original position * @param {HTMLElement} sidebar - The sidebar element */ function resetSidebarPosition(sidebar) { state.sidebarFreezeTrigger = null; Object.assign(sidebar.style, { position: 'static', bottom: 'auto' }); } /** * Freezes the sidebar position * @param {HTMLElement} sidebar - The sidebar element * @param {DOMRect} containerRect - The bounding rectangle of the article container */ function freezeSidebarPosition(sidebar, containerRect) { if (sidebar.style.position !== 'fixed') { Object.assign(sidebar.style, { position: 'fixed', bottom: '0px', width: `${(containerRect.width * 0.25) - 24}px` }); state.sidebarFreezeTrigger = window.scrollY; } } /** * Adds a wrapper div to iframes for responsive behavior */ function addDivToIframes() { $$('iframe').forEach(iframe => { const wrapper = createElement(null, 'div', 'ratio ratio-16x9 mb-3'); iframe.parentNode.insertBefore(wrapper, iframe); wrapper.appendChild(iframe); }); } // Event listeners const scrollHandler = () => { cancelAnimationFrame(state.scrollRAF); state.scrollRAF = requestAnimationFrame(handleScrolling); }; window.addEventListener('scroll', scrollHandler, { passive: true }); window.addEventListener('DOMContentLoaded', () => { addDivToIframes(); loadNextArticle(true); }); // Cleanup window.addEventListener('beforeunload', () => { window.removeEventListener('scroll', scrollHandler); cancelAnimationFrame(state.scrollRAF); }); </script> </div> <footer class="blog-footer"> <div class="container mx-auto"> <div class="row mx-0 mx-md-5 py-4"> <div class="col-12 col-md-3 text-center text-md-start"> <a href="https://www.pymnts.com/cpi/" class="w-100"> <img src="https://www.pymnts.com/wp-content/uploads/2023/03/CPI_Logo_Black-1.svg" width="100%" height="40" class="img-fluid"> </a> <div class="d-block text-black text-center mt-1 mb-3 my-md-0"> <a href="https://www.competitionpolicyinternational.com/category/cpi-tv/" class="text-black text-uppercase fw-normal">CPI TV</a> | <a href="https://www.competitionpolicyinternational.com/subscribe/" class="text-black text-uppercase fw-normal">Subscribe</a> </div> </div> <div class="col-12 col-md-9 text-center"> <div class="row row-cols-3 g-0"> <div class="col text-center"> <h4 class="text-black mb-3">About</h4> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/about-us/" class="nav-link p-0 text-black">About Us</a></li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/our-editorial-policy/" class="nav-link p-0 text-black">Editorial Policy</a> </li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/editorial-advisory-board/" class="nav-link p-0 text-black">Editorial Advisory Board</a> </li> </ul> </div> <div class="col text-center"> <h4 class="text-black mb-3">Getting Started</h4> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://www.competitionpolicyinternational.com/contact/" class="nav-link p-0 text-black">Contact Us</a> </li> <li class="nav-item mb-2"><a href="https://www.pymnts.com/cpi/promote-more-engage-more-connect-more/" class="nav-link p-0 text-black">Partnerships</a> </li> <li class="nav-item mb-2"><a href="https://www.competitionpolicyinternational.com/subscribe/" class="nav-link p-0 text-black">Newsletters</a> </li> </ul> </div> <div class="col text-center"> <h4 class="text-black mb-3">Follow CPI</h4> <ul class="nav flex-row justify-content-center"> <li class="nav-item mx-2"><a href="https://www.instagram.com/compolinter/"><i class="bi bi-instagram fs-4 text-black"></i></a></li> <li class="nav-item mx-2"><a href="https://www.linkedin.com/company/competition-policy-international/"><i class="bi bi-linkedin fs-4 text-black"></i></a> </li> <li class="nav-item mx-2"><a href="https://twitter.com/CompPolicyInt"><i class="bi bi-twitter-x fs-4 text-black"></i></a></li> <li class="nav-item mx-2"><a href="https://vimeo.com/competitionpolicyint"><i class="bi bi-vimeo fs-4 text-black"></i></a> </li> </ul> </div> </div> </div> </div> <div class="container"> <div class="row mt-5"> <div class="col-12 text-center"> © Competition Policy International 2025 </div> </div> <div class="row"> <div class="col-12 text-center"> <a href="https://www.pymnts.com/cpi/terms-conditions-cpi#cpiPrivacy" class="p-0 text-black smaller">Privacy Policy</a> <span class="smaller">|</span> <a href=https://www.pymnts.com/cpi/terms-conditions-cpi/" class="p-0 text-black smaller">Terms & Conditions</a> </div> </div> </div> </div> </footer> </body>