(() =>{
    
        function generateUUID(){
            var d = new Date().getTime();
            if(window.performance && typeof window.performance.now === "function"){
                d += performance.now(); //use high-precision timer if available
            }
            var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
                var r = (d + Math.random()*16)%16 | 0;
                d = Math.floor(d/16);
                return (c=='x' ? r : (r&0x3|0x8)).toString(16);
            });
            return uuid;
        }
    
        function getTime() {
            return Intl.DateTimeFormat().resolvedOptions().timeZone || "";
        }
    
        function getReferrer() {
                let href = ""
                try {
                        href = window.top.location.href || window.top.location.hostname;
                }
                catch (e) {
                        let aO = window.location.ancestorOrigins;
                        href = aO[aO.length - 1]
                }
                return encodeURIComponent(href);
        }
    
    
        let timeZone = getTime(),
        //type = navigator.connection ? navigator.connection.effectiveType : "",
        userAgent = navigator.userAgent || "",
        dt = new Date,
        tz = dt.getTimezoneOffset();                       
    
        let trackAPIserver = "https://analytics.bigads.co/impression"
        let uuid = generateUUID()
        let url = getReferrer()
    
     
    
        let isInView = false;
        let isUserInteracted = false;
        let isEngageRecorded = false;
        
        function createImgPixel(t, val = ''){
        
            if(t ==='impression'){
                let bodyData = {
                    c: '67b6646714267f48d50c6626', 
                    mode: 'production', 
                    u: uuid, 
                    t: t,
                    ts: Date.now(), 
                    v: val, 
                    tz:timeZone, 
                    tzo: tz, 
                    r: url,
                    dt:'',
                    ua: userAgent
                };
                fetch(trackAPIserver, 
                    { body: JSON.stringify(bodyData),
                    headers: { "Content-Type": "application/json" }, method: "POST" }).then(e => e.json()).then(e => {});
            }
            else{
                setTimeout(() => {
                    let src = trackAPIserver + '?c=' + '67b6646714267f48d50c6626' + '&u=' + uuid + '&t=' + t + '&ts=' + Date.now() + '&v=' + val + '&mode=' + 'production'
                    let ri = new Image;
                    ri.src = src;
                    ri.setAttribute("style", "position:absolute;display:none;")        
                
                    document.body.appendChild(ri);  
                }, 100)
                
            }
            
        }
        
        function recordImpression(){
            createImgPixel('impression') 
        }
    
        function recordLoadedImpression(){
            createImgPixel('loaded') 
        }
    
        function recordOnScreenImpression(){
            createImgPixel('onscreen')
          
          
        }
    
        function recordViewability(v){
            createImgPixel('view',v)
            
           
        }
    
        function recordEngagements(ev){        
            
            if(!isEngageRecorded){
                createImgPixel('engagement', ev) 
                isEngageRecorded = true;
            }
            
            
        }
    
        function recordClick(t){
            t ? console.log("tap"): null;
            createImgPixel('click')
    
           
        }
    
        function recordVideoEvents(ev, index){
   
            //createImgPixel(index === 0 ? 'video': 'video_' + index , ev)
        
        }
        
    
    
    let nodeF = 'CANVAS';
    let nodeId = 'canv_';
    let isExactIdMatch = false;
    let nodeParentId = 'false';
    let hasVideo = true;
    let isOutsideIframe = true;
    let isScrollo = false;
    let isProskindesktop = true;
    let isAirtime = false;
    let isCustom = false;
    let isProskinmobile = false;
    let isSocial = false;
    let socialClass = isSocial ? 'undefined' : false


    let mainObserveElement = isOutsideIframe ? top.document: document; 

    let isAdRendered = false;

    recordImpression();
    
    function checkParentNode(node){

        if(nodeParentId !== 'false'){
            if(node.parentElement && node.parentElement.id == nodeParentId){
                return true
            }
            return false
        }
        return true
    }
    
    function checkNodeId(node){
        
        if(nodeId !== 'false'){
            if(isExactIdMatch){
                return checkParentNode(node) && (node.id == nodeId)
            }
            else{     
                return checkParentNode(node) && node.id.startsWith(nodeId)
            }        
        }
        else{
          return true;
        }
        
        
    }
    
    
    function handleElementAdded(mutationsList, observer) {
    
        mutationsList.forEach(mutation => {
        
            mutation.nextSibling?.childNodes.forEach(node => {
            
              
                if (node.nodeType === Node.ELEMENT_NODE && node.tagName === nodeF && checkNodeId(node)){
                    
                 
                    addAllListeners(node, observer)
                    let proskinmobileContainer = false
                    if (isProskinmobile){
                        proskinmobileContainer = mainObserveElement && mainObserveElement.querySelectorAll('.air-header-sticky-bg');
                    }
                    if(proskinmobileContainer?.length){
                        addAllListeners(proskinmobileContainer[0])
                    }
                    
                }
            });
            mutation.addedNodes.forEach(node => {
           
              
                if (node.nodeType === Node.ELEMENT_NODE && node.tagName === nodeF && checkNodeId(node)){
                    
                   
                    addAllListeners(node, observer)
                    let proskinmobileContainer = false
                    if (isProskinmobile){
                        proskinmobileContainer = mainObserveElement && mainObserveElement.querySelectorAll('.air-header-sticky-bg');
                    }
                    if(proskinmobileContainer?.length){
                        addAllListeners(proskinmobileContainer[0])
                    }
                    
                }
            });
        });   
    }
    
    function disconnectObserver(o){
       console.log("Observer Disconnected")
        o.disconnect();
    }
    
    
    
    const observerOptions = { childList: true, subtree: true};
    const observer = new MutationObserver(handleElementAdded);
    
    //observer.observe(mainObserveElement, observerOptions); 
    
     setTimeout(() => {
                          let mainContainer = mainObserveElement && mainObserveElement.querySelector('[id^='+nodeId+']');
                          let proskinmobileContainer = false
                          if (isProskinmobile){
                            proskinmobileContainer = mainObserveElement && mainObserveElement.querySelectorAll('.air-header-sticky-bg');
                          }
                   
                    if(mainContainer && nodeId !=='false'){
                       // console.log(mainContainer);
                        addAllListeners(mainContainer)
                         if(proskinmobileContainer?.length){
                            addAllListeners(proskinmobileContainer[0])
                        }
                    }
                    else{
                            observer.observe(mainObserveElement, observerOptions); 

                    }
                        }, 500);
                        
   
    let startTime = performance.now();

    function checkIfAdRendered(){
        //console.log(isAdRendered, "sfdsf")
        
        let currentTime = performance.now();
        if ((currentTime - startTime >= 5000) || isAdRendered) {
            return false;
        }
        else{
           
            let mainContainer = mainObserveElement && mainObserveElement.querySelector(nodeId !== 'false' ? '[id^='+nodeId+']' : nodeF );
            let proskinmobileContainer = false
            if (isProskinmobile){
                proskinmobileContainer = mainObserveElement && mainObserveElement.querySelectorAll('.air-header-sticky-bg');
            }
            
            if(mainContainer){
               
                
                addAllListeners(mainContainer)
                
                if(proskinmobileContainer?.length){
                    addAllListeners(proskinmobileContainer[0])
                }
            }
            else {
                requestAnimationFrame(() => {
                    checkIfAdRendered()
                })            
            }
            
        }   
    }

    setTimeout( () => { checkIfAdRendered() }, 1000)

    function addAllListeners(mainContainer, observer = false){
        isAdRendered = true;
        
        
        if(observer){
            disconnectObserver(observer)
        }
        
        recordLoadedImpression();
        addEngagementEventListener(mainContainer);
        addViewabilityCheckEvent(mainContainer)
        
        if(isScrollo || isProskindesktop || isAirtime || isCustom || isProskinmobile || isSocial){
            addExtraListener(mainContainer)
        }
        
        if (hasVideo) {                   
        
            setTimeout(() => {
                observeVideoElement()
            }, 100)
            
        }
    
        
    }
    
    function addExtraListener(el){
    setTimeout(() => {
            if(isScrollo){
             let frameList = el.querySelectorAll('.ay-ad-frame');
                for (i = 0; i < frameList.length; i++) {
                    let el = frameList[i];
                    try {
                        var iframeDoc = el.contentDocument || el.contentWindow.document;
                        var script = iframeDoc.createElement('script');                   
                        var code = "setTimeout(()=>{var hotspots=document.getElementsByClassName('air-ad__hotspot');Array.from(hotspots).forEach(function(hotspot){hotspot.addEventListener('click',function(event){let src='" + trackAPIserver+'?c='+'67b6646714267f48d50c6626'+'&u='+uuid+'&t=click'+'&mode=' + 'production'+'&ts='+Date.now()+"&v='" + ";let ri=new Image;ri.src=src;ri.setAttribute('style','position:absolute;display:none;');document.body.appendChild(ri)})})},100);"
                        script.appendChild(iframeDoc.createTextNode(code));
                        iframeDoc.body.appendChild(script);
                    } catch (e) {
                        console.warn(e.message)
                    }                
                
                }

            }
            else if (isProskindesktop){
                try {
                    var script = top.document.createElement('script');                   
                    var code = "setTimeout(()=>{function createImgPixel(t,val=''){let src='" + trackAPIserver +'?c='+'67b6646714267f48d50c6626'+'&u='+uuid + "'" +";src+= '&t='+t+ '&mode=' + 'production'+'&ts='+Date.now()+'&v=' + val; let ri=new Image;ri.src=src;ri.setAttribute('style','position:absolute;display:none;');setTimeout(()=>{document.body.appendChild(ri)},100)}function recordClick(){createImgPixel('click')}function recordVideoEvents(ev){console.log('video',ev)}let videoList=top.document.querySelectorAll(`[id^='https://media-adcanvas-com']`);for(i=0;i<videoList.length;i++){let el=videoList[i];addVideoEventListener(el)}function addVideoEventListener(el){let isVideoStarted=false;let is25PercentPlayed=false;let is50PercentPlayed=false;let is75PercentPlayed=false;let is100PercentPlayed=false;let isVideoEnded=false;el.addEventListener('timeupdate',()=>{const playedRatio=el.currentTime/el.duration;const playedPercentage=Math.round(playedRatio*100);if(playedPercentage>0&&!isVideoStarted){isVideoStarted=true;recordVideoEvents('started')}if(playedPercentage>=25&&!is25PercentPlayed){is25PercentPlayed=true;recordVideoEvents('w25')}if(playedPercentage>=50&&!is50PercentPlayed){is50PercentPlayed=true;recordVideoEvents('w50')}if(playedPercentage>=75&&!is75PercentPlayed){is75PercentPlayed=true;recordVideoEvents('w75')}if(playedPercentage>=100&&!is100PercentPlayed){is100PercentPlayed=true;recordVideoEvents('w100');isVideoEnded=true}})}},2000);";
                    script.appendChild(top.document.createTextNode(code));
                    top.document.body.appendChild(script);
                } catch (e) {
                    console.warn(e.message)
                }    
                
            }
            else if (isAirtime){
             
                
                let frameList = el.querySelectorAll('#airtime_container');
                
        for (i = 0; i < frameList.length; i++) {
            let el = frameList[i];
 
                try {
                    var iframeDoc = el.contentDocument || el.contentWindow.document;
                    

                    var script = iframeDoc.createElement('script');                   
            
                    var code = `setTimeout(()=>{function createImgPixel(t,val=''){let src=' ` + trackAPIserver + '?c=' + '67b6646714267f48d50c6626' + '&u=' + uuid + "&t='" + `;
                            src += t + '&mode=' + 'production' + '&ts=' + Date.now() + '&v=' + val;
                            
                            let ri = new Image;
                            ri.src = src;
                            ri.setAttribute("style", "position:absolute;display:none;");setTimeout(()=>{document.body.appendChild(ri)},100)}function recordClick(){createImgPixel('click')}function recordVideoEvents(ev){console.log('video',ev)}var hotspots=document.getElementsByTagName('canvas');Array.from(hotspots).forEach(function(hotspot){hotspot.parentElement.addEventListener('click',function(event){recordClick()})});let videoList=document.querySelectorAll('video');for(i=0;i<videoList.length;i++){let el=videoList[i];addVideoEventListener(el)}function addVideoEventListener(el){let isVideoStarted=false;let is25PercentPlayed=false;let is50PercentPlayed=false;let is75PercentPlayed=false;let is100PercentPlayed=false;let isVideoEnded=false;el.addEventListener('timeupdate',()=>{const playedRatio=el.currentTime/el.duration;const playedPercentage=Math.round(playedRatio*100);if(playedPercentage>0&&!isVideoStarted){isVideoStarted=true;recordVideoEvents('started')}if(playedPercentage>=25&&!is25PercentPlayed){is25PercentPlayed=true;recordVideoEvents('w25')}if(playedPercentage>=50&&!is50PercentPlayed){is50PercentPlayed=true;recordVideoEvents('w50')}if(playedPercentage>=75&&!is75PercentPlayed){is75PercentPlayed=true;recordVideoEvents('w75')}if(playedPercentage>=100&&!is100PercentPlayed){is100PercentPlayed=true;recordVideoEvents('w100');isVideoEnded=true}})}},2000)`;
                    
                    script.appendChild(iframeDoc.createTextNode(code));
                    
                    iframeDoc.body.appendChild(script);
                } catch (e) {
                    console.warn(e.message)
                }                
            
        }
            }
            else if (isCustom){
                
             let frameList = el.querySelectorAll('#airFrame');
                for (i = 0; i < frameList.length; i++) {
                    let el = frameList[i];
                    try {
                        var iframeDoc = el.contentDocument || el.contentWindow.document;
                        var script = iframeDoc.createElement('script');                   
                        var code = "setTimeout(()=>{var hotspots=document.getElementsByClassName('gwd-page-content');Array.from(hotspots).forEach(function(hotspot){var isMoved = false;hotspot.addEventListener('touchmove',function(event){isMoved = true;});hotspot.addEventListener('touchend',function(event){if(!isMoved){let src='" + trackAPIserver+'?c='+'67b6646714267f48d50c6626'+'&u='+uuid+'&t=click'+'&mode=' + 'production' +'&ts='+Date.now()+"&v='" + ";let ri=new Image;ri.src=src;ri.setAttribute('style','position:absolute;display:none;');document.body.appendChild(ri);}isMoved = false;});hotspot.addEventListener('click',function(event){let src='" + trackAPIserver+'?c='+'67b6646714267f48d50c6626'+'&u='+uuid+'&t=click'+'&mode=' + 'production'+ '&ts='+Date.now()+"&v='" + ";let ri=new Image;ri.src=src;ri.setAttribute('style','position:absolute;display:none;');document.body.appendChild(ri)})})},100);"
                        script.appendChild(iframeDoc.createTextNode(code));
                        iframeDoc.body.appendChild(script);
                    } catch (e) {
                        console.warn(e.message)
                    }                
                
                }

            }
             else if (isSocial){
             
             let frameList = el.querySelectorAll('.ay-ad-frame');
                         

                for (i = 0; i < frameList.length; i++) {
                    let el = frameList[i];
                    try {
                        var iframeDoc = el.contentDocument || el.contentWindow.document;
                        var script = iframeDoc.createElement('script');                   
                        var code = "setTimeout(()=>{var hotspots=document.querySelectorAll('" + socialClass + "');Array.from(hotspots).forEach(function(hotspot){var isMoved = false;hotspot.addEventListener('touchmove',function(event){isMoved = true;});hotspot.addEventListener('touchend',function(event){if(!isMoved){let src='" + trackAPIserver+'?c='+'67b6646714267f48d50c6626'+'&u='+uuid+'&t=click'+ '&mode=' + 'production' + '&ts='+Date.now()+"&v='" + ";let ri=new Image;ri.src=src;ri.setAttribute('style','position:absolute;display:none;');document.body.appendChild(ri);}isMoved = false;});hotspot.addEventListener('click',function(event){let src='" + trackAPIserver+'?c='+'67b6646714267f48d50c6626'+'&u='+uuid+'&t=click'+ '&mode=' + 'production' + '&ts='+Date.now()+"&v='" + ";let ri=new Image;ri.src=src;ri.setAttribute('style','position:absolute;display:none;');document.body.appendChild(ri)})})},100);"
                        script.appendChild(iframeDoc.createTextNode(code));
                        iframeDoc.body.appendChild(script);
                    } catch (e) {
                        console.warn(e.message)
                    }                
                
                }

            }
            else if (isProskinmobile){
                
                    try {
                        var script = document.createElement('script');                   
                        var code = `setTimeout(()=>{function createImgPixel(t,val=''){let src=' ` + trackAPIserver + '?c=' + '67b6646714267f48d50c6626' + '&u=' + uuid + "&t='" + `;
                            src += t + '&mode=' + 'production' + '&ts=' + Date.now() + '&v=' + val;
                            
                            let ri = new Image;
                            ri.src = src;
                            ri.setAttribute("style", "position:absolute;display:none;");
                            setTimeout(()=>{document.body.appendChild(ri)},100)}
                            function recordClick(){createImgPixel('click')}
                            function recordVideoEvents(ev){console.log('video',ev)}
                            var hotspots=document.querySelectorAll('.air-slider__slide-content');
                            Array.from(hotspots).forEach(function(hotspot){
                            var isMoved = false;
                            hotspot.addEventListener('touchmove',function(event){
                             isMoved = true
                            })
                            hotspot.addEventListener('touchend',function(event){
                                if(!isMoved){
                                    recordClick()
                                }
                                isMoved = false
                            })
                                
                            });
                            let videoList=document.querySelectorAll('.ay-ad__video');
                            for(i=0;i<videoList.length;i++){let el=videoList[i];addVideoEventListener(el)}
                            function addVideoEventListener(el){
                            let isVideoStarted=false;let is25PercentPlayed=false;let is50PercentPlayed=false;let is75PercentPlayed=false;let is100PercentPlayed=false;let isVideoEnded=false;el.addEventListener('timeupdate',()=>{const playedRatio=el.currentTime/el.duration;const playedPercentage=Math.round(playedRatio*100);if(playedPercentage>0&&!isVideoStarted){isVideoStarted=true;recordVideoEvents('started')}if(playedPercentage>=25&&!is25PercentPlayed){is25PercentPlayed=true;recordVideoEvents('w25')}if(playedPercentage>=50&&!is50PercentPlayed){is50PercentPlayed=true;recordVideoEvents('w50')}if(playedPercentage>=75&&!is75PercentPlayed){is75PercentPlayed=true;recordVideoEvents('w75')}if(playedPercentage>=100&&!is100PercentPlayed){is100PercentPlayed=true;recordVideoEvents('w100');isVideoEnded=true}})}},1000)`;
                        script.appendChild(document.createTextNode(code));
                        el.appendChild(script);
                    } catch (e) {
                        console.warn(e.message)
                    }                
                
                

            }
           
           }, 1000);
        
        
    }


    function observeVideoElement(){
            const videoElement = document.querySelectorAll('video');
            if (videoElement?.length) {
                for (i = 0; i < videoElement.length; i++) {
                    let el = videoElement[i];
                    addVideoEventListener(el, i)   
                }   
            } else {
                console.log('No video');
            }
    }
    
    function addEngagementEventListener(el) {
        // Variables to store the initial position
        //console.log(el,"engagement")
        let startX = 0;
        let startY = 0;
        let isSwipe = false;
        let isMoved = false;
        
        el.addEventListener('touchmove', function (event) {
            isMoved = true; 
        });
        
        // Event listener for touchstart event (initial touch position)
        el.addEventListener('touchstart', function (event) {
            startX = event.touches[0].clientX;
            startY = event.touches[0].clientY;
        });
    
        // Event listener for touchend event (final touch position)
        el.addEventListener('touchend', function (event) {
            const endX = event.changedTouches[0].clientX;
            const endY = event.changedTouches[0].clientY;
    
            handleSwipe(endX, endY);
            
            //This is for mobile tap
            if (!isMoved) { 
                isUserInteracted = true;  
                recordClick(true)
            } 
            isMoved = false;
        });
    
        // Event listener for mousedown event (initial mouse position)
        el.addEventListener('mousedown', function (event) {
            startX = event.clientX;
            startY = event.clientY;
        });
    
        // Event listener for mouseup event (final mouse position)
        el.addEventListener('mouseup', function (event) {
            const endX = event.clientX;
            const endY = event.clientY;
    
            handleSwipe(endX, endY);
        });
    
        // Event listener for click event
        el.addEventListener('click', function (event) {
    
            if (!isSwipe) {
                recordClick();
            }
            // Reset the swipe flag
            isSwipe = false;
    
            isUserInteracted = true;
        }); 
    
            // Event listener for mouseover event (hover start)
        el.addEventListener('mouseover', function(event) {   
            recordEngagements('hover')
        });
        
        /* // Event listener for mouseout event (hover end)
        el.addEventListener('mouseout', function(event) {
            console.log('Hover end');
        }); 
        */
    
        // Function to handle swipe based on start and end positions
        function handleSwipe(endX, endY) {
            // Calculate the distance travelled in the horizontal and vertical directions
            const deltaX = endX - startX;
            const deltaY = endY - startY;
    
            // Determine if it's a swipe or tap based on the distance travelled
            if (Math.abs(deltaX) > 10 || Math.abs(deltaY) > 10) {
                // It's a swipe
                isSwipe = true;
                if (Math.abs(deltaX) > Math.abs(deltaY)) {
                    if (deltaX > 0) {
                        // Swipe right
                        //console.log('Swipe right');
                        
                        recordEngagements('sr')
                    } else {
                        // Swipe left
                        //console.log('Swipe left');
                        recordEngagements('sl')
                    }
                } else {
                    if (deltaY > 0) {
                        // Swipe down
                        //console.log('Swipe down');
                        recordEngagements('sd')
                    } else {
                        // Swipe up
                        //console.log('Swipe up');
                        recordEngagements('su')
                    }
                }
            }
           
        }
    }
    
    
    // Function to start the timer and continuously check viewability
    function addViewabilityCheckEvent(adElement) {
    
        let options = {
            root: null,
            rootMargin: '0px',
            threshold: 0
          };
        
          let lastVisibilityPercentage = -1;
          let dwellStartTime = null; // Track start time of dwell
          let dwellTime = 0; // Total dwell time
          let observer;
          let greaterThan50 = false;
          let timer;
          let interval;
          //let startTime = null;
          
    
        function calculateViewability(entries) {
            entries.forEach(function (entry) {
                if (entry.isIntersecting) {
    
                    if (!isInView) {
                        recordOnScreenImpression()
                        isInView = true;
                    }
                    let visiblePercentage = (entry.intersectionRatio * 100).toFixed(2);
                    //if (visiblePercentage != lastVisibilityPercentage) {
                    lastVisibilityPercentage = visiblePercentage;
    
                    let startTime = null;
                    if (parseFloat(visiblePercentage) > 50) {
                        if (!greaterThan50) {
                            startTime = performance.now();
                            //console.log(startTime, "start")
                        }
                        greaterThan50 = true;
                        let currentTime = performance.now();
                        //console.log(currentTime, "current")
                        if (currentTime - startTime >= 1000) {
                            recordViewability(lastVisibilityPercentage)
                            //console.log('Viewability Percentage:', visiblePercentage, lastVisibilityPercentage + '%');
                           /*  if (parseFloat(visiblePercentage) > 99) {
                                console.log("dw", dwellStartTime)
                                if (dwellStartTime === null) {
                                    dwellStartTime = Date.now();
                                }                            
                            } */
                            clearInterval(interval)
                            observer.disconnect(); // Stop observing if > 50% for more than 1 second
                        }
                       
                    }                
                    else {
                        greaterThan50 = false;
                        startTime = null;
                    }
                   
                }
          
                /* else {            
                    if (dwellStartTime !== null) {
                        dwellTime += Date.now() - dwellStartTime; // Calculate dwell time
                        dwellStartTime = null; // Reset dwell start time
                        console.log('Dwell Time:', (dwellTime / 1000).toFixed(2) + ' seconds');
                        // You can do whatever you want with the dwell time here
                    }
                    //console.log('Viewability Percentage: 0%');
                } */
            });
        }
    
          observer = new IntersectionObserver(calculateViewability, options);
            
          interval = setInterval(function() {
            observer.disconnect(); 
            observer.observe(adElement); 
          }, 500);
    
          
    }
    
    function addVideoEventListener(el, i){
    
        let isVideoStarted = false;
        let is25PercentPlayed = false;
        let is50PercentPlayed = false;
        let is75PercentPlayed = false;
        let is100PercentPlayed = false;
        let isVideoEnded = false;
    
        let lastVolume = el.volume;
        let lastMutedState = el.muted;
        
      el.addEventListener('play', () => {
        if(isInView){
            if(isUserInteracted){
              recordEngagements(i + '_play')
            }
           
        }     
      });
    
      el.addEventListener('pause', () => {
        if(isInView){
            if(isUserInteracted){
                isVideoEnded ? recordVideoEvents('end', i): recordEngagements(i + '_pause')
            }
            else{
                isVideoEnded ? recordVideoEvents('end', i) : null
            }
        }
      });
    
      el.addEventListener('volumechange', () => {
          if (isInView) {
              if (el.volume !== lastVolume || el.muted !== lastMutedState) {
                  if (el.muted) {                  
                      recordEngagements(i + '_mute')
                  } else {
                      recordEngagements(i + '_unmute')                  
                  } 
                  lastVolume = el.volume;
                  lastMutedState = el.muted;
              }
        }
      });
    
      el.addEventListener('timeupdate', () => {
        const playedRatio = el.currentTime / el.duration;
        const playedPercentage = Math.round(playedRatio * 100);
        
        if (playedPercentage > 0 && !isVideoStarted) {
            isVideoStarted = true;        
            recordVideoEvents('started', i)
          }
        if (playedPercentage >= 25 && !is25PercentPlayed) {
            is25PercentPlayed = true;        
            recordVideoEvents('w25', i)
          }
          if (playedPercentage >= 50 && !is50PercentPlayed) {
            is50PercentPlayed = true;        
            recordVideoEvents('w50', i)
          }
          if (playedPercentage >= 75 && !is75PercentPlayed) {
            is75PercentPlayed = true;        
            recordVideoEvents('w75', i)
          }
          if (playedPercentage >= 100 && !is100PercentPlayed) {
            is100PercentPlayed = true;        
            recordVideoEvents('w100', i)
    
            isVideoEnded = true;
          }
      });
    }
    })()