"use strict";L.DomUtil.setTransform=L.DomUtil.setTransform||function(t,n,e){var i=n||new L.Point(0,0);t.style[L.DomUtil.TRANSFORM]=(L.Browser.ie3d?"translate("+i.x+"px,"+i.y+"px)":"translate3d("+i.x+"px,"+i.y+"px,0)")+(e?" scale("+e+")":"")},L.CanvasLayer=(L.Layer?L.Layer:L.Class).extend({initialize:function(t){this._map=null,this._canvas=null,this._frame=null,this._delegate=null,L.setOptions(this,t)},delegate:function(t){return this._delegate=t,this},needRedraw:function(){return this._frame||(this._frame=L.Util.requestAnimFrame(this.drawLayer,this)),this},_onLayerDidResize:function(t){this._canvas.width=t.newSize.x,this._canvas.height=t.newSize.y},_onLayerDidMove:function(){var t=this._map.containerPointToLayerPoint([0,0]);L.DomUtil.setPosition(this._canvas,t),this.drawLayer()},getEvents:function(){var t={resize:this._onLayerDidResize,moveend:this._onLayerDidMove};return this._map.options.zoomAnimation&&L.Browser.any3d&&(t.zoomanim=this._animateZoom),t},onAdd:function(t){this._map=t,this._canvas=L.DomUtil.create("canvas","leaflet-layer"),this.tiles={};var n=this._map.getSize();this._canvas.width=n.x,this._canvas.height=n.y;var e=this._map.options.zoomAnimation&&L.Browser.any3d;L.DomUtil.addClass(this._canvas,"leaflet-zoom-"+(e?"animated":"hide")),t._panes.overlayPane.appendChild(this._canvas),t.on(this.getEvents(),this);var i=this._delegate||this;i.onLayerDidMount&&i.onLayerDidMount(),this.needRedraw()},onRemove:function(t){var n=this._delegate||this;n.onLayerWillUnmount&&n.onLayerWillUnmount(),t.getPanes().overlayPane.removeChild(this._canvas),t.off(this.getEvents(),this),this._canvas=null},addTo:function(t){return t.addLayer(this),this},LatLonToMercator:function(t){return{x:6378137*t.lng*Math.PI/180,y:6378137*Math.log(Math.tan((90+t.lat)*Math.PI/360))}},drawLayer:function(){var t=this._map.getSize(),n=this._map.getBounds(),e=this._map.getZoom(),i=this.LatLonToMercator(this._map.getCenter()),o=this.LatLonToMercator(this._map.containerPointToLatLng(this._map.getSize())),a=this._delegate||this;a.onDrawLayer&&a.onDrawLayer({layer:this,canvas:this._canvas,bounds:n,size:t,zoom:e,center:i,corner:o}),this._frame=null},_setTransform:function(t,n,e){var i=n||new L.Point(0,0);t.style[L.DomUtil.TRANSFORM]=(L.Browser.ie3d?"translate("+i.x+"px,"+i.y+"px)":"translate3d("+i.x+"px,"+i.y+"px,0)")+(e?" scale("+e+")":"")},_animateZoom:function(t){var n=this._map.getZoomScale(t.zoom),e=L.Layer?this._map._latLngToNewLayerPoint(this._map.getBounds().getNorthWest(),t.zoom,t.center):this._map._getCenterOffset(t.center)._multiplyBy(-n).subtract(this._map._getMapPanePos());L.DomUtil.setTransform(this._canvas,e,n)}}),L.canvasLayer=function(){return new L.CanvasLayer},L.Control.Velocity=L.Control.extend({options:{position:"bottomleft",emptyString:"Unavailable"},onAdd:function(t){return this._container=L.DomUtil.create("div","leaflet-control-velocity"),L.DomEvent.disableClickPropagation(this._container),t.on("mousemove",this._onMouseMove,this),this._container.innerHTML=this.options.emptyString,this._container},onRemove:function(t){t.off("mousemove",this._onMouseMove,this)},vectorToSpeed:function(t,n){return Math.sqrt(Math.pow(t,2)+Math.pow(n,2))},vectorToDegrees:function(t,n){var e=Math.sqrt(Math.pow(t,2)+Math.pow(n,2));return(180*Math.atan2(t/e,n/e)/Math.PI+180).toFixed(3)},_onMouseMove:function(t){var n=this,e=this.options.leafletVelocity._map.containerPointToLatLng(L.point(t.containerPoint.x,t.containerPoint.y)),i=this.options.leafletVelocity._windy.interpolatePoint(e.lng,e.lat),o="";if(i&&!isNaN(i[0])&&!isNaN(i[1])&&i[2]){var a=i[1];a=a>0?a-=2*a:Math.abs(a),o=""+this.options.velocityType+" Direction: "+n.vectorToDegrees(i[0],a)+"°, "+this.options.velocityType+" Speed: "+n.vectorToSpeed(i[0],a).toFixed(1)+"m/s"}else o=this.options.displayEmptyString;n._container.innerHTML=o,0==$(".leaflet-control-velocity").index()&&$(".leaflet-control-velocity").insertAfter(".leaflet-control-mouseposition")}}),L.Map.mergeOptions({positionControl:!1}),L.Map.addInitHook((function(){this.options.positionControl&&(this.positionControl=new L.Control.MousePosition,this.addControl(this.positionControl))})),L.control.velocity=function(t){return new L.Control.Velocity(t)},L.VelocityLayer=(L.Layer?L.Layer:L.Class).extend({options:{displayValues:!0,displayOptions:{velocityType:"Velocity",displayPosition:"bottomleft",displayEmptyString:"No velocity data"},maxVelocity:10,colorScale:null,data:null},_map:null,_canvasLayer:null,_windy:null,_context:null,_timer:0,_mouseControl:null,initialize:function(t){L.setOptions(this,t)},onAdd:function(t){this._canvasLayer=L.canvasLayer().delegate(this),this._canvasLayer.addTo(t),this._map=t},onRemove:function(t){this._destroyWind()},setData:function(t){this.options.data=t,this._windy&&(this._windy.setData(t),this._clearAndRestart()),this.fire("load")},onDrawLayer:function(t,n){var e=this;this._windy?this.options.data&&(this._timer&&clearTimeout(e._timer),this._timer=setTimeout((function(){e._startWindy()}),750)):this._initWindy(this)},_startWindy:function(){var t=this._map.getBounds(),n=this._map.getSize();this._windy.start([[0,0],[n.x,n.y]],n.x,n.y,[[t._southWest.lng,t._southWest.lat],[t._northEast.lng,t._northEast.lat]])},_initWindy:function(t){this._windy=new Windy({canvas:t._canvasLayer._canvas,data:t.options.data,velocityScale:t.options.velocityScale||.005,minVelocity:t.options.minVelocity||0,maxVelocity:t.options.maxVelocity||10,colorScale:t.options.colorScale||null}),this._context=this._canvasLayer._canvas.getContext("2d"),this._canvasLayer._canvas.classList.add("velocity-overlay"),this.onDrawLayer(),this._map.on("dragstart",t._windy.stop),this._map.on("dragend",t._clearAndRestart),this._map.on("zoomstart",t._windy.stop),this._map.on("zoomend",t._clearAndRestart),this._map.on("resize",t._clearWind),this._initMouseHandler()},_initMouseHandler:function(){if(!this._mouseControl&&this.options.displayValues){var t=this.options.displayOptions||{};t.leafletVelocity=this,this._mouseControl=L.control.velocity(t).addTo(this._map)}},_clearAndRestart:function(){this._context&&this._context.clearRect(0,0,3e3,3e3),this._windy&&this._startWindy()},_clearWind:function(){this._windy&&this._windy.stop(),this._context&&this._context.clearRect(0,0,3e3,3e3)},_destroyWind:function(){this._timer&&clearTimeout(this._timer),this._windy&&this._windy.stop(),this._context&&this._context.clearRect(0,0,3e3,3e3),this._mouseControl&&this._map.removeControl(this._mouseControl),this._mouseControl=null,this._windy=null,this._map.removeLayer(this._canvasLayer)}}),L.velocityLayer=function(t){return new L.VelocityLayer(t)};var Windy=function(t){var n,e,i,o,a,r,s,l,h,c,u=t.minVelocity,d=t.maxVelocity,m=t.velocityScale*(Math.pow(window.devicePixelRatio,1/3)||1),y=Math.pow(window.devicePixelRatio,1/3)||1.6,f=t.colorScale||["rgb(36,104, 180)","rgb(60,157, 194)","rgb(128,205,193 )","rgb(151,218,168 )","rgb(198,231,181)","rgb(238,247,217)","rgb(255,238,159)","rgb(252,217,125)","rgb(255,182,100)","rgb(252,150,75)","rgb(250,112,52)","rgb(245,64,32)","rgb(237,45,28)","rgb(220,24,32)","rgb(180,0,35)"],_=[NaN,NaN,null],p=t.data,v=function(t,n,e,i,o,a){var r=1-t,s=1-n,l=r*s,h=t*s,c=r*n,u=t*n,d=e[0]*l+i[0]*h+o[0]*c+a[0]*u,m=e[1]*l+i[1]*h+o[1]*c+a[1]*u;return[d,m,Math.sqrt(d*d+m*m)]},g=function(t,i){if(!e)return null;var l,h=M(t-o,360)/r,c=(a-i)/s,u=Math.floor(h),d=u+1,m=Math.floor(c),y=m+1;if(l=e[m]){var f=l[u],_=l[d];if(L(f)&&L(_)&&(l=e[y])){var p=l[u],v=l[d];if(L(p)&&L(v))return n.interpolate(h-u,c-m,f,_,p,v)}}return null},L=function(t){return null!=t},M=function(t,n){return t-n*Math.floor(t/n)},w=function(t,n,e,i,o,a,r,s){var l=r[0]*a,h=r[1]*a,c=x(t,n,e,i,o,s);return r[0]=c[0]*l+c[2]*h,r[1]=c[1]*l+c[3]*h,r},x=function(t,n,e,i,o,a){var r=2*Math.PI,s=Math.pow(10,-5.2),l=n<0?s:-s,h=e<0?s:-s,c=z(e,n+l,a),u=z(e+h,n,a),d=Math.cos(e/360*r);return[(c[0]-i)/l/d,(c[1]-o)/l/d,(u[0]-i)/h,(u[1]-o)/h]},b=function(t,n,e){function i(n,e){var i=t[Math.round(n)];return i&&i[Math.round(e)]||_}i.release=function(){t=[]},i.randomize=function(t){var e,o,a=0;do{e=Math.round(Math.floor(Math.random()*n.width)+n.x),o=Math.round(Math.floor(Math.random()*n.height)+n.y)}while(null===i(e,o)[2]&&a++<30);return t.x=e,t.y=o,t},e(n,i)},T=function(t){return t/180*Math.PI},P=function(t){return t/(Math.PI/180)},C=function(t,n,e){var i=e.east-e.west,o=e.width/P(i)*360/(2*Math.PI),a=o/2*Math.log((1+Math.sin(e.south))/(1-Math.sin(e.south))),r=(e.height+a-n)/o,s=180/Math.PI*(2*Math.atan(Math.exp(r))-Math.PI/2);return[P(e.west)+t/e.width*P(i),s]},D=function(t){return Math.log(Math.tan(t/2+Math.PI/4))},z=function(t,n,e){var i=D(e.south),o=D(e.north),a=e.width/(e.east-e.west),r=e.height/(o-i),s=D(T(t));return[(T(n)-e.west)*a,s=(o-s)*r]},S=function(){R.field&&R.field.release(),c&&cancelAnimationFrame(c)},R={params:t,start:function(_,L,M,x){var P={south:T(x[0][1]),north:T(x[1][1]),east:T(x[1][0]),west:T(x[0][0]),width:L,height:M};S(),function(p,x){var T=(n=function(t){var n=null,e=null;return t.forEach((function(t){switch(t.header.parameterCategory+","+t.header.parameterNumber){case"1,2":case"2,2":n=t;break;case"1,3":case"2,3":e=t}})),function(t,n){var e=t.data,i=n.data;return{header:t.header,data:function(t){return[e[t],i[t]]},interpolate:v}}(n,e)}(p)).header;o=T.lo1,a=T.la1,r=T.dx,s=T.dy,l=T.nx,h=T.ny,(i=new Date(T.refTime)).setHours(i.getHours()+T.forecastTime),e=[];for(var D=0,z=Math.floor(l*r)>=360,S=0;S1e3)return void setTimeout(t,25);b(s,n,i)}()}(n,function(t,n,e){var i=t[0],o=t[1],a=Math.round(i[0]),r=Math.max(Math.floor(i[1],0),0);return Math.min(Math.ceil(o[0],n),n-1),{x:a,y:r,xMax:n,yMax:Math.min(Math.ceil(o[1],e),e-1),width:n,height:e}}(_,L,M),P,(function(n,e){R.field=e,function(n,e){var i,o,a=(i=u,o=d,f.indexFor=function(t){return Math.max(0,Math.min(f.length-1,Math.round((t-i)/(o-i)*(f.length-1))))},f),r=a.map((function(){return[]})),s=Math.round(n.width*n.height*.0033333333333333335);/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(navigator.userAgent)&&(s*=y);for(var l=[],h=0;h50&&(_=i-o%50,r.forEach((function(t){t.length=0})),l.forEach((function(t){t.age>50&&(e.randomize(t).age=0);var n=t.x,i=t.y,o=e(n,i),s=o[2];if(null===s)t.age=50;else{var l=n+o[0],h=i+o[1];null!==e(l,h)[2]?(t.xt=l,t.yt=h,r[a.indexFor(s)].push(t)):(t.x=l,t.y=h)}t.age+=1})),m.globalCompositeOperation="destination-in",m.fillRect(n.x,n.y,n.width,n.height),m.globalCompositeOperation="lighter",m.globalAlpha=.9,r.forEach((function(t,n){t.length>0&&(m.beginPath(),m.strokeStyle=a[n],t.forEach((function(t){m.moveTo(t.x,t.y),m.lineTo(t.xt,t.yt),t.x=t.xt,t.y=t.yt})),m.stroke())})))}()}(n,e)}))}({date:i,interpolate:g})}(p)},stop:S,createField:b,interpolatePoint:g,setData:function(t){p=t}};return R};window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)});