(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{245:function(e,t,n){var content=n(252);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,n(40).default)("b6be43da",content,!0,{sourceMap:!1})},248:function(e,t,n){var content=n(260);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,n(40).default)("79a4a3c3",content,!0,{sourceMap:!1})},249:function(e,t,n){var content=n(262);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,n(40).default)("7b2dd2e2",content,!0,{sourceMap:!1})},250:function(e,t,n){var content=n(265);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,n(40).default)("5b1aa63c",content,!0,{sourceMap:!1})},251:function(e,t,n){"use strict";n(245)},252:function(e,t,n){var o=n(39)(!1);o.push([e.i,".jumbotron[data-v-4954e1b9]{position:relative;overflow:hidden;background-color:#000;margin-bottom:0}.jumbotron video[data-v-4954e1b9]{position:absolute;z-index:1;top:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.3}.jumbotron .container[data-v-4954e1b9]{z-index:2;position:relative}.row[data-v-4954e1b9]{min-height:60vh}@media only screen and (max-width:575px){h1[data-v-4954e1b9]{font-size:4.5rem}}",""]),e.exports=o},259:function(e,t,n){"use strict";n(248)},260:function(e,t,n){var o=n(39)(!1);o.push([e.i,".scrolling-particles-container[data-v-9e1103bc]{width:100%;height:100%}.scrolling-particles-container canvas[data-v-9e1103bc]{width:100%;height:100%;position:absolute}.scrolling-particles-section[data-v-9e1103bc]{min-height:500px}",""]),e.exports=o},261:function(e,t,n){"use strict";n(249)},262:function(e,t,n){var o=n(39)(!1);o.push([e.i,".img[data-v-070c6734]{display:none}",""]),e.exports=o},264:function(e,t,n){"use strict";n(250)},265:function(e,t,n){var o=n(39)(!1);o.push([e.i,".contact-container{background-color:#000;color:#fff;min-height:300px}.contact-header{margin-top:75px}.submit-button{width:100%;border:none;margin-top:2rem;height:50px}.close-button,.submit-button,.submit-button:hover{background:#00a5a5}.close-button{width:100%;height:50px;color:#fff;display:inline-block;border-radius:.25rem;text-transform:uppercase;text-align:center;vertical-align:middle;border:none;font-size:14px;font-weight:500;letter-spacing:2px;margin-top:1rem}.close-button:hover{color:#fff}.contact-form .form-control{border-radius:0}.contact-form .form-control:focus{box-shadow:none}.contact-form .form-group label{font-size:11px;color:#a1a2a3;pointer-events:none;position:relative;z-index:5;margin:0;transition:transform .3s;transform-origin:0 0;transform:scale(1.5) translateY(10px);top:10px;max-width:0}.contact-form .form-group.not-empty label{color:#00a5a5;transform:none}.contact-form .form-control{padding:0;border:0;border-bottom:2px solid #a1a2a3;position:relative;z-index:2}.contact-form .form-control,.contact-form .form-control:focus,.contact-form .form-control:focus:hover{color:#00a5a5;background:none;outline:none}.contact-form .form-control:focus,.contact-form .form-control:focus:hover{border-bottom:2px solid transparent}.contact-form textarea{margin-top:5px}.underline-box{background:#00e664;background:linear-gradient(90deg,#00e664,#0064e6);height:2px;top:-2px;position:relative;z-index:1}.face-container{margin-top:75px;perspective:1000px;display:inline-block}@media only screen and (max-width:575px){.face-container{margin-top:33px}}.face{transform-style:preserve-3d;transition:.75s;position:absolute;z-index:999}.face:hover{transform:rotateY(25deg)}.face:hover.flipped{transform:rotateY(0deg)}.face__content{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute;top:0;left:0;box-shadow:10px 10px 34px -3px rgba(0,0,0,.5);transition:.75s;transform-origin:center}.face__content--front{background:#00e664;background:linear-gradient(90deg,#00e664,#0064e6);color:#fff;display:inline-block;border-radius:.25rem;text-transform:uppercase;text-align:center;vertical-align:middle;border:none;font-size:14px;font-weight:500;letter-spacing:2px;z-index:2;transform:rotateY(0deg);position:relative;width:175px;height:50px}.face__content--front:hover{color:#fff}.face__content--back{transform:rotateY(-180deg);background:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.25rem;overflow:hidden;height:0;width:0}.face.flipped .face__content--front{transform:rotateY(180deg)}.face.flipped .face__content--back{transform:rotateY(0deg)}.face__content--body{padding:3rem}",""]),e.exports=o},266:function(e,t,n){"use strict";n.r(t);var o={name:"videoHero",mounted:function(){}},r=(n(251),n(28)),l=Object(r.a)(o,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"jumbotron jumbotron-fluid",attrs:{id:"video-hero"}},[n("video",{attrs:{autoplay:"",muted:"",loop:"",playsInline:"",poster:"/images/video-screenshot.png"},domProps:{muted:!0}},[n("source",{attrs:{src:"/videos/Iphone - 736.mp4","data-src":"/videos/Iphone - 736.mp4",type:"video/mp4"}})]),e._v(" "),n("b-container",{staticClass:"text-white"},[n("b-row",{attrs:{"align-v":"center","align-h":"center"}},[n("div",[n("h1",{staticClass:"display-2 text-center",staticStyle:{"line-height":"1.5"}},[n("strong",[e._v("\n We Build Quality\n "),n("br"),e._v("\n Custom Web Applications\n ")])])])])],1)],1)}),[],!1,null,"4954e1b9",null).exports;function c(e,t){var n=t.fov*Math.PI/180;return 2*Math.tan(n/2)*Math.abs(e)}var f=n(244);n(253),n(8);var d=n(101),h=(n(255),{vertexShader:function(){return"\n varying float vOpacity;\n varying vec3 vUv;\n varying vec2 vUv2;\n attribute float spherePosX;\n attribute float spherePosY;\n attribute float spherePosZ;\n\n attribute float sphereColourR;\n attribute float sphereColourG;\n attribute float sphereColourB;\n varying float fsphereColourR;\n varying float fsphereColourG;\n varying float fsphereColourB;\n uniform float delta;\n\n attribute float deltaOffset;\n\n attribute float deltaOffsetX;\n attribute float deltaOffsetY;\n varying float fdeltaOffsetX;\n varying float fdeltaOffsetY;\n \n attribute float positionOffsetX;\n attribute float positionOffsetY;\n attribute float positionOffsetZ;\n\n varying float fdeltaOffset;\n\n float cubicInOut(float t) {\n return t < 0.5\n ? 4.0 * t * t * t\n : 0.5 * pow(2.0 * t - 2.0, 3.0) + 1.0;\n }\n\n float exponentialIn(float t) {\n return t == 0.0 ? t : pow(2.0, 10.0 * (t - 1.0));\n }\n\n float quarticOut(float t) {\n return pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n }\n\n float getOffsetTime(float t){\n\n float offsetTime = t + deltaOffset;\n\n if (offsetTime > 1.0){\n offsetTime = 1.0 - mod(offsetTime, 1.0);\n }\n else if (offsetTime < 0.0){\n offsetTime = mod(offsetTime, 1.0);\n }\n\n return offsetTime;\n }\n\n vec3 cubicBezier(vec3 p0, vec3 c0, vec3 c1, vec3 p1, float t) {\n float tn = 1.0 - t;\n return tn * tn * tn * p0 + 3.0 * tn * tn * t * c0 + 3.0 * tn * t * t * c1 + t * t * t * p1;\n }\n\n vec2 cubicBezier(vec2 p0, vec2 c0, vec2 c1, vec2 p1, float t) {\n float tn = 1.0 - t;\n return tn * tn * tn * p0 + 3.0 * tn * tn * t * c0 + 3.0 * tn * t * t * c1 + t * t * t * p1;\n }\n\n\n void main() {\n fsphereColourR = sphereColourR;\n fsphereColourG = sphereColourG;\n fsphereColourB = sphereColourB;\n\n fdeltaOffset = deltaOffset;\n\n\n vUv = position;\n vUv2 = uv;\n vOpacity = 1.0;\n\n vec3 p = position;\n\n\n fdeltaOffsetX = deltaOffsetX;\n fdeltaOffsetY = deltaOffsetY;\n float tProgress = clamp(delta - deltaOffsetX, 0.0, deltaOffsetY) / deltaOffsetY;\n\n float easedDelta = cubicInOut(tProgress);\n\n p.x = mix(p.x + positionOffsetX , spherePosX, tProgress);\n p.y = mix(p.y + positionOffsetY, spherePosY, tProgress);\n p.z = mix(p.z, spherePosZ, tProgress);\n\n vec4 modelViewPosition = modelViewMatrix * vec4(p, 1.0);\n\n gl_PointSize = 1.0;\n gl_Position = projectionMatrix * modelViewPosition;\n }\n "},fragmentShader:function(){return"\n uniform float delta;\n varying vec3 vUv;\n varying float vOpacity;\n\n uniform int textureIndex;\n uniform sampler2D texture0;\n uniform sampler2D texture1;\n uniform sampler2D texture2;\n\n varying vec2 vUv2;\n varying float fsphereColourR;\n varying float fsphereColourG;\n varying float fsphereColourB;\n varying float fdeltaOffset;\n\n varying float fdeltaOffsetX;\n varying float fdeltaOffsetY;\n\n float getOffsetTime(float t){\n\n float offsetTime = t + fdeltaOffset;\n\n if (offsetTime > 1.0){\n offsetTime = 1.0 - mod(offsetTime, 1.0);\n }\n else if (offsetTime < 0.0){\n offsetTime = mod(offsetTime, 1.0);\n }\n\n return offsetTime;\n }\n\n\n void main() {\n vec4 color = vec4(fsphereColourR, fsphereColourG, fsphereColourB, 1.0);\n\n float tProgress = clamp(delta - fdeltaOffsetX, 0.0, fdeltaOffsetY) / fdeltaOffsetY;\n\n if(textureIndex == 0){\n gl_FragColor = mix(texture2D(texture0, vUv2), color, tProgress);\n } else if (textureIndex == 1){\n gl_FragColor = mix(texture2D(texture1, vUv2), color, tProgress);\n } else if (textureIndex == 2){\n gl_FragColor = mix(texture2D(texture2, vUv2), color, tProgress);\n }\n\n }\n "},initShaderAttributes:function(e){var t=3*e.geometry.vertexCount;e.attributes.deltaOffsetX=new Float32Array(t),e.attributes.deltaOffsetY=new Float32Array(t),e.attributes.spherePosX=new Float32Array(t),e.attributes.spherePosY=new Float32Array(t),e.attributes.spherePosZ=new Float32Array(t),e.attributes.sphereColourR=new Float32Array(t),e.attributes.sphereColourG=new Float32Array(t),e.attributes.sphereColourB=new Float32Array(t),e.attributes.positionOffsetX=new Float32Array(t),e.attributes.positionOffsetY=new Float32Array(t),e.attributes.positionOffsetZ=new Float32Array(t),e.geometry.addAttribute("deltaOffsetX",new THREE.BufferAttribute(e.attributes.deltaOffsetX,1)),e.geometry.addAttribute("deltaOffsetY",new THREE.BufferAttribute(e.attributes.deltaOffsetY,1)),e.geometry.addAttribute("spherePosX",new THREE.BufferAttribute(e.attributes.spherePosX,1)),e.geometry.addAttribute("spherePosY",new THREE.BufferAttribute(e.attributes.spherePosY,1)),e.geometry.addAttribute("spherePosZ",new THREE.BufferAttribute(e.attributes.spherePosZ,1)),e.geometry.addAttribute("sphereColourR",new THREE.BufferAttribute(e.attributes.sphereColourR,1)),e.geometry.addAttribute("sphereColourG",new THREE.BufferAttribute(e.attributes.sphereColourG,1)),e.geometry.addAttribute("sphereColourB",new THREE.BufferAttribute(e.attributes.sphereColourB,1)),e.geometry.addAttribute("positionOffsetX",new THREE.BufferAttribute(e.attributes.positionOffsetX,1)),e.geometry.addAttribute("positionOffsetY",new THREE.BufferAttribute(e.attributes.positionOffsetY,1)),e.geometry.addAttribute("positionOffsetZ",new THREE.BufferAttribute(e.attributes.positionOffsetZ,1))},updatePositionOffsetAttribute:function(e){for(var i=0;i<3*e.geometry.vertexCount;i++)e.attributes.positionOffsetX[i]=e.scaledPosition.x/e.scaledFactor,e.attributes.positionOffsetY[i]=e.scaledPosition.y/e.scaledFactor,e.attributes.positionOffsetZ[i]=e.scaledPosition.z;e.geometry.attributes.positionOffsetX.needsUpdate=!0,e.geometry.attributes.positionOffsetY.needsUpdate=!0,e.geometry.attributes.positionOffsetZ.needsUpdate=!0},shaderConfig:{sphereRadius:1e3,particleSizeVariance:10,timingVariance:0,gradientFactorMax:0,color1:"#0064e6",color2:"#00e664"},setShaderConfig:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.shaderConfig.sphereRadius=e.sphereRadius||this.shaderConfig.sphereRadius,this.shaderConfig.particleSizeVariance=e.particleSizeVariance||this.shaderConfig.particleSizeVariance,this.shaderConfig.timingVariance=e.timingVariance||this.shaderConfig.timingVariance,this.shaderConfig.gradientFactorMax=e.gradientFactorMax||this.shaderConfig.gradientFactorMax,this.shaderConfig.color1=e.color1||this.shaderConfig.color1,this.shaderConfig.color2=e.color2||this.shaderConfig.color2},generateShaderAttributes:function(e){for(var t=this.shaderConfig.sphereRadius,n=this.shaderConfig.particleSizeVariance,o=this.shaderConfig.timingVariance,r=this.shaderConfig.gradientFactorMax,l=this.shaderConfig.color1,c=this.shaderConfig.color2,i=0;i30?f:rd?t(f,o):d==r?f:void 0}(n,o)),this.widthAtScreenDepth=function(e,t){return c(e,t)*t.aspect}(this.screenDepth,this.camera),this.heightAtScreenDepth=c(this.screenDepth,this.camera),this.zPlaneDepth=-this.screenDepth+this.cameraZ},handleOrientation:function(e){if(window._deviceOrientation){window._deviceOrientation.getScreenAdjustedQuaternion(),window._deviceOrientation.getScreenAdjustedMatrix();var t=window._deviceOrientation.getScreenAdjustedEuler();null==this.initialOrientation&&(this.initialOrientation={},this.initialOrientation.alpha=t.alpha,this.initialOrientation.beta=t.beta,this.initialOrientation.gamma=t.gamma),console.log(" alpha: "+t.alpha+" beta : "+t.beta+" gamma : "+t.gamma),console.log(this.initialOrientation);var n=this.initialOrientation.gamma-t.gamma,o=this.initialOrientation.beta-t.beta;console.log("ox: "+n+" oy: "+o),n/=45,o/=45;var r=Math.min(1,Math.max(-1,n)),l=Math.min(1,Math.max(-1,o)),c=r*this.cameraMoveFactor,f=-l*this.cameraMoveFactor;this.cameraTween=TweenMax.to(this.camera.position,.2,{x:c,y:f})}},onDocumentMouseMove:function(e){this.cameraTween&&this.cameraTween.kill();var t=e.clientX/window.innerWidth*2-1,n=-e.clientY/window.innerHeight*2+1,o=-t*this.cameraMoveFactor,r=-n*this.cameraMoveFactor;this.cameraTween=TweenMax.to(this.camera.position,.1,{x:o,y:r})},tryImageMaterialize:function(){for(var e=window.innerHeight/2,t=-1,i=0;i0&&o.unshift(t.target),e.contains(t.target)||function(e,t){if(!e||!t)return!1;for(var n=!1,i=0,o=t.length;i