1/* @preserve 2 * Leaflet 1.3.1, a JS library for interactive maps. http://leafletjs.com 3 * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade 4 */ 5!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ti,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function u(t){return h(t).split(/\s+/)}function l(t,i){t.hasOwnProperty("options")||(t.options=t.options?Qt(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}function _(t,i){return t.replace(ii,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-oi));return oi=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||si!==m)return si.call(window,e(t,i));t.call(i)}function g(t){t&&ri.call(window,t)}function v(){}function y(t){if("undefined"!=typeof L&&L&&L.Mixin){t=ei(t)?t:[t];for(var i=0;i<t.length;
5i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:ei(t)?new x(t[0],t[1]):void 0===t||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:ei(t)&&"object"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:"object"==typeof t&&"lat"in t?new M(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function Z(t,i,e,n){if(ei(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function S(t,i,e,n){return new Z(t,i,e,n)}function E(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function k(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?"L":"M")+a.x+" "+a.y;h+=i?Xi?"z":"x":""}return h||"M0 0"}function I(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function A(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function B(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(Qi,n,!1):"touchmove"===i?t.removeEventListener(te,n,!1):"touchend"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||"mouse"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||"mouse"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type="dblclick",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+"dblclick"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener("dblclick",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+"dblclick"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener("dblclick",o,!1),this}function V(t,i,e,n){if("object"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s<r;s++)G(t,i[s],e,n);return this}function q(t,i,e,n){if("object"==typeof i)for(var o in i)K(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)K(t,i[s],e,n);else{for(var a in t[le])K(t,a,t[le][a]);delete t[le]}return this}function G(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):"");if(t[le]&&t[le][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Ui&&0===i.indexOf("touch")?A(t,i,r,s):!Vi||"dblclick"!==i||!F||Ui&&Si?"addEventListener"in t?"mousewheel"===i?t.addEventListener("onw
5heel"in t?"wheel":"mousewheel",r,!1):"mouseenter"===i||"mouseleave"===i?(r=function(i){i=i||window.event,ot(t,i)&&a(i)},t.addEventListener("mouseenter"===i?"mouseover":"mouseout",r,!1)):("click"===i&&Ti&&(r=function(t){st(t,a)}),t.addEventListener(i,r,!1)):"attachEvent"in t&&t.attachEvent("on"+i,r):F(t,r,s),t[le]=t[le]||{},t[le][s]=r}function K(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):""),r=t[le]&&t[le][s];if(!r)return this;Ui&&0===i.indexOf("touch")?B(t,i,s):!Vi||"dblclick"!==i||!U||Ui&&Si?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,r,!1):"detachEvent"in t&&t.detachEvent("on"+i,r):U(t,s),t[le][s]=null}function Y(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,nt(t),this}function X(t){return G(t,"mousewheel",Y),this}function J(t){return V(t,"mousedown touchstart dblclick",Y),G(t,"click",et),this}function $(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Q(t){return $(t),Y(t),this}function tt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=i.getBoundingClientRect(),n=e.width/i.offsetWidth||1,o=e.height/i.offsetHeight||1;return new x(t.clientX/n-e.left-i.clientLeft,t.clientY/o-e.top-i.clientTop)}function it(t){return Pi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/ce:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function et(t){_e[t.type]=!0}function nt(t){var i=_e[t.type];return _e[t.type]=!1,i}function ot(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function st(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=pi&&e-pi;n&&n>100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return"string"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!dt(t,i)){var s=gt(t);ft(t,(s?s+" ":"")+i)}}function mt(t,i){void 0!==t.classList?t.classList.remove(i):ft(t,h((" "+gt(t)+" ").replace(" "+i+" "," ")))}function ft(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function gt(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function vt(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&yt(t,i)}function yt(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}function xt(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function wt(t,i,e){var n=i||new x(0,0);t.style[pe]=(Oi?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function Lt(t,i){t._leaflet_pos=i,Ni?wt(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function Pt(t){return t._leaflet_pos||new x(0,0)}function bt(){V(window,"dragstart",$)}function Tt(){q(window,"dragstart",$)}function zt(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mt(),ve=t,ye=t.style.outline,t.style.outline="none",V(window,"keydown",Mt))}function Mt(){ve&&(ve.style.outline=ye,ve=void 0,ye=void 0,q(window,"keydown",Mt))}function Ct(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=kt(t,e),t=St(t,e)}function Zt(t,i,e){return Math.sqrt(Rt(t,i,e,!0))}function St(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,Et(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function Et(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Rt(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)Ot(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function It(t,i,e,n,o){var s,r,a,h=n?Se:Bt(t,e),u=Bt(i,e);for(Se=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Bt(r=At(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function At(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Bt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=Bt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)):(h._code&l&&((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)),n.push(a));t=n}return t}function Wt(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ht;if(!a&&!r)return null;switch(r.type){case"Point":return e=l(a),u?u(t,e):new Xe(e);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new Xe(e));return new qe(h);case"LineString":case"MultiLineString":return n=Ft(a,"LineString"===r.type?0:1,l),new tn(n,i);case"Polygon":case"MultiPolygon":return n=Ft(a,"Polygon"===r.type?1:2,l),new en(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=Wt({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new qe(h);default:throw new Error("Invalid GeoJSON object.")}}function Ht(t){return new M(t[1],t[0],t[2])}function Ft(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Ft(t[s],i-1,e):(e||Ht)(t[s]),o.push(n);return o}function Ut(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Vt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Vt(t[s],i-1,e,n):Ut(t[s],n));return!i&&e&&o.push(o[0]),o}function qt(t,e){return t.feature?i({},t.feature,{geometry:e}):Gt(e)}function Gt(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}function Kt(t,i){return new nn(t,i)}function Yt(t,i){return new dn(t,i)}function Xt(t){return Yi?new fn(t):null}function Jt(t){return Xi||Ji?new xn(t):null}var $t=Object.freeze;Object.freeze=function(t){return t};var Qt=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ti=0,ii=/\{ *([\w_-]+) *\}/g,ei=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},ni="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",oi=0,si=window.requestAnimationFrame||p("RequestAnimationFrame")||m,ri=window.cancelAnimationFrame||p("CancelAnimationFrame")||p("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)},ai=(Object.freeze||Object)({freeze:$t,extend:i,create:Qt,bind:e,lastId:ti,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:ei,indexOf:d,emptyImageUrl:ni,requestFn:si,cancelFn:ri,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=Qt(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&"__super__"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(Qt(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.c
vendor: 6,244 bytes, line 5
5allInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var hi={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if("object"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};hi.addEventListener=hi.on,hi.removeEventListener=hi.clearAllEventListeners=hi.off,hi.addOneTimeEventListener=hi.once,hi.fireEvent=hi.fire,hi.hasEventListeners=hi.listens;var ui=v.extend(hi),li=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+a(this.x)+", "+a(this.y)+")"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat}
vendor: 2,436 bytes, line 5
5,getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof M||"lat"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+a(this.lat,t)+", "+a(this.lng,t)+")"},distanceTo:function(t){return _i.distance(this,C(t))},wrap:function(){return _i.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var ci={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;
vendor: 51,693 bytes, line 5
5var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},_i=i({},ci,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),di={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};Z.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var pi,mi,fi,gi,vi=i({},_i,{code:"EPSG:3857",projection:di,transformation:function(){var t=.5/(Math.PI*di.R);return S(t,.5,-t,.5)}()}),yi=i({},vi,{code:"EPSG:900913"}),xi=document.documentElement.style,wi="ActiveXObject"in window,Li=wi&&!document.addEventListener,Pi="msLaunchUri"in navigator&&!("documentMode"in document),bi=I("webkit"),Ti=I("android"),zi=I("android 2")||I("android 3"),Mi=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Ci=Ti&&I("Google")&&Mi<537&&!("AudioNode"in window),Zi=!!window.opera,Si=I("chrome"),Ei=I("gecko")&&!bi&&!Zi&&!wi,ki=!Si&&I("safari"),Ii=I("phantom"),Ai="OTransition"in xi,Bi=0===navigator.platform.indexOf("Win"),Oi=wi&&"transition"in xi,Ri="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!zi,Di="MozPerspective"in xi,Ni=!window.L_DISABLE_3D&&(Oi||Ri||Di)&&!Ai&&!Ii,ji="undefined"!=typeof orientation||I("mobile"),Wi=ji&&bi,Hi=ji&&Ri,Fi=!window.PointerEvent&&window.MSPointerEvent,Ui=!(!window.PointerEvent&&!Fi),Vi=!window.L_NO_TOUCH&&(Ui||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),qi=ji&&Zi,Gi=ji&&Ei,Ki=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Yi=!!document.createElement("canvas").getContext,Xi=!(!document.createElementNS||!E("svg").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ii,opera12:Ai,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?"MSPointerDown":"pointerdown",te=Fi?"MSPointerMove":"pointermove",ie=Fi?"MSPointerUp":"pointerup",ee=Fi?"MSPointerCancel":"pointercancel",ne=["INPUT","SELECT","OPTION"],oe={},se=!1,re=0,ae=Fi?"MSPointerDown":Ui?"pointerdown":"touchstart",he=Fi?"MSPointerUp":Ui?"pointerup":"touchend",ue="_leaflet_",le="_leaflet_events",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),me=xt(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),fe="webkitTransition"===me||"OTransition"===me?me+"End":"transitionend";if("onselectstart"in document)mi=function(){V(window,"selectstart",$)},fi=function(){q(window,"selectstart",$)};else{var ge=xt(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]="none"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),Lt(this._el,e),this.fire("step")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Le=ui.extend({options:{crs:vi,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=me&&Ni&&!qi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),V(this._proxy,fe,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new we,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){pt(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-L)/b,n=u(e)*P;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!Ni)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),L=Date.now(),P=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*P*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");V(i,"scroll",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,"leaflet-container"+(Vi?" leaflet-touch":"")+(Ki?" leaflet-retina":"")+(Li?" leaflet-oldie":"")+(ki?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=at(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Lt(this._mapPane,new x(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(pt(t.markerPane,"leaflet-zoom-hide"),pt(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];"contextmenu"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return Pt(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){mt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:"topright"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pt(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+" "+e+o;i[t+o]=ht("div",s,n)}var i=this._controlCorners={},e="leaflet-",n=this._controlContainer=ht("div",e+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return Pe.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){pt(this._container,"leaflet-control-layers-expanded"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(pt(this._form,"leaflet-control-layers-scrollbar"),this._form.style.height=t+"px"):mt(this._form,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return mt(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=ht("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),J(i),X(i);var n=this._form=ht("form",t+"-list");e&&(this._map.on("click",this.collapse,this),Ti||V(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ht("a",t+"-toggle",i);o.href="#",o.title="Layers",Vi?(V(o,"click",Q),V(o,"click",this.expand,this)):V(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=ht("div",t+"-base",n),this._separator=ht("div",t+"-separator",n),this._overlaysList=ht("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;lt(this._baseLayersList),lt(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=o):i=this._createRadioElement("leaflet-base-layers",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,"click",this._onInputClick,this);var s=document.createElement("span");s.innerHTML=" "+t.name;var r=document.createElement("div");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=ht("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),J(s),V(s,"click",Q),V(s,"click",o,this),V(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",i),t.on(e.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht("div",i,e)),t.imperial&&(this._iScale=ht("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:"bottomright",prefix:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht("div","leaflet-control-attribution"),J(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?"touchstart mousedown":"mousedown",Ie={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},Ae={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,"leaflet-zoom-anim")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ae[t.type],this._onMove,this),V(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||($(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Pt(this._element).subtract(e),pt(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),pt(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Lt(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){mt(document.body,"leaflet-dragging"),this._lastTarget&&(mt(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in Ae)q(document,Ae[t],this._onMove,this),q(document,Ie[t],this._onUp,this);Tt(),fi(),this._moved&&this._moving&&(g(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Be._dragging=!1}}),Oe=(Object.freeze||Object)({simplify:Ct,pointToSegmentDistance:Zt,closestPointOnSegment:function(t,i,e){return Rt(t,i,e)},clipSegment:It,_getEdgeIntersection:At,_getBitCode:Bt,_sqClosestPointOnSegment:Rt,isFlat:Dt,_flat:Nt}),Re=(Object.freeze||Object)({clipPolygon:jt}),De={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},Ne={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:"EPSG:3395",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:"EPSG:4326",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ve=Ue.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return n(t)}}),qe=Ve.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ve.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ve.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ge=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=w(n),s=w("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return i=i||document.createElement("img"),i.src=t,i},_getIconUrl:function(t){return Ki&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}}),Ke=Ge.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ke.imagePath||(Ke.imagePath=this._detectIconPath()),(this.options.imagePath||Ke.imagePath)+Ge.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ht("div","leaflet-default-icon-path",document.body),i=at(t,"background-image")||at(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Ye=Ze.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Be(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),pt(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&mt(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=L.DomUtil.getPosition(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),L.DomUtil.setPosition(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Pt(i._icon),o=i._map.layerPointToLatLng(n);e&&Lt(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Xe=Ue.extend({options:{icon:new Ke,interactive:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",bubblingMouseEvents:!1},initialize:function(t,i){l(this,i),this._latlng=C(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=C(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),pt(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(pt(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ut(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ut(this._shadow),this._shadow=null},_setPos:function(t){Lt(this._icon,t),this._shadow&&Lt(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(pt(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Ye)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ye(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;vt(this._icon,t),this._shadow&&vt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Je=Ue.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,f
vendor: 6,016 bytes, line 5
5illRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return l(this,t),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),$e=Je.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Je.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),Qe=$e.extend({initialize:function(t,e,n){if("number"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Je.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===_i.distance){var o=Math.PI/180,s=this._mRadius/_i.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),tn=Je.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=Rt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=It(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Ct(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Zt(t,a[o],a[n])<=h)return!0;return!1}});tn._flat=Nt;var en=tn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length}
vendor: 40,401 bytes, line 5
5,getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=tn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=jt(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Wt(t,s);return r?(r.feature=Gt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){"function"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),on={toGeoJSON:function(t){return qt(this,{type:"Point",coordinates:Ut(this.getLatLng(),t)})}};Xe.include(on),Qe.include(on),$e.include(on),tn.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=Vt(this._latlngs,i?1:0,!1,t);return qt(this,{type:(i?"Multi":"")+"LineString",coordinates:e})}}),en.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=i&&!Dt(this._latlngs[0]),n=Vt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qt(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ve.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qt(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Gt(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qt(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var sn=Kt,rn=Ue.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(pt(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ut(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ct(this._image),this},bringToBack:function(){return this._map&&_t(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:ht("img");pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),this.options.className&&pt(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,"load"),i.onerror=e(this._overlayOnError,this,"error"),this.options.crossOrigin&&(i.crossOrigin=""),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;wt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Lt(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){vt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),an=rn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:ht("video");if(pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,"load"),t){for(var n=i.getElementsByTagName("source"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;a<this._url.length;a++){var h=ht("source");h.src=this._url[a],i.appendChild(h)}}}}),hn=Ue.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&vt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&vt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(vt(this._container,0),this._removeTimeout=setTimeout(e(ut,void 0,this._container),200)):ut(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&ct(this._container),this},bringToBack:function(){return this._map&&_t(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?Lt(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),un=hn.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){hn.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Je||this._source.on("preclick",Y))},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Je||this._source.off("preclick",Y))},getEvents:function(){var t=hn.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=ht("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=ht("div",t+"-content-wrapper",i);if(this._contentNode=ht("div",t+"-content",e),J(e),X(this._contentNode),V(e,"contextmenu",Y),this._tipContainer=ht("div",t+"-tip-container",i),this._tip=ht("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=ht("a",t+"-close-button",i);n.href="#close",n.innerHTML="×",V(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(i.height=o+"px",pt(t,"leaflet-popup-scrolled")):mt(t,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Q(t),i instanceof Je?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var ln=hn.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=ht("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();"top"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):"center"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.x<n.x?(s="right",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),mt(e,"leaflet-tooltip-right"),mt(e,"leaflet-tooltip-left"),mt(e,"leaflet-tooltip-top"),mt(e,"leaflet-tooltip-bottom"),pt(e,"leaflet-tooltip-"+s),Lt(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&vt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Le.include({openTooltip:function(t,i,e){return t instanceof ln||(t=new ln(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ue.include({bindTooltip:function(t,i){return t instanceof ln?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new ln(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Vi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(pt(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(mt(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var cn=Ge.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});Ge.Default=Ke;var _n=Ue.extend({options:{tileSize:256,opacity:1,updateWhenIdle:ji,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ut(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(ct(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(_t(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof x?t:new x(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){vt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);vt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=ht("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(ut(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ht("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ut(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();Ni?wt(t.el,o,n):Lt(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute("src",ni),ut(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire("tileerror",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),dn=_n.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),Ti||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement("img");return V(n,"load",e(this._tileOnLoad,this,i,n)),V(n,"error",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=""),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");V(t,"mousemove",o(this._onMouseMove,32,this),this),V(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),V(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(","),n=[];for(i=0;i<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(et(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(mt(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(pt(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),gn=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),vn={_initContainer:function(){this._container=ht("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=gn("shape");pt(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=gn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=gn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=gn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=yn("g"),this._container.appendChild(this._rootGroup)}
vendor: 2,722 bytes, line 5
5,_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),Lt(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=yn("path");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,"leaflet-interactive"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))}
vendor: 13,842 bytes, line 5
5,_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){V(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){q(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht("div","leaflet-zoom-box",this._container),pt(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,"leaflet-crosshair")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Le.addInitHook("addHandler","boxZoom",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Le.addInitHook("addHandler","doubleClickZoom",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pt(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,"leaflet-grab"),mt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});Le.addInitHook("addHandler","dragging",bn),Le.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Tn=Ze.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),V(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),q(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){V(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){q(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys){if(n._panAnim&&n._panAnim._inProgress)return;i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds)}else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Q(t)}}});Le.addInitHook("addHandler","keyboard",Tn),Le.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var zn=Ze.extend({addHooks:function(){V(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){q(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=it(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Q(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook("addHandler","scrollWheelZoom",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){q(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&pt(n,"leaflet-active"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&mt(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook("addHandler","tap",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,"leaflet-touch-zoom"),V(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,"leaflet-touch-zoom"),q(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,"touchmove",this._onTouchMove,this),V(document,"touchend",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&s<1||this._zoom>i.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,"touchmove",this._onTouchMove),q(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook("addHandler","touchZoom",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version="1.3.1",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJ
vendor: 21,895 bytes, lines 5-723
5son=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}}); 6 7(function (root, factory) { 8 if (typeof define === 'function' && define.amd) { 9 // AMD. Register as an anonymous module. 10 define(['leaflet'], factory); 11 } else if (typeof modules === 'object' && module.exports) { 12 // define a Common JS module that relies on 'leaflet' 13 module.exports = factory(require('leaflet')); 14 } else { 15 // Assume Leaflet is loaded into global object L already 16 factory(L); 17 } 18}(this, function (L) { 19 'use strict'; 20 21 L.TileLayer.Provider = L.TileLayer.extend({ 22 initialize: function (arg, options) { 23 var providers = L.TileLayer.Provider.providers; 24 var parts = arg.split('.'); 25 26 var providerName = parts[0]; 27 var variantName = parts[1]; 28 29 if (!providers[providerName]) { 30 throw 'No such provider (' + providerName + ')'; 31 } 32 33 var provider = { 34 url: providers[providerName].url, 35 options: providers[providerName].options 36 }; 37 38 39 40 // overwrite values in provider from variant. 41 if (variantName && 'variants' in providers[providerName]) { 42 if (!(variantName in providers[providerName].variants)) { 43 throw 'No such variant of ' + providerName + ' (' + variantName + ')'; 44 } 45 var variant = providers[providerName].variants[variantName]; 46 var variantOptions; 47 if (typeof variant === 'string') { 48 variantOptions = { 49 variant: variant 50 }; 51 } else { 52 variantOptions = variant.options; 53 } 54 provider = { 55 url: variant.url || provider.url, 56 options: L.Util.extend({}, provider.options, variantOptions) 57 }; 58 } 59 60 // replace attribution placeholders with their values from toplevel provider attribution, 61 // recursively 62 var attributionReplacer = function (attr) { 63 if (attr.indexOf('{attribution.') === -1) { 64 return attr; 65 } 66 return attr.replace(/\{attribution.(\w*)\}/g, 67 function (match, attributionName) { 68 return attributionReplacer(providers[attributionName].options.attribution); 69 } 70 ); 71 }; 72 provider.options.attribution = attributionReplacer(provider.options.attribution); 73 74 // Compute final options combining provider options with any user overrides 75 var layerOpts = L.Util.extend({}, provider.options, options); 76 L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts); 77 } 78 }); 79 80 /** 81 * Definition of providers. 82 * see http://leafletjs.com/reference.html#tilelayer for options in the options map. 83 */ 84 85 L.TileLayer.Provider.providers = { 86 OpenStreetMap: { 87 url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 88 options: { 89 maxZoom: 19, 90 attribution: 91 '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' 92 }, 93 variants: { 94 Mapnik: {}, 95 DE: { 96 url: 'https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', 97 options: { 98 maxZoom: 18 99 } 100 }, 101 CH: { 102 url: 'https://tile.osm.ch/switzerland/{z}/{x}/{y}.png', 103 options: { 104 maxZoom: 18, 105 bounds: [[45, 5], [48, 11]] 106 } 107 }, 108 France: { 109 url: 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', 110 options: { 111 maxZoom: 20, 112 attribution: '© Openstreetmap France | {attribution.OpenStreetMap}' 113 } 114 }, 115 HOT: { 116 url: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', 117 options: { 118 attribution: 119 '{attribution.OpenStreetMap}, ' + 120 'Tiles style by <a href="https://www.hotosm.org/" target="_blank">Humanitarian OpenStreetMap Team</a> ' + 121 'hosted by <a href="https://openstreetmap.fr/" target="_blank">OpenStreetMap France</a>' 122 } 123 }, 124 BZH: { 125 url: 'https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', 126 options: { 127 attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="http://www.openstreetmap.bzh/" target="_blank">Breton OpenStreetMap Team</a>', 128 bounds: [[46.2, -5.5], [50, 0.7]] 129 } 130 } 131 } 132 }, 133 OpenSeaMap: { 134 url: 'https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', 135 options: { 136 attribution: 'Map data: © <a href="http://www.openseamap.org">OpenSeaMap</a> contributors' 137 } 138 }, 139 OpenPtMap: { 140 url: 'http://openptmap.org/tiles/{z}/{x}/{y}.png', 141 options: { 142 maxZoom: 17, 143 attribution: 'Map data: © <a href="http://www.openptmap.org">OpenPtMap</a> contributors' 144 } 145 }, 146 OpenTopoMap: { 147 url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', 148 options: { 149 maxZoom: 17, 150 attribution: 'Map data: {attribution.OpenStreetMap}, <a href="http://viewfinderpanoramas.org">SRTM</a> | Map style: © <a href="https://opentopomap.org">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 151 } 152 }, 153 OpenRailwayMap: { 154 url: 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', 155 options: { 156 maxZoom: 19, 157 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="https://www.OpenRailwayMap.org">OpenRailwayMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 158 } 159 }, 160 OpenFireMap: { 161 url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png', 162 options: { 163 maxZoom: 19, 164 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="http://www.openfiremap.org">OpenFireMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 165 } 166 }, 167 SafeCast: { 168 url: 'https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', 169 options: { 170 maxZoom: 16, 171 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="https://blog.safecast.org/about/">SafeCast</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 172 } 173 }, 174 Thunderforest: { 175 url: 'https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}', 176 options: { 177 attribution: 178 '© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}', 179 variant: 'cycle', 180 apikey: '<insert your api key here>', 181 maxZoom: 22 182 }, 183 variants: { 184 OpenCycleMap: 'cycle', 185 Transport: { 186 options: { 187 variant: 'transport' 188 } 189 }, 190 TransportDark: { 191 options: { 192 variant: 'transport-dark' 193 } 194 }, 195 SpinalMap: { 196 options: { 197 variant: 'spinal-map' 198 } 199 }, 200 Landscape: 'landscape', 201 Outdoors: 'outdoors', 202 Pioneer: 'pioneer', 203 MobileAtlas: 'mobile-atlas', 204 Neighbourhood: 'neighbourhood' 205 } 206 }, 207 CyclOSM: { 208 url: 'https://dev.{s}.tile.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', 209 options: { 210 maxZoom: 20, 211 attribution: '<a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render">CyclOSM</a> | Map data: {attribution.OpenStreetMap}' 212 } 213 }, 214 OpenMapSurfer: { 215 url: 'https://maps.heigit.org/openmapsurfer/tiles/{variant}/webmercator/{z}/{x}/{y}.png', 216 options: { 217 maxZoom: 19, 218 variant: 'roads', 219 attribution: 'Imagery from <a href="http://giscience.uni-hd.de/">GIScience Research Group @ University of Heidelberg</a> | Map data ' 220 }, 221 variants: { 222 Roads: { 223 options: { 224 variant: 'roads', 225 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 226 } 227 }, 228 Hybrid: { 229 options: { 230 variant: 'hybrid', 231 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 232 } 233 }, 234 AdminBounds: { 235 options: { 236 variant: 'adminb', 237 maxZoom: 18, 238 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 239 } 240 }, 241 ContourLines: { 242 options: { 243 variant: 'asterc', 244 maxZoom: 18, 245 minZoom: 13, 246 attribution: '{attribution.OpenMapSurfer} <a href="https://lpdaac.usgs.gov/products/aster_policies">ASTER GDEM</a>' 247 } 248 }, 249 Hillshade: { 250 options: { 251 variant: 'asterh', 252 maxZoom: 18, 253 attribution: '{attribution.OpenMapSurfer} <a href="https://lpdaac.usgs.gov/products/aster_policies">ASTER GDEM</a>, <a href="http://srtm.csi.cgiar.org/">SRTM</a>' 254 } 255 }, 256 ElementsAtRisk: { 257 options: { 258 variant: 'elements_at_risk', 259 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 260 } 261 } 262 } 263 }, 264 Hydda: { 265 url: 'https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', 266 options: { 267 maxZoom: 18, 268 variant: 'full', 269 attribution: 'Tiles courtesy of <a href="http://openstreetmap.se/" target="_blank">OpenStreetMap Sweden</a> — Map data {attribution.OpenStreetMap}' 270 }, 271 variants: { 272 Full: 'full', 273 Base: 'base', 274 RoadsAndLabels: 'roads_and_labels' 275 } 276 }, 277 MapBox: { 278 url: 'https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/{z}/{x}/{y}?access_token={accessToken}', 279 options: { 280 attribution: 281 '<a href="https://www.mapbox.com/about/maps/" target="_blank">© Mapbox</a> ' + 282 '{attribution.OpenStreetMap} ' + 283 '<a href="https://www.mapbox.com/map-feedback/" target="_blank">Improve this map</a>', 284 subdomains: 'abcd', 285 id: 'mapbox.streets', 286 accessToken: '<insert your access token here>', 287 maxZoom: 25, 288 tileSize: 512, 289 zoomOffset: -1, 290 } 291 }, 292 Stamen: { 293 url: 'https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}{r}.{ext}', 294 options: { 295 attribution: 296 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, ' + 297 '<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a> — ' + 298 'Map data {attribution.OpenStreetMap}', 299 subdomains: 'abcd', 300 minZoom: 0, 301 maxZoom: 20, 302 variant: 'toner', 303 ext: 'png' 304 }, 305 variants: { 306 Toner: 'toner', 307 TonerBackground: 'toner-background', 308 TonerHybrid: 'toner-hybrid', 309 TonerLines: 'toner-lines', 310 TonerLabels: 'toner-labels', 311 TonerLite: 'toner-lite', 312 Watercolor: { 313 url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', 314 options: { 315 variant: 'watercolor', 316 ext: 'jpg', 317 minZoom: 1, 318 maxZoom: 16 319 } 320 }, 321 Terrain: { 322 options: { 323 variant: 'terrain', 324 minZoom: 0, 325 maxZoom: 18 326 } 327 }, 328 TerrainBackground: { 329 options: { 330 variant: 'terrain-background', 331 minZoom: 0, 332 maxZoom: 18 333 } 334 }, 335 TerrainLabels: { 336 options: { 337 variant: 'terrain-labels', 338 minZoom: 0, 339 maxZoom: 18 340 } 341 }, 342 TopOSMRelief: { 343 url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', 344 options: { 345 variant: 'toposm-color-relief', 346 ext: 'jpg', 347 bounds: [[22, -132], [51, -56]] 348 } 349 }, 350 TopOSMFeatures: { 351 options: { 352 variant: 'toposm-features', 353 bounds: [[22, -132], [51, -56]], 354 opacity: 0.9 355 } 356 } 357 } 358 }, 359 TomTom: { 360 url: 'https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}', 361 options: { 362 variant: 'basic', 363 maxZoom: 22, 364 attribution: 365 '<a href="https://tomtom.com" target="_blank">© 1992 - ' + new Date().getFullYear() + ' TomTom.</a> ', 366 subdomains: 'abcd', 367 style: 'main', 368 ext: 'png', 369 apikey: '<insert your API key here>', 370 }, 371 variants: { 372 Basic: 'basic', 373 Hybrid: 'hybrid', 374 Labels: 'labels' 375 } 376 }, 377 Esri: { 378 url: 'https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', 379 options: { 380 variant: 'World_Street_Map', 381 attribution: 'Tiles © Esri' 382 }, 383 variants: { 384 WorldStreetMap: { 385 options: { 386 attribution: 387 '{attribution.Esri} — ' + 388 'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' 389 } 390 }, 391 DeLorme: { 392 options: { 393 variant: 'Specialty/DeLorme_World_Base_Map', 394 minZoom: 1, 395 maxZoom: 11, 396 attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' 397 } 398 }, 399 WorldTopoMap: { 400 options: { 401 variant: 'World_Topo_Map', 402 attribution: 403 '{attribution.Esri} — ' + 404 'Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community' 405 } 406 }, 407 WorldImagery: { 408 options: { 409 variant: 'World_Imagery', 410 attribution: 411 '{attribution.Esri} — ' + 412 'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' 413 } 414 }, 415 WorldTerrain: { 416 options: { 417 variant: 'World_Terrain_Base', 418 maxZoom: 13, 419 attribution: 420 '{attribution.Esri} — ' + 421 'Source: USGS, Esri, TANA, DeLorme, and NPS' 422 } 423 }, 424 WorldShadedRelief: { 425 options: { 426 variant: 'World_Shaded_Relief', 427 maxZoom: 13, 428 attribution: '{attribution.Esri} — Source: Esri' 429 } 430 }, 431 WorldPhysical: { 432 options: { 433 variant: 'World_Physical_Map', 434 maxZoom: 8, 435 attribution: '{attribution.Esri} — Source: US National Park Service' 436 } 437 }, 438 OceanBasemap: { 439 options: { 440 variant: 'Ocean_Basemap', 441 maxZoom: 13, 442 attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' 443 } 444 }, 445 NatGeoWorldMap: { 446 options: { 447 variant: 'NatGeo_World_Map', 448 maxZoom: 16, 449 attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' 450 } 451 }, 452 WorldGrayCanvas: { 453 options: { 454 variant: 'Canvas/World_Light_Gray_Base', 455 maxZoom: 16, 456 attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' 457 } 458 } 459 } 460 }, 461 OpenWeatherMap: { 462 url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}', 463 options: { 464 maxZoom: 19, 465 attribution: 'Map data © <a href="http://openweathermap.org">OpenWeatherMap</a>', 466 apiKey:'<insert your api key here>', 467 opacity: 0.5 468 }, 469 variants: { 470 Clouds: 'clouds', 471 CloudsClassic: 'clouds_cls', 472 Precipitation: 'precipitation', 473 PrecipitationClassic: 'precipitation_cls', 474 Rain: 'rain', 475 RainClassic: 'rain_cls', 476 Pressure: 'pressure', 477 PressureContour: 'pressure_cntr', 478 Wind: 'wind', 479 Temperature: 'temp', 480 Snow: 'snow' 481 } 482 }, 483 HERE: { 484 /* 485 * HERE maps, formerly Nokia maps. 486 * These basemaps are free, but you need an API key. Please sign up at 487 * https://developer.here.com/plans 488 */ 489 url: 490 'https://{s}.{base}.maps.api.here.com/maptile/2.1/' + 491 '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + 492 'app_id={app_id}&app_code={app_code}&lg={language}', 493 options: { 494 attribution: 495 'Map © 1987-' + new Date().getFullYear() + ' <a href="http://developer.here.com">HERE</a>', 496 subdomains: '1234', 497 mapID: 'newest', 498 'app_id': '<insert your app_id here>', 499 'app_code': '<insert your app_code here>', 500 base: 'base', 501 variant: 'normal.day', 502 maxZoom: 20, 503 type: 'maptile', 504 language: 'eng', 505 format: 'png8', 506 size: '256' 507 }, 508 variants: { 509 normalDay: 'normal.day', 510 normalDayCustom: 'normal.day.custom', 511 normalDayGrey: 'normal.day.grey', 512 normalDayMobile: 'normal.day.mobile', 513 normalDayGreyMobile: 'normal.day.grey.mobile', 514 normalDayTransit: 'normal.day.transit', 515 normalDayTransitMobile: 'normal.day.transit.mobile', 516 normalDayTraffic: { 517 options: { 518 variant: 'normal.traffic.day', 519 base: 'traffic', 520 type: 'traffictile' 521 } 522 }, 523 normalNight: 'normal.night', 524 normalNightMobile: 'normal.night.mobile', 525 normalNightGrey: 'normal.night.grey', 526 normalNightGreyMobile: 'normal.night.grey.mobile', 527 normalNightTransit: 'normal.night.transit', 528 normalNightTransitMobile: 'normal.night.transit.mobile', 529 reducedDay: 'reduced.day', 530 reducedNight: 'reduced.night', 531 basicMap: { 532 options: { 533 type: 'basetile' 534 } 535 }, 536 mapLabels: { 537 options: { 538 type: 'labeltile', 539 format: 'png' 540 } 541 }, 542 trafficFlow: { 543 options: { 544 base: 'traffic', 545 type: 'flowtile' 546 } 547 }, 548 carnavDayGrey: 'carnav.day.grey', 549 hybridDay: { 550 options: { 551 base: 'aerial', 552 variant: 'hybrid.day' 553 } 554 }, 555 hybridDayMobile: { 556 options: { 557 base: 'aerial', 558 variant: 'hybrid.day.mobile' 559 } 560 }, 561 hybridDayTransit: { 562 options: { 563 base: 'aerial', 564 variant: 'hybrid.day.transit' 565 } 566 }, 567 hybridDayGrey: { 568 options: { 569 base: 'aerial', 570 variant: 'hybrid.grey.day' 571 } 572 }, 573 hybridDayTraffic: { 574 options: { 575 variant: 'hybrid.traffic.day', 576 base: 'traffic', 577 type: 'traffictile' 578 } 579 }, 580 pedestrianDay: 'pedestrian.day', 581 pedestrianNight: 'pedestrian.night', 582 satelliteDay: { 583 options: { 584 base: 'aerial', 585 variant: 'satellite.day' 586 } 587 }, 588 terrainDay: { 589 options: { 590 base: 'aerial', 591 variant: 'terrain.day' 592 } 593 }, 594 terrainDayMobile: { 595 options: { 596 base: 'aerial', 597 variant: 'terrain.day.mobile' 598 } 599 } 600 } 601 }, 602 FreeMapSK: { 603 url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', 604 options: { 605 minZoom: 8, 606 maxZoom: 16, 607 subdomains: '1234', 608 bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], 609 attribution: 610 '{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 <a href="http://freemap.sk">Freemap.sk</a>' 611 } 612 }, 613 MtbMap: { 614 url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', 615 options: { 616 attribution: 617 '{attribution.OpenStreetMap} & USGS' 618 } 619 }, 620 CartoDB: { 621 url: 'https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png', 622 options: { 623 attribution: '{attribution.OpenStreetMap} © <a href="https://carto.com/attributions">CARTO</a>', 624 subdomains: 'abcd', 625 maxZoom: 19, 626 variant: 'light_all' 627 }, 628 variants: { 629 Positron: 'light_all', 630 PositronNoLabels: 'light_nolabels', 631 PositronOnlyLabels: 'light_only_labels', 632 DarkMatter: 'dark_all', 633 DarkMatterNoLabels: 'dark_nolabels', 634 DarkMatterOnlyLabels: 'dark_only_labels', 635 Voyager: 'rastertiles/voyager', 636 VoyagerNoLabels: 'rastertiles/voyager_nolabels', 637 VoyagerOnlyLabels: 'rastertiles/voyager_only_labels', 638 VoyagerLabelsUnder: 'rastertiles/voyager_labels_under' 639 } 640 }, 641 HikeBike: { 642 url: 'https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', 643 options: { 644 maxZoom: 19, 645 attribution: '{attribution.OpenStreetMap}', 646 variant: 'hikebike' 647 }, 648 variants: { 649 HikeBike: {}, 650 HillShading: { 651 options: { 652 maxZoom: 15, 653 variant: 'hillshading' 654 } 655 } 656 } 657 }, 658 BasemapAT: { 659 url: 'https://maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}', 660 options: { 661 maxZoom: 19, 662 attribution: 'Datenquelle: <a href="https://www.basemap.at">basemap.at</a>', 663 subdomains: ['', '1', '2', '3', '4'], 664 format: 'png', 665 bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], 666 variant: 'geolandbasemap' 667 }, 668 variants: { 669 basemap: { 670 options: { 671 maxZoom: 20, // currently only in Vienna 672 variant: 'geolandbasemap' 673 } 674 }, 675 grau: 'bmapgrau', 676 overlay: 'bmapoverlay', 677 highdpi: { 678 options: { 679 variant: 'bmaphidpi', 680 format: 'jpeg' 681 } 682 }, 683 orthofoto: { 684 options: { 685 maxZoom: 20, // currently only in Vienna 686 variant: 'bmaporthofoto30cm', 687 format: 'jpeg' 688 } 689 } 690 } 691 }, 692 nlmaps: { 693 url: 'https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png', 694 options: { 695 minZoom: 6, 696 maxZoom: 19, 697 bounds: [[50.5, 3.25], [54, 7.6]], 698 attribution: 'Kaartgegevens © <a href="kadaster.nl">Kadaster</a>' 699 }, 700 variants: { 701 'standaard': 'brtachtergrondkaart', 702 'pastel': 'brtachtergrondkaartpastel', 703 'grijs': 'brtachtergrondkaartgrijs', 704 'luchtfoto': { 705 'url': 'https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/1.0.0/2016_ortho25/EPSG:3857/{z}/{x}/{y}.png', 706 } 707 } 708 }, 709 NASAGIBS: { 710 url: 'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', 711 options: { 712 attribution: 713 'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + 714 '(<a href="https://earthdata.nasa.gov">ESDIS</a>) with funding provided by NASA/HQ.', 715 bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], 716 minZoom: 1, 717 maxZoom: 9, 718 format: 'jpg', 719 time: '', 720 tilematrixset: 'GoogleMapsCompatible_Level' 721 }, 722 variants: { 723 ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_True
723Color', 724 ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', 725 ViirsEarthAtNight2012: { 726 options: { 727 variant: 'VIIRS_CityLights_2012', 728 maxZoom: 8 729 } 730 }, 731 ModisTerraLSTDay: { 732 options: { 733 variant: 'MODIS_Terra_Land_Surface_Temp_Day', 734 format: 'png', 735 maxZoom: 7, 736 opacity: 0.75 737 } 738 }, 739 ModisTerraSnowCover: { 740 options: { 741 variant: 'MODIS_Terra_Snow_Cover', 742 format: 'png', 743 maxZoom: 8, 744 opacity: 0.75 745 } 746 }, 747 ModisTerraAOD: { 748 options: { 749 variant: 'MODIS_Terra_Aerosol', 750 format: 'png', 751 maxZoom: 6, 752 opacity: 0.75 753 } 754 }, 755 ModisTerraChlorophyll: { 756 options: { 757 variant: 'MODIS_Terra_Chlorophyll_A', 758 format: 'png', 759 maxZoom: 7, 760 opacity: 0.75 761 } 762 } 763 } 764 }, 765 NLS: { 766 // NLS maps are copyright National library of Scotland. 767 // http://maps.nls.uk/projects/api/index.html 768 // Please contact NLS for anything other than non-commercial low volume usage 769 // 770 // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s 771 // z0-9 - 1:1m 772 // z10-11 - quarter inch (1:253440) 773 // z12-18 - one inch (1:63360) 774 url: 'https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', 775 options: { 776 attribution: '<a href="http://geo.nls.uk/maps/">National Library of Scotland Historic Maps</a>', 777 bounds: [[49.6, -12], [61.7, 3]], 778 minZoom: 1, 779 maxZoom: 18, 780 subdomains: '0123', 781 } 782 }, 783 JusticeMap: { 784 // Justice Map (http://www.justicemap.org/) 785 // Visualize race and income data for your community, county and country. 786 // Includes tools for data journalists, bloggers and community activists. 787 url: 'http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png', 788 options: { 789 attribution: '<a href="http://www.justicemap.org/terms.php">Justice Map</a>', 790 // one of 'county', 'tract', 'block' 791 size: 'county', 792 // Bounds for USA, including Alaska and Hawaii 793 bounds: [[14, -180], [72, -56]] 794 }, 795 variants: { 796 income: 'income', 797 americanIndian: 'indian', 798 asian: 'asian', 799 black: 'black', 800 hispanic: 'hispanic', 801 multi: 'multi', 802 nonWhite: 'nonwhite', 803 white: 'white', 804 plurality: 'plural' 805 } 806 }, 807 Wikimedia: { 808 url: 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}{r}.png', 809 options: { 810 attribution: '<a href="https://wikimediafoundation.org/wiki/Maps_Terms_of_Use">Wikimedia</a>', 811 minZoom: 1, 812 maxZoom: 19 813 } 814 }, 815 GeoportailFrance: { 816 url: 'https://wxs.ign.fr/{apikey}
816/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', 817 options: { 818 attribution: '<a target="_blank" href="https://www.geoportail.gouv.fr/">Geoportail France</a>', 819 bounds: [[-75, -180], [81, 180]], 820 minZoom: 2, 821 maxZoom: 18, 822 // Get your own geoportail apikey here : http://professionnels.ign.fr/ign/contrats/ 823 // NB : 'choisirgeoportail' is a demonstration key that comes with no guarantee 824 apikey: 'choisirgeoportail', 825 format: 'image/jpeg', 826 style : 'normal', 827 variant: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD' 828 }, 829 variants: { 830 parcels: { 831 options : { 832 variant: 'CADASTRALPARCELS.PARCELS', 833 maxZoom: 20, 834 style : 'bdparcellaire', 835 format: 'image/png' 836 } 837 }, 838 ignMaps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS', 839 maps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD', 840 orthos: { 841 options: { 842 maxZoom: 19, 843 variant: 'ORTHOIMAGERY.ORTHOPHOTOS' 844 } 845 } 846 } 847 }, 848 OneMapSG: { 849 url: 'https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png', 850 options: { 851 variant: 'Default', 852 minZoom: 11, 853 maxZoom: 18, 854 bounds: [[1.56073, 104.11475], [1.16, 103.502]], 855 attribution: '<img src="https://docs.onemap.sg/maps/images/oneMap64-01.png" style="height:20px;width:20px;"/> New OneMap | Map data © contributors, <a href="http://SLA.gov.sg">Singapore Land Authority</a>' 856 }, 857 variants: { 858 Default: 'Default', 859 Night: 'Night', 860 Original: 'Original', 861 Grey: 'Grey', 862 LandLot: 'LandLot' 863 } 864 } 865 }; 866 867 L.tileLayer.provider = function (provider, options) { 868 return new L.TileLayer.Provider(provider, options); 869 }; 870 871 return L; 872})); 873 874(function ($) { 875 876 class GeoJsonAutocomplete { 877 constructor(inputElement, options = {}) { 878 this.inputElement = inputElement; 879 this.settings = Object.assign({ 880 geojsonServiceAddress: "https://nominatim.openstreetmap.org/search", 881 placeholderMessage: "Search...", 882 foundRecordsMessage: "showing results.", 883 limit: 10, 884 notFoundMessage: "not found.", 885 notFoundHint: "Make sure your search criteria is correct and try again.", 886 drawColor: "blue", 887 pointGeometryZoomLevel: -1, 888 pagingActive: true, 889 map_obj: null, 890 onSelect: null, // this is the callback 891 }, options); 892 893 this.activeResult = -1; 894 this.resultCount = 0; 895 this.lastSearch = ""; 896 this.searchLayer = null; 897 this.focusLayer = null; 898 this.searchLayerType = 0; 899 this.features = []; 900 this.featureCollection = []; 901 this.offset = 0; 902 this.collapseOnBlur = true; 903 904 this._init(); 905 } 906 907 _init() { 908 const $input = $(this.inputElement); 909 $input.parent().addClass("searchContainer wpgmp-autocomplete-wrapper"); 910 $input.val(""); 911 912 $input.on("keyup", this._debounce((e) => this._handleKeyUp(e), 300)); 913 $input.on("focus", () => this._showResults()); 914 $input.on("blur", (e) => this._handleBlur(e)); 915 } 916 917 _handleKeyUp(event) { 918 const target = $(event.target); 919 const keyCode = event.keyCode; 920 921 switch (keyCode) { 922 case 13: 923 this._search(target); 924 break; 925 case 38: 926 this._prevResult(target); 927 break; 928 case 40: 929 this._nextResult(target); 930 break; 931 case 37: 932 case 39: 933 break; 934 default: 935 if (target.val().length > 0) { 936 this.offset = 0; 937 this._fetchResults(false, target); 938 } else { 939 this._clearResults(target); 940 } 941 break; 942 } 943 } 944 945 _fetchResults(withPaging, target) { 946 this.activeResult = -1; 947 this.features = []; 948 this.featureCollection = []; 949 this.lastSearch = target.val(); 950 951 const query = { 952 q: this.lastSearch, 953 limit: this.settings.limit + (withPaging ? 1 : 0), 954 format: "json", 955 addressdetails: 1, 956 }; 957 958 if (this.settings.pagingActive) query.offset = this.offset; 959 960 $.getJSON(this.settings.geojsonServiceAddress, query) 961 .done((json) => { 962 this.resultCount = json.length; 963 this.features = json; 964 this.featureCollection = withPaging ? json.slice(0, json.length - 1) : json; 965 this._renderDropdown(withPaging, target); 966 }) 967 .fail(() => this._handleNoResults(target)); 968 } 969 970 _renderDropdown(withPaging, target) { 971 const $parent = $(target).parent(); 972 $parent.find(".resultsDiv").remove(); 973 974 const $resultsDiv = $(` 975 <div class='result resultsDiv'> 976 <ul class='list resultList wpgmp-autosuggest-results'></ul> 977 </div> 978 `); 979 $parent.append($resultsDiv); 980 981 const $list = $resultsDiv.find("ul"); 982 983 const loopCount = this.features.length - (withPaging ? 1 : 0); 984 985 for (let i = 0; i < loopCount; i++) { 986 const feature = this.features[i]; 987 const $item = $(` 988 <li class='listResult listElement${i}' data-index='${i}'>
989 <span class='content listElementContent${i}'> 990 <strong>${feature.display_name}</strong><br/> 991 <small>${feature.lat}, ${feature.lon}</small> 992 </span> 993 </li> 994 `); 995 $list.append($item); 996 997 $item.on("mouseenter", () => this._highlightItem(i, target)); 998 $item.on("mouseleave", () => this._unhighlightItem(i, target)); 999 $item.on("mousedown", () => this._selectItem(i, target)); 1000 } 1001 1002 // You can also add paging and styling logic here. 1003 } 1004 1005 _highlightItem(index, target) { 1006 $(target).parent().find(`.listElement${index}`).addClass("mouseover"); 1007 } 1008 1009 _unhighlightItem(index, target) { 1010 $(target).parent().find(`.listElement${index}`).removeClass("mouseover"); 1011 } 1012 1013 _selectItem(index, target) { 1014 this.activeResult = index; 1015 this._fillSearchBox(target); 1016 } 1017 1018 _showResults() { 1019 $(this.inputElement).parent().find(".wpgmp-autosuggest-results").show(); 1020 } 1021 1022 _handleBlur(e) { 1023 const input = e.target; 1024 const resultsDiv = $(input).closest('.searchContainer').find('.resultsDiv'); 1025 1026 setTimeout(() => { 1027 // Only hide if mouse is NOT on the results dropdown 1028 if (this.collapseOnBlur && !resultsDiv.is(':hover')) { 1029 resultsDiv.find('.wpgmp-autosuggest-results').hide(); 1030 } else { 1031 this.collapseOnBlur = true; 1032 $(input).focus(); // optional: re-focus if needed 1033 } 1034 }, 150); 1035 } 1036 1037 1038 _clearResults(target) { 1039 this.activeResult = -1; 1040 this.features = []; 1041 this.lastSearch = ""; 1042 $(target).parent().find(".resultsDiv").remove(); 1043 } 1044 1045 _handleNoResults(target) { 1046 this._clearResults(target); 1047 $(target).parent().append(`<div class='resultsDiv'><i>${this.lastSearch} ${this.settings.notFoundMessage}</i><p><small>${this.settings.notFoundHint}</small></p></div>`); 1048 } 1049 1050 _search(target) { 1051 this._fetchResults(this.settings.pagingActive, target); 1052 } 1053 1054 _prevResult(target) { 1055 if (this.resultCount <= 0) return; 1056 if (this.activeResult > 0) this.activeResult--; 1057 this._fillSearchBox(target); 1058 } 1059 1060 _nextResult(target) { 1061 if (this.resultCount <= 0) return; 1062 if (this.activeResult < this.resultCount - 1) this.activeResult++; 1063 this._fillSearchBox(target); 1064 } 1065 1066 _fillSearchBox(target) { 1067 const feature = this.features[this.activeResult]; 1068 if (!feature) return; 1069 1070 if (this.settings && typeof this.settings.onSelect === 'function') { 1071 this.settings.onSelect({ 1072 target, // input element 1073 feature, // selected GeoJSON result 1074 }); 1075 } 1076 1077 1078 } 1079 1080 _debounce(fn, delay) { 1081 let timer = null; 1082 return function (...args) { 1083 clearTimeout(timer); 1084 timer = setTimeout(() => fn.apply(this, args), delay); 1085 }; 1086 } 1087 } 1088 1089 1090 $.fn.GeoJsonAutocomplete = function (userOptions) { 1091 return this.each(function () { 1092 if (!this._geoJsonAutocompleteInstance) { 1093 this._geoJsonAutocompleteInstance = new GeoJsonAutocomplete(this, userOptions); 1094 } 1095 }); 1096 }; 1097 })(jQuery); 1098 1099(function (factory) { 1100 if (typeof define === 'function' && define.amd) { 1101 // AMD 1102 define(['leaflet'], factory); 1103 } else if (typeof module !== 'undefined') { 1104 // Node/CommonJS 1105 module.exports = factory(require('leaflet')); 1106 } else { 1107 // Browser globals 1108 if (typeof window.L === 'undefined') { 1109 throw new Error('Leaflet must be loaded first'); 1110 } 1111 factory(window.L); 1112 } 1113}(function (L) { 1114 L.Control.Fullscreen = L.Control.extend({ 1115 options: { 1116 position: 'topleft', 1117 title: { 1118 'false': 'View Fullscreen', 1119 'true': 'Exit Fullscreen' 1120 } 1121 }, 1122 1123 onAdd: function (map) { 1124 var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control'); 1125 1126 this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container); 1127 this.link.href = '#'; 1128 1129 this._map = map; 1130 this._map.on('fullscreenchange', this._toggleTitle, this); 1131 this._toggleTitle(); 1132 1133 L.DomEvent.on(this.link, 'click', this._click, this); 1134 1135 return container; 1136 }, 1137 1138 _click: function (e) { 1139 L.DomEvent.stopPropagation(e); 1140 L.DomEvent.preventDefault(e); 1141 this._map.toggleFullscreen(this.options); 1142 }, 1143 1144 _toggleTitle: function() { 1145 this.link.title = this.options.title[this._map.isFullscreen()]; 1146 } 1147 }); 1148 1149 L.Map.include({ 1150 isFullscreen: function () { 1151 return this._isFullscreen || false; 1152 }, 1153 1154 toggleFullscreen: function (options) { 1155 var container = this.getContainer(); 1156 if (this.isFullscreen()) { 1157 if (options && options.pseudoFullscreen) { 1158 this._disablePseudoFullscreen(container); 1159 } else if (document.exitFullscreen) { 1160 document.exitFullscreen(); 1161 } else if (document.mozCancelFullScreen) { 1162 document.mozCancelFullScreen(); 1163 } else if (document.webkitCancelFullScreen) { 1164 document.webkitCancelFullScreen(); 1165 } else if (document.msExitFullscreen) { 1166 document.msExitFullscreen(); 1167 } else { 1168 this._disablePseudoFullscreen(container); 1169 } 1170 } else { 1171 if (options && options.pseudoFullscreen) { 1172 this._enablePseudoFullscreen(container); 1173 } else if (container.requestFullscreen) { 1174 container.requestFullscreen(); 1175 } else if (container.mozRequestFullScreen) { 1176 container.mozRequestFullScreen(); 1177 } else if (container.webkitRequestFullscreen) { 1178 container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); 1179 } else if (container.msRequestFullscreen) { 1180 container.msRequestFullscreen(); 1181 } else { 1182 this._enablePseudoFullscreen(container); 1183 } 1184 } 1185 1186 }, 1187 1188 _enablePseudoFullscreen: function (container) { 1189 L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen'); 1190 this._setFullscreen(true); 1191 this.fire('fullscreenchange'); 1192 }, 1193 1194 _disablePseudoFullscreen: function (container) { 1195 L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen'); 1196 this._setFullscreen(false); 1197 this.fire('fullscreenchange'); 1198 }, 1199 1200 _setFullscreen: function(fullscreen) { 1201 this._isFullscreen = fullscreen; 1202 var container = this.getContainer(); 1203 if (fullscreen) { 1204 L.DomUtil.addClass(container, 'leaflet-fullscreen-on'); 1205 } else { 1206 L.DomUtil.removeClass(container, 'leaflet-fullscreen-on'); 1207 } 1208 this.invalidateSize(); 1209 }, 1210 1211 _onFullscreenChange: function (e) { 1212 var fullscreenElement = 1213 document.fullscreenElement || 1214 document.mozFullScreenElement || 1215 document.webkitFullscreenElement || 1216 document.msFullscreenElement; 1217 1218 if (fullscreenElement === this.getContainer() && !this._isFullscreen) { 1219 this._setFullscreen(true); 1220 this.fire('fullscreenchange'); 1221 } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) { 1222 this._setFullscreen(false); 1223 this.fire('fullscreenchange'); 1224 } 1225 } 1226 }); 1227 1228 L.Map.mergeOptions({ 1229 fullscreenControl: false 1230 }); 1231 1232 L.Map.addInitHook(function () { 1233 if (this.options.fullscreenControl) { 1234 this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl); 1235 this.addControl(this.fullscreenControl); 1236 } 1237 1238 var fullscreenchange; 1239 1240 if ('onfullscreenchange' in document) { 1241 fullscreenchange = 'fullscreenchange'; 1242 } else if ('onmozfullscreenchange' in document) { 1243 fullscreenchange = 'mozfullscreenchange'; 1244 } else if ('onwebkitfullscreenchange' in document) { 1245 fullscreenchange = 'webkitfullscreenchange'; 1246 } else if ('onmsfullscreenchange' in document) { 1247 fullscreenchange = 'MSFullscreenChange'; 1248 } 1249 1250 if (fullscreenchange) { 1251 var onFullscreenChange = L.bind(this._onFullscreenChange, this); 1252 1253 this.whenReady(function () { 1254 L.DomEvent.on(document, fullscreenchange, onFullscreenChange); 1255 }); 1256 1257 this.on('unload', function () { 1258 L.DomEvent.off(document, fullscreenchange, onFullscreenChange); 1259 }); 1260 } 1261 }); 1262 1263 L.control.fullscreen = function (options) { 1264 return new L.Control.Fullscreen(options); 1265 }; 1266})); 1267/*! 1268Copyright (c) 2016 Dominik Moritz 1269 1270This file is part of the leaflet locate control. It is licensed under the MIT license. 1271You can find the project at: https://github.com/domoritz/leaflet-locatecontrol 1272*/ 1273(function (factory, window) { 1274 // see https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md#module-loaders 1275 // for details on how to structure a leaflet plugin. 1276 1277 // define an AMD module that relies on 'leaflet' 1278 if (typeof define === 'function' && define.amd) { 1279 define(['leaflet'], factory); 1280 1281 // define a Common JS module that relies on 'leaflet' 1282 } else if (typeof exports === 'object') { 1283 if (typeof window !== 'undefined' && window.L) { 1284 module.exports = factory(L); 1285 } else { 1286 module.exports = factory(require('leaflet')); 1287 } 1288 } 1289 1290 // attach your plugin to the global 'L' variable 1291 if (typeof window !== 'undefined' && window.L){ 1292 window.L.Control.Locate = factory(L); 1293 } 1294} (function (L) { 1295 var LDomUtilApplyClassesMethod = function(method, element, classNames) { 1296 classNames = classNames.split(' ');
1297 classNames.forEach(function(className) { 1298 L.DomUtil[method].call(this, element, className); 1299 }); 1300 }; 1301 1302 var addClasses = function(el, names) { LDomUtilApplyClassesMethod('addClass', el, names); }; 1303 var removeClasses = function(el, names) { LDomUtilApplyClassesMethod('removeClass', el, names); }; 1304 1305 /** 1306 * Compatible with L.Circle but a true marker instead of a path 1307 */ 1308 var LocationMarker = L.Marker.extend({ 1309 initialize: function (latlng, options) { 1310 L.Util.setOptions(this, options); 1311 this._latlng = latlng; 1312 this.createIcon(); 1313 }, 1314 1315 /** 1316 * Create a styled circle location marker 1317 */ 1318 createIcon: function() { 1319 var opt = this.options; 1320 1321 var style = ''; 1322 1323 if (opt.color !== undefined) { 1324 style += 'stroke:'+opt.color+';'; 1325 } 1326 if (opt.weight !== undefined) { 1327 style += 'stroke-width:'+opt.weight+';'; 1328 } 1329 if (opt.fillColor !== undefined) { 1330 style += 'fill:'+opt.fillColor+';'; 1331 } 1332 if (opt.fillOpacity !== undefined) { 1333 style += 'fill-opacity:'+opt.fillOpacity+';'; 1334 } 1335 if (opt.opacity !== undefined) { 1336 style += 'opacity:'+opt.opacity+';'; 1337 } 1338 1339 var icon = this._getIconSVG(opt, style); 1340 1341 this._locationIcon = L.divIcon({ 1342 className: icon.className, 1343 html: icon.svg, 1344 iconSize: [icon.w,icon.h], 1345 }); 1346 1347 this.setIcon(this._locationIcon); 1348 }, 1349 1350 /** 1351 * Return the raw svg for the shape 1352 * 1353 * Split so can be easily overridden 1354 */ 1355 _getIconSVG: function(options, style) { 1356 var r = options.radius; 1357 var w = options.weight; 1358 var s = r + w; 1359 var s2 = s * 2; 1360 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'+s2+'" height="'+s2+'" version="1.1" viewBox="-'+s+' -'+s+' '+s2+' '+s2+'">' + 1361 '<circle r="'+r+'" style="'+style+'" />' + 1362 '</svg>'; 1363 return { 1364 className: 'leaflet-control-locate-location', 1365 svg: svg, 1366 w: s2, 1367 h: s2 1368 }; 1369 }, 1370 1371 setStyle: function(style) { 1372 L.Util.setOptions(this, style); 1373 this.createIcon(); 1374 } 1375 }); 1376 1377 var CompassMarker = LocationMarker.extend({ 1378 initialize: function (latlng, heading, options) { 1379 L.Util.setOptions(this, options); 1380 this._latlng = latlng; 1381 this._heading = heading; 1382 this.createIcon(); 1383 }, 1384 1385 setHeading: function(heading) { 1386 this._heading = heading; 1387 }, 1388 1389 /** 1390 * Create a styled arrow compass marker 1391 */ 1392 _getIconSVG: function(options, style) { 1393 var r = options.radius; 1394 var w = (options.width + options.weight); 1395 var h = (r+options.depth + options.weight)*2; 1396 var path = 'M0,0 l'+(options.width/2)+','+options.depth+' l-'+(w)+',0 z'; 1397 var svgstyle = 'transform: rotate('+this._heading+'deg)'; 1398 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'+(w)+'" height="'+h+'" version="1.1" viewBox="-'+(w/2)+' 0 '+w+' '+h+'" style="'+svgstyle+'">'+ 1399 '<path d="'+path+'" style="'+style+'" />'+ 1400 '</svg>'; 1401 return { 1402 className: 'leaflet-control-locate-heading', 1403 svg: svg, 1404 w: w, 1405 h: h 1406 }; 1407 }, 1408 }); 1409 1410 1411 var LocateControl = L.Control.extend({ 1412 options: { 1413 /** Position of the control */ 1414 position: 'topleft', 1415 /** The layer that the user's location should be drawn on. By default creates a new layer. */ 1416 layer: undefined, 1417 /** 1418 * Automatically sets the map view (zoom and pan) to the user's location as it updates. 1419 * While the map is following the user's location, the control is in the `following` state, 1420 * which changes the style of the control and the circle marker. 1421 * 1422 * Possible values: 1423 * - false: never updates the map view when location changes. 1424 * - 'once': set the view when the location is first determined 1425 * - 'always': always updates the map view when location changes. 1426 * The map view follows the user's location. 1427 * - 'untilPan': like 'always', except stops updating the 1428 * view if the user has manually panned the map. 1429 * The map view follows the user's location until she pans. 1430 * - 'untilPanOrZoom': (default) like 'always', except stops updating the 1431 * view if the user has manually panned the map. 1432 * The map view follows the user's location until she pans. 1433 */
1434 setView: 'untilPanOrZoom', 1435 /** Keep the current map zoom level when setting the view and only pan. */ 1436 keepCurrentZoomLevel: false, 1437 /** 1438 * This callback can be used to override the viewport tracking 1439 * This function should return a LatLngBounds object. 1440 * 1441 * For example to extend the viewport to ensure that a particular LatLng is visible: 1442 * 1443 * getLocationBounds: function(locationEvent) { 1444 * return locationEvent.bounds.extend([-33.873085, 151.219273]); 1445 * }, 1446 */ 1447 getLocationBounds: function (locationEvent) { 1448 return locationEvent.bounds; 1449 }, 1450 /** Smooth pan and zoom to the location of the marker. Only works in Leaflet 1.0+. */ 1451 flyTo: false, 1452 /** 1453 * The user location can be inside and outside the current view when the user clicks on the 1454 * control that is already active. Both cases can be configures separately. 1455 * Possible values are: 1456 * - 'setView': zoom and pan to the current location 1457 * - 'stop': stop locating and remove the location marker 1458 */ 1459 clickBehavior: { 1460 /** What should happen if the user clicks on the control while the location is within the current view. */ 1461 inView: 'stop', 1462 /** What should happen if the user clicks on the control while the location is outside the current view. */ 1463 outOfView: 'setView', 1464 /** 1465 * What should happen if the user clicks on the control while the location is within the current view 1466 * and we could be following but are not. Defaults to a special value which inherits from 'inView'; 1467 */ 1468 inViewNotFollowing: 'inView', 1469 }, 1470 /** 1471 * If set, save the map bounds just before centering to the user's 1472 * location. When control is disabled, set the view back to the 1473 * bounds that were saved. 1474 */ 1475 returnToPrevBounds: false, 1476 /** 1477 * Keep a cache of the location after the user deactivates the control. If set to false, the user has to wait 1478 * until the locate API returns a new location before they see where they are again. 1479 */ 1480 cacheLocation: true, 1481 /** If set, a circle that shows the location accuracy is drawn. */ 1482 drawCircle: true, 1483 /** If set, the marker at the users' location is drawn. */ 1484 drawMarker: true, 1485 /** If set and supported then show the compass heading */ 1486 showCompass: true, 1487 /** The class to be used to create the marker. For example L.CircleMarker or L.Marker */ 1488 markerClass: LocationMarker, 1489 /** The class us be used to create the compass bearing arrow */ 1490 compassClass: CompassMarker, 1491 /** Accuracy circle style properties. NOTE these styles should match the css animations styles */ 1492 circleStyle: { 1493 className: 'leaflet-control-locate-circle', 1494 color: '#136AEC', 1495 fillColor: '#136AEC', 1496 fillOpacity: 0.15, 1497 weight: 0 1498 }, 1499 /** Inner marker style properties. Only works if your marker class supports `setStyle`. */ 1500 markerStyle: { 1501 className: 'leaflet-control-locate-marker', 1502 color: '#fff', 1503 fillColor: '#2A93EE', 1504 fillOpacity: 1, 1505 weight: 3, 1506 opacity: 1, 1507 radius: 9 1508 }, 1509 /** Compass */ 1510 compassStyle: { 1511 fillColor: '#2A93EE', 1512 fillOpacity: 1, 1513 weight: 0, 1514 color: '#fff', 1515 opacity: 1, 1516 radius: 9, // How far is the arrow is from the center of of the marker 1517 width: 9, // Width of the arrow 1518 depth: 6 // Length of the arrow 1519 }, 1520 /** 1521 * Changes to accuracy circle and inner marker while following. 1522 * It is only necessary to provide the properties that should change. 1523 */ 1524 followCircleStyle: {}, 1525 followMarkerStyle: {
1526 // color: '#FFA500', 1527 // fillColor: '#FFB000' 1528 }, 1529 followCompassStyle: {}, 1530 /** The CSS class for the icon. For example fa-location-arrow or fa-map-marker */ 1531 icon: 'fa fa-map-marker', 1532 iconLoading: 'fa fa-spinner fa-spin', 1533 /** The element to be created for icons. For example span or i */ 1534 iconElementTag: 'span', 1535 /** Padding around the accuracy circle. */ 1536 circlePadding: [0, 0], 1537 /** Use metric units. */ 1538 metric: true, 1539 /** 1540 * This callback can be used in case you would like to override button creation behavior. 1541 * This is useful for DOM manipulation frameworks such as angular etc. 1542 * This function should return an object with HtmlElement for the button (link property) and the icon (icon property). 1543 */ 1544 createButtonCallback: function (container, options) { 1545 var link = L.DomUtil.create('a', 'leaflet-bar-part leaflet-bar-part-single', container); 1546 link.title = options.strings.title; 1547 var icon = L.DomUtil.create(options.iconElementTag, options.icon, link); 1548 return { link: link, icon: icon }; 1549 }, 1550 /** This event is called in case of any location error that is not a time out error. */ 1551 onLocationError: function(err, control) { 1552 alert(err.message); 1553 }, 1554 /** 1555 * This event is called when the user's location is outside the bounds set on the map. 1556 * The event is called repeatedly when the location changes. 1557 */ 1558 onLocationOutsideMapBounds: function(control) { 1559 control.stop(); 1560 alert(control.options.strings.outsideMapBoundsMsg); 1561 }, 1562 /** Display a pop-up when the user click on the inner marker. */ 1563 showPopup: true, 1564 strings: { 1565 title: "Show me where I am", 1566 metersUnit: "meters", 1567 feetUnit: "feet", 1568 popup: "You are within {distance} {unit} from this point", 1569 outsideMapBoundsMsg: "You seem located outside the boundaries of the map" 1570 }, 1571 /** The default options passed to leaflets locate method. */ 1572 locateOptions: { 1573 maxZoom: Infinity, 1574 watch: true, // if you overwrite this, visualization cannot be updated 1575 setView: false // have to set this to false because we have to 1576 // do setView manually 1577 } 1578 }, 1579 1580 initialize: function (options) { 1581 // set default options if nothing is set (merge one step deep) 1582 for (var i in options) { 1583 if (typeof this.options[i] === 'object') { 1584 L.extend(this.options[i], options[i]); 1585 } else { 1586 this.options[i] = options[i]; 1587 } 1588 } 1589 1590 // extend the follow marker style and circle from the normal style 1591 this.options.followMarkerStyle = L.extend({}, this.options.markerStyle, this.options.followMarkerStyle); 1592 this.options.followCircleStyle = L.extend({}, this.options.circleStyle, this.options.followCircleStyle); 1593 this.options.followCompassStyle = L.extend({}, this.options.compassStyle, this.options.followCompassStyle); 1594 }, 1595 1596 /** 1597 * Add control to map. Returns the container for the control. 1598 */ 1599 onAdd: function (map) { 1600 var container = L.DomUtil.create('div', 1601 'leaflet-control-locate leaflet-bar leaflet-control'); 1602 1603 this._layer = this.options.layer || new L.LayerGroup(); 1604 this._layer.addTo(map); 1605 this._event = undefined; 1606 this._compassHeading = null; 1607 this._prevBounds = null; 1608 1609 var linkAndIcon = this.options.createButtonCallback(container, this.options); 1610 this._link = linkAndIcon.link; 1611 this._icon = linkAndIcon.icon; 1612 1613 L.DomEvent 1614 .on(this._link, 'click', L.DomEvent.stopPropagation) 1615 .on(this._link, 'click', L.DomEvent.preventDefault) 1616 .on(this._link, 'click', this._onClick, this) 1617 .on(this._link, 'dblclick', L.DomEvent.stopPropagation); 1618 1619 this._resetVariables(); 1620 1621 this._map.on('unload', this._unload, this); 1622 1623 return container; 1624 }, 1625 1626 /** 1627 * This method is called when the user clicks on the control. 1628 */ 1629 _onClick: function() { 1630 this._justClicked = true; 1631 var wasFollowing = this._isFollowing(); 1632 this._userPanned = false;
1633 this._userZoomed = false; 1634 1635 if (this._active && !this._event) { 1636 // click while requesting 1637 this.stop(); 1638 } else if (this._active && this._event !== undefined) { 1639 var behaviors = this.options.clickBehavior; 1640 var behavior = behaviors.outOfView; 1641 if (this._map.getBounds().contains(this._event.latlng)) { 1642 behavior = wasFollowing ? behaviors.inView : behaviors.inViewNotFollowing; 1643 } 1644 1645 // Allow inheriting from another behavior 1646 if (behaviors[behavior]) { 1647 behavior = behaviors[behavior]; 1648 } 1649 1650 switch (behavior) { 1651 case 'setView': 1652 this.setView(); 1653 break; 1654 case 'stop': 1655 this.stop(); 1656 if (this.options.returnToPrevBounds) { 1657 var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds; 1658 f.bind(this._map)(this._prevBounds); 1659 } 1660 break; 1661 } 1662 } else { 1663 if (this.options.returnToPrevBounds) { 1664 this._prevBounds = this._map.getBounds(); 1665 } 1666 this.start(); 1667 } 1668 1669 this._updateContainerStyle(); 1670 }, 1671 1672 /** 1673 * Starts the plugin: 1674 * - activates the engine 1675 * - draws the marker (if coordinates available) 1676 */ 1677 start: function() { 1678 this._activate(); 1679 1680 if (this._event) { 1681 this._drawMarker(this._map); 1682 1683 // if we already have a location but the user clicked on the control 1684 if (this.options.setView) { 1685 this.setView(); 1686 } 1687 } 1688 this._updateContainerStyle(); 1689 }, 1690 1691 /** 1692 * Stops the plugin: 1693 * - deactivates the engine 1694 * - reinitializes the button 1695 * - removes the marker 1696 */ 1697 stop: function() { 1698 this._deactivate(); 1699 1700 this._cleanClasses(); 1701 this._resetVariables(); 1702 1703 this._removeMarker(); 1704 }, 1705 1706 /** 1707 * Keep the control active but stop following the location 1708 */ 1709 stopFollowing: function() { 1710 this._userPanned = true; 1711 this._updateContainerStyle(); 1712 this._drawMarker(); 1713 }, 1714 1715 /** 1716 * This method launches the location engine. 1717 * It is called before the marker is updated, 1718 * event if it does not mean that the event will be ready. 1719 * 1720 * Override it if you want to add more functionalities. 1721 * It should set the this._active to true and do nothing if 1722 * this._active is true. 1723 */ 1724 _activate: function() { 1725 if (!this._active) { 1726 this._map.locate(this.options.locateOptions); 1727 this._active = true; 1728 1729 // bind event listeners 1730 this._map.on('locationfound', this._onLocationFound, this); 1731 this._map.on('locationerror', this._onLocationError, this); 1732 this._map.on('dragstart', this._onDrag, this); 1733 this._map.on('zoomstart', this._onZoom, this); 1734 this._map.on('zoomend', this._onZoomEnd, this); 1735 if (this.options.showCompass) { 1736 if ('ondeviceorientationabsolute' in window) { 1737 L.DomEvent.on(window, 'deviceorientationabsolute', this._onDeviceOrientation, this); 1738 } else if ('ondeviceorientation' in window) { 1739 L.DomEvent.on(window, 'deviceorientation', this._onDeviceOrientation, this); 1740 } 1741 } 1742 } 1743 }, 1744 1745 /** 1746 * Called to stop the location engine. 1747 * 1748 * Override it to shutdown any functionalities you added on start. 1749 */ 1750 _deactivate: function() { 1751 this._map.stopLocate(); 1752 this._active = false;
1753 1754 if (!this.options.cacheLocation) { 1755 this._event = undefined; 1756 } 1757 1758 // unbind event listeners 1759 this._map.off('locationfound', this._onLocationFound, this); 1760 this._map.off('locationerror', this._onLocationError, this); 1761 this._map.off('dragstart', this._onDrag, this); 1762 this._map.off('zoomstart', this._onZoom, this); 1763 this._map.off('zoomend', this._onZoomEnd, this); 1764 if (this.options.showCompass) { 1765 this._compassHeading = null; 1766 if ('ondeviceorientationabsolute' in window) { 1767 L.DomEvent.off(window, 'deviceorientationabsolute', this._onDeviceOrientation, this); 1768 } else if ('ondeviceorientation' in window) { 1769 L.DomEvent.off(window, 'deviceorientation', this._onDeviceOrientation, this); 1770 } 1771 } 1772 }, 1773 1774 /** 1775 * Zoom (unless we should keep the zoom level) and an to the current view. 1776 */ 1777 setView: function() { 1778 this._drawMarker(); 1779 if (this._isOutsideMapBounds()) { 1780 this._event = undefined; // clear the current location so we can get back into the bounds 1781 this.options.onLocationOutsideMapBounds(this); 1782 } else { 1783 if (this.options.keepCurrentZoomLevel) { 1784 var f = this.options.flyTo ? this._map.flyTo : this._map.panTo; 1785 f.bind(this._map)([this._event.latitude, this._event.longitude]); 1786 } else { 1787 var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds; 1788 // Ignore zoom events while setting the viewport as these would stop following 1789 this._ignoreEvent = true; 1790 f.bind(this._map)(this.options.getLocationBounds(this._event), { 1791 padding: this.options.circlePadding, 1792 maxZoom: this.options.locateOptions.maxZoom 1793 }); 1794 L.Util.requestAnimFrame(function(){ 1795 // Wait until after the next animFrame because the flyTo can be async 1796 this._ignoreEvent = false; 1797 }, this); 1798 1799 } 1800 } 1801 }, 1802 1803 /** 1804 * 1805 */ 1806 _drawCompass: function() { 1807 if (!this._event) { 1808 return; 1809 } 1810 1811 var latlng = this._event.latlng; 1812 1813 if (this.options.showCompass && latlng && this._compassHeading !== null) { 1814 var cStyle = this._isFollowing() ? this.options.followCompassStyle : this.options.compassStyle; 1815 if (!this._compass) { 1816 this._compass = new this.options.compassClass(latlng, this._compassHeading, cStyle).addTo(this._layer); 1817 } else { 1818 this._compass.setLatLng(latlng); 1819 this._compass.setHeading(this._compassHeading); 1820 // If the compassClass can be updated with setStyle, update it. 1821 if (this._compass.setStyle) { 1822 this._compass.setStyle(cStyle); 1823 } 1824 } 1825 // 1826 } 1827 if (this._compass && (!this.options.showCompass || this._compassHeading === null)) { 1828 this._compass.removeFrom(this._layer); 1829 this._compass = null; 1830 } 1831 }, 1832 1833 /** 1834 * Draw the marker and accuracy circle on the map. 1835 * 1836 * Uses the event retrieved from onLocationFound from the map. 1837 */ 1838 _drawMarker: function() { 1839 if (this._event.accuracy === undefined) { 1840 this._event.accuracy = 0; 1841 } 1842 1843 var radius = this._event.accuracy; 1844 var latlng = this._event.latlng; 1845 1846 // circle with the radius of the location's accuracy 1847 if (this.options.drawCircle) { 1848 var style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle; 1849 1850 if (!this._circle) { 1851 this._circle = L.circle(latlng, radius, style).addTo(this._layer); 1852 } else { 1853 this._circle.setLatLng(latlng).setRadius(radius).setStyle(style); 1854 } 1855 } 1856 1857 var distance, unit; 1858 if (this.options.metric) { 1859 distance = radius.toFixed(0); 1860 unit = this.options.strings.metersUnit; 1861 } else { 1862 distance = (radius * 3.2808399).toFixed(0); 1863 unit = this.options.strings.feetUnit; 1864 } 1865 1866 // small inner marker 1867 if (this.options.drawMarker) { 1868 var mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle; 1869 if (!this._marker) { 1870 this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer); 1871 } else { 1872 this._marker.setLatLng(latlng); 1873 // If the markerClass can be updated with setStyle, update it. 1874 if (this._marker.setStyle) { 1875 this._marker.setStyle(mStyle); 1876 } 1877 } 1878 } 1879 1880 this._drawCompass(); 1881 1882 var t = this.options.strings.popup; 1883 if (this.options.showPopup && t && this._marker) { 1884 this._marker 1885 .bindPopup(L.Util.template(t, {distance: distance, unit: unit})) 1886 ._popup.setLatLng(latlng); 1887 } 1888 if (this.options.showPopup && t && this._compass) { 1889 this._compass 1890 .bindPopup(L.Util.template(t, {distance: distance, unit: unit})) 1891 ._popup.setLatLng(latlng); 1892 } 1893 }, 1894 1895 /** 1896 * Remove the marker from map. 1897 */ 1898 _removeMarker: function() { 1899 this._layer.clearLayers(); 1900 this._marker = undefined; 1901 this._circle = undefined; 1902 }, 1903 1904 /** 1905 * Unload the plugin and all event listeners. 1906 * Kind of the opposite of onAdd. 1907 */ 1908 _unload: function() { 1909 this.stop(); 1910 this._map.off('unload', this._unload, this); 1911 }, 1912 1913 /** 1914 * Sets the compass heading 1915 */ 1916 _setCompassHeading: function(angle) { 1917 if (!isNaN(parseFloat(angle)) && isFinite(angle)) { 1918 angle = Math.round(angle); 1919 1920 this._compassHeading = angle;
1921 L.Util.requestAnimFrame(this._drawCompass, this); 1922 } else { 1923 this._compassHeading = null; 1924 } 1925 }, 1926 1927 /** 1928 * If the compass fails calibration just fail safely and remove the compass 1929 */ 1930 _onCompassNeedsCalibration: function() { 1931 this._setCompassHeading(); 1932 }, 1933 1934 /** 1935 * Process and normalise compass events 1936 */ 1937 _onDeviceOrientation: function(e) { 1938 if (!this._active) { 1939 return; 1940 } 1941 1942 if (e.webkitCompassHeading) { 1943 // iOS 1944 this._setCompassHeading(e.webkitCompassHeading); 1945 } else if (e.absolute && e.alpha) { 1946 // Android 1947 this._setCompassHeading(360 - e.alpha) 1948 } 1949 }, 1950 1951 /** 1952 * Calls deactivate and dispatches an error. 1953 */ 1954 _onLocationError: function(err) { 1955 // ignore time out error if the location is watched 1956 if (err.code == 3 && this.options.locateOptions.watch) { 1957 return; 1958 } 1959 1960 this.stop(); 1961 this.options.onLocationError(err, this); 1962 }, 1963 1964 /** 1965 * Stores the received event and updates the marker. 1966 */ 1967 _onLocationFound: function(e) { 1968 // no need to do anything if the location has not changed 1969 if (this._event && 1970 (this._event.latlng.lat === e.latlng.lat && 1971 this._event.latlng.lng === e.latlng.lng && 1972 this._event.accuracy === e.accuracy)) { 1973 return; 1974 } 1975 1976 if (!this._active) { 1977 // we may have a stray event 1978 return; 1979 } 1980 1981 this._event = e; 1982 1983 this._drawMarker(); 1984 this._updateContainerStyle(); 1985 1986 switch (this.options.setView) { 1987 case 'once': 1988 if (this._justClicked) { 1989 this.setView(); 1990 } 1991 break; 1992 case 'untilPan': 1993 if (!this._userPanned) { 1994 this.setView(); 1995 } 1996 break; 1997 case 'untilPanOrZoom': 1998 if (!this._userPanned && !this._userZoomed) { 1999 this.setView(); 2000 } 2001 break; 2002 case 'always': 2003 this.setView(); 2004 break; 2005 case false: 2006 // don't set the view 2007 break; 2008 } 2009 2010 this._justClicked = false; 2011 }, 2012 2013 /** 2014 * When the user drags. Need a separate event so we can bind and unbind event listeners. 2015 */ 2016 _onDrag: function() { 2017 // only react to drags once we have a location 2018 if (this._event && !this._ignoreEvent) { 2019 this._userPanned = true; 2020 this._updateContainerStyle(); 2021 this._drawMarker(); 2022 } 2023 }, 2024 2025 /** 2026 * When the user zooms. Need a separate event so we can bind and unbind event listeners. 2027 */ 2028 _onZoom: function() { 2029 // only react to drags once we have a location 2030 if (this._event && !this._ignoreEvent) { 2031 this._userZoomed = true; 2032 this._updateContainerStyle(); 2033 this._drawMarker(); 2034 } 2035 }, 2036 2037 /** 2038 * After a zoom ends update the compass and handle sideways zooms 2039 */ 2040 _onZoomEnd: function() { 2041 if (this._event) { 2042 this._drawCompass(); 2043 } 2044 2045 if (this._event && !this._ignoreEvent) { 2046 // If we have zoomed in and out and ended up sideways treat it as a pan 2047 if (this._marker && !this._map.getBounds().pad(-.3).contains(this._marker.getLatLng())) { 2048 this._userPanned = true; 2049 this._updateContainerStyle(); 2050 this._drawMarker(); 2051 } 2052 } 2053 }, 2054 2055 /** 2056 * Compute whether the map is following the user location with pan and zoom. 2057 */ 2058 _isFollowing: function() { 2059 if (!this._active) { 2060 return false;
2061 } 2062 2063 if (this.options.setView === 'always') { 2064 return true; 2065 } else if (this.options.setView === 'untilPan') { 2066 return !this._userPanned; 2067 } else if (this.options.setView === 'untilPanOrZoom') { 2068 return !this._userPanned && !this._userZoomed; 2069 } 2070 }, 2071 2072 /** 2073 * Check if location is in map bounds 2074 */ 2075 _isOutsideMapBounds: function() { 2076 if (this._event === undefined) { 2077 return false; 2078 } 2079 return this._map.options.maxBounds && 2080 !this._map.options.maxBounds.contains(this._event.latlng); 2081 }, 2082 2083 /** 2084 * Toggles button class between following and active. 2085 */ 2086 _updateContainerStyle: function() { 2087 if (!this._container) { 2088 return; 2089 } 2090 2091 if (this._active && !this._event) { 2092 // active but don't have a location yet 2093 this._setClasses('requesting'); 2094 } else if (this._isFollowing()) { 2095 this._setClasses('following'); 2096 } else if (this._active) { 2097 this._setClasses('active'); 2098 } else { 2099 this._cleanClasses(); 2100 } 2101 }, 2102 2103 /** 2104 * Sets the CSS classes for the state. 2105 */ 2106 _setClasses: function(state) { 2107 if (state == 'requesting') { 2108 removeClasses(this._container, "active following"); 2109 addClasses(this._container, "requesting"); 2110 2111 removeClasses(this._icon, this.options.icon); 2112 addClasses(this._icon, this.options.iconLoading); 2113 } else if (state == 'active') { 2114 removeClasses(this._container, "requesting following"); 2115 addClasses(this._container, "active"); 2116 2117 removeClasses(this._icon, this.options.iconLoading); 2118 addClasses(this._icon, this.options.icon); 2119 } else if (state == 'following') { 2120 removeClasses(this._container, "requesting"); 2121 addClasses(this._container, "active following"); 2122 2123 removeClasses(this._icon, this.options.iconLoading); 2124 addClasses(this._icon, this.options.icon); 2125 } 2126 }, 2127 2128 /** 2129 * Removes all classes from button. 2130 */ 2131 _cleanClasses: function() { 2132 L.DomUtil.removeClass(this._container, "requesting"); 2133 L.DomUtil.removeClass(this._container, "active"); 2134 L.DomUtil.removeClass(this._container, "following"); 2135 2136 removeClasses(this._icon, this.options.iconLoading); 2137 addClasses(this._icon, this.options.icon); 2138 }, 2139 2140 /** 2141 * Reinitializes state variables. 2142 */ 2143 _resetVariables: function() { 2144 // whether locate is active or not 2145 this._active = false; 2146 2147 // true if the control was clicked for the first time 2148 // we need this so we can pan and zoom once we have the location 2149 this._justClicked = false; 2150 2151 // true if the user has panned the map after clicking the control 2152 this._userPanned = false; 2153 2154 // true if the user has zoomed the map after clicking the control 2155 this._userZoomed = false; 2156 } 2157 }); 2158 2159 L.control.locate = function (options) { 2160 return new L.Control.Locate(options); 2161 }; 2162 2163 return LocateControl; 2164}, window));
vendor: 564,710 bytes, lines 2165-2180
2165(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){function corslite(url,callback,cors){var sent=false;if(typeof window.XMLHttpRequest==="undefined"){return callback(Error("Browser not supported"))}if(typeof cors==="undefined"){var m=url.match(/^\s*https?:\/\/[^\/]*/);cors=m&&m[0]!==location.protocol+"//"+location.hostname+(location.port?":"+location.port:"")}var x=new window.XMLHttpRequest;function isSuccessful(status){return status>=200&&status<300||status===304}if(cors&&!("withCredentials"in x)){x=new window.XDomainRequest;var original=callback;callback=function(){if(sent){original.apply(this,arguments)}else{var that=this,args=arguments;setTimeout(function(){original.apply(that,args)},0)}}}function loaded(){if(x.status===undefined||isSuccessful(x.status))callback.call(x,null,x);else callback.call(x,x,null)}if("onload"in x){x.onload=loaded}else{x.onreadystatechange=function readystate(){if(x.readyState===4){loaded()}}}x.onerror=function error(evt){callback.call(this,evt||true,null);callback=function(){}};x.onprogress=function(){};x.ontimeout=function(evt){callback.call(this,evt,null);callback=function(){}};x.onabort=function(evt){callback.call(this,evt,null);callback=function(){}};x.open("GET",url,true);x.send(null);sent=true;return x}if(typeof module!=="undefined")module.exports=corslite},{}],2:[function(_dereq_,module,exports){"use strict";var polyline={};function py2_round(value){return Math.floor(Math.abs(value)+.5)*Math.sign(value)}function encode(current,previous,factor){current=py2_round(current*factor);previous=py2_round(previous*factor);var coordinate=current-previous;coordinate<<=1;if(current-previous<0){coordinate=~coordinate}var output="";while(coordinate>=32){output+=String.fromCharCode((32|coordinate&31)+63);coordinate>>=5}output+=String.fromCharCode(coordinate+63);return output}polyline.decode=function(str,precision){var index=0,lat=0,lng=0,coordinates=[],shift=0,result=0,byte=null,latitude_change,longitude_change,factor=Math.pow(10,precision||5);while(index<str.length){byte=null;shift=0;result=0;do{byte=str.charCodeAt(index++)-63;result|=(byte&31)<<shift;shift+=5}while(byte>=32);latitude_change=result&1?~(result>>1):result>>1;shift=result=0;do{byte=str.charCodeAt(index++)-63;result|=(byte&31)<<shift;shift+=5}while(byte>=32);longitude_change=result&1?~(result>>1):result>>1;lat+=latitude_change;lng+=longitude_change;coordinates.push([lat/factor,lng/factor])}return coordinates};polyline.encode=function(coordinates,precision){if(!coordinates.length){return""}var factor=Math.pow(10,precision||5),output=encode(coordinates[0][0],0,factor)+encode(coordinates[0][1],0,factor);for(var i=1;i<coordinates.length;i++){var a=coordinates[i],b=coordinates[i-1];output+=encode(a[0],b[0],factor);output+=encode(a[1],b[1],factor)}return output};function flipped(coords){var flipped=[];for(var i=0;i<coords.length;i++){flipped.push(coords[i].slice().reverse())}return flipped}polyline.fromGeoJSON=function(geojson,precision){if(geojson&&geojson.type==="Feature"){geojson=geojson.geometry}if(!geojson||geojson.type!=="LineString"){throw new Error("Input must be a GeoJSON LineString")}return polyline.encode(flipped(geojson.coordinates),precision)};polyline.toGeoJSON=function(str,precision){var coords=polyline.decode(str,precision);return{type:"LineString",coordinates:flipped(coords)}};if(typeof module==="object"&&module.exports){module.exports=polyline}},{}],3:[function(_dereq_,module,exports){var languages=_dereq_("./languages");var instructions=languages.instructions;var grammars=languages.grammars;var abbreviations=languages.abbreviations;module.exports=function(version){Object.keys(instructions).forEach(function(code){if(!instructions[code][version]){throw"invalid version "+version+": "+code+" not supported"}});return{capitalizeFirstLetter:function(language,string){return string.charAt(0).toLocaleUpperCase(language)+string.slice(1)},ordinalize:function(language,number){if(!language)throw new Error("No language code provided");return instructions[language][version].constants.ordinalize[number.toString()]||""},directionFromDegree:function(language,degree){if(!language)throw new Error("No language code provided");if(!degree&°ree!==0){return""}else if(degree>=0&°ree<=20){return instructions[language][version].constants.direction.north}else if(degree>20&°ree<70){return instructions[language][version].constants.direction.northeast}else if(degree>=70&°ree<=110){return instructions[language][version].constants.direction.east}else if(degree>110&°ree<160){return instructions[language][version].constants.direction.southeast}else if(degree>=160&°ree<=200){return instructions[language][version].constants.direction.south}else if(degree>200&°ree<250){return instructions[language][version].constants.direction.southwest}else if(degree>=250&°ree<=290){return instructions[language][version].constants.direction.west}else if(degree>290&°ree<340){return instructions[language][version].constants.direction.northwest}else if(degree>=340&°ree<=360){return instructions[language][version].constants.direction.north}else{throw new Error("Degree "+degree+" invalid")}},laneConfig:function(step){if(!step.intersections||!step.intersections[0].lanes)throw new Error("No lanes object");var config=[];var currentLaneValidity=null;step.intersections[0].lanes.forEach(function(lane){if(currentLaneValidity===null||currentLaneValidity!==lane.valid){if(lane.valid){config.push("o")}else{config.push("x")}currentLaneValidity=lane.valid}});return config.join("")},getWayName:function(language,step,options){var classes=options?options.classes||[]:[];if(typeof step!=="object")throw new Error("step must be an Object");if(!language)throw new Error("No language code provided");if(!Array.isArray(classes))throw new Error("classes must be an Array or undefined");var wayName;var name=step.name||"";var ref=(step.ref||"").split(";")[0];if(name===step.ref){name=""}name=name.replace(" ("+step.ref+")","");var wayMotorway=classes.indexOf("motorway")!==-1;if(name&&ref&&name!==ref&&!wayMotorway){var phrase=instructions[language][version].phrase["name and ref"]||instructions.en[version].phrase["name and ref"];wayName=this.tokenize(language,phrase,{name:name,ref:ref},options)}else if(name&&ref&&wayMotorway&&/\d/.test(ref)){wayName=options&&options.formatToken?options.formatToken("ref",ref):ref}else if(!name&&ref){wayName=options&&options.formatToken?options.formatToken("ref",ref):ref}else{wayName=options&&options.formatToken?options.formatToken("name",name):name}return wayName},compile:function(language,step,opts){if(!language)throw new Error("No language code provided");if(languages.supportedCodes.indexOf(language)===-1)throw new Error("language code "+language+" not loaded");if(!step.maneuver)throw new Error("No step maneuver provided");var options=opts||{};var type=step.maneuver.type;var modifier=step.maneuver.modifier;var mode=step.mode;var side=step.driving_side;if(!type){throw new Error("Missing step maneuver type")}if(type!=="depart"&&type!=="arrive"&&!modifier){throw new Error("Missing step maneuver modifier")}if(!instructions[language][version][type]){console.log("Encountered unknown instruction type: "+type);type="turn"}var instructionObject;if(instructions[language][version].modes[mode]){instructionObject=instructions[language][version].modes[mode]}else{var omitSide=type==="off ramp"&&modifier.indexOf(side)>=0;if(instructions[language][version][type][modifier]&&!omitSide){instructionObject=instructions[language][version][type][modifier]}else{instructionObject=instructions[language][version][type].default}}var laneInstruction;switch(type){case"use lane":laneInstruction=instructions[language][version].constants.lanes[this.laneConfig(step)];if(!laneInstruction){instructionObject=instructions[language][version]["use lane"].no_lanes}break;case"rotary":case"roundabout":if(step.rotary_name&&step.maneuver.exit&&instructionObject.name_exit){instructionObject=instructionObject.name_exit}else if(step.rotary_name&&instructionObject.name){instructionObject=instructionObject.name}else if(step.maneuver.exit&&instructionObject.exit){instructionObject=instructionObject.exit}else{instructionObject=instructionObject.default}break;default:}var wayName=this.getWayName(language,step,options);var instruction;if(step.destinations&&step.exits&&instructionObject.exit_destination){instruction=instructionObject.exit_destination}else if(step.destinations&&instructionObject.destination){instruction=instructionObject.destination}else if(step.exits&&instructionObject.exit){instruction=instructionObject.exit}else if(wayName&&instructionObject.name){instruction=instructionObject.name}else if(options.waypointName&&instructionObject.named){instruction=instructionObject.named}else{instruction=instructionObject.default}var destinations=step.destinations&&step.destinations.split(": ");var destinationRef=destinations&&destinations[0].split(",")[0];var destination=destinations&&destinations[1]&&destinations[1].split(",")[0];var firstDestination;if(destination&&destinationRef){firstDestination=destinationRef+": "+destination}else{firstDestination=destinationRef||destination||""}var nthWaypoint=options.legIndex>=0&&options.legIndex!==options.legCount-1?this.ordinalize(language,options.legIndex+1):"";var replaceTokens={way_name:wayName,destination:firstDestination,exit:(step.exits||"").split(";")[0],exit_number:this.ordinalize(language,step.maneuver.exit||1),rotary_name:step.rotary_name,lane_instruction:laneInstruction,modifier:instructions[language][version].constants.modifier[modifier],direction:this.directionFromDegree(language,step.maneuver.bearing_after),nth:nthWaypoint,waypoint_name:options.waypointName};return this.tokenize(language,instruction,replaceTokens,options)},grammarize:function(language,name,grammar){if(!language)throw new Error("No language code provided");if(name&&grammar&&grammars&&grammars[language]&&grammars[language][version]){var rules=grammars[language][version][grammar];if(rules){var n=" "+name+" ";var flags=grammars[language].meta.regExpFlags||"";rules.forEach(function(rule){var re=new RegExp(rule[0],flags);n=n.replace(re,rule[1])});return n.trim()}}return name},abbreviations:abbreviations,tokenize:function(language,instruction,tokens,options){if(!language)throw new Error("No language code provided");var that=this;var startedWithToken=false;var output=instruction.replace(/\{(\w+)(?::(\w+))?\}/g,function(token,tag,grammar,offset){var value=tokens[tag];if(typeof value==="undefined"){return token}value=that.grammarize(language,value,grammar);if(offset===0&&instructions[language].meta.capitalizeFirstLetter){startedWithToken=true;value=that.capitalizeFirstLetter(language,value)}if(options&&options.formatToken){value=options.formatToken(tag,value)}return value}).replace(/ {2}/g," ");if(!startedWithToken&&instructions[language].meta.capitalizeFirstLetter){return this.capitalizeFirstLetter(language,output)}return output}}}},{"./languages":4}],4:[function(_dereq_,module,exports){var instructionsDa=_dereq_("./languages/translations/da.json");var instructionsDe=_dereq_("./languages/translations/de.json");var instructionsEn=_dereq_("./languages/translations/en.json");var instructionsEo=_dereq_("./languages/translations/eo.json");var instructionsEs=_dereq_("./languages/translations/es.json");var instructionsEsEs=_dereq_("./languages/translations/es-ES.json");var instructionsFi=_dereq_("./languages/translations/fi.json");var instructionsFr=_dereq_("./languages/translations/fr.json");var instructionsHe=_dereq_("./languages/translations/he.json");var instructionsId=_dereq_("./languages/translations/id.json");var instructionsIt=_dereq_("./languages/translations/it.json");var instructionsKo=_dereq_("./languages/translations/ko.json");var instructionsMy=_dereq_("./languages/translations/my.json");var instructionsNl=_dereq_("./languages/translations/nl.json");var instructionsNo=_dereq_("./languages/translations/no.json");var instructionsPl=_dereq_("./languages/translations/pl.json");var instructionsPtBr=_dereq_("./languages/translations/pt-BR.json");var instructionsPtPt=_dereq_("./languages/translations/pt-PT.json");var instructionsRo=_dereq_("./languages/translations/ro.json");var instructionsRu=_dereq_("./languages/translations/ru.json");var instructionsSv=_dereq_("./languages/translations/sv.json");var instructionsTr=_dereq_("./languages/translations/tr.json");var instructionsUk=_dereq_("./languages/translations/uk.json");var instructionsVi=_dereq_("./languages/translations/vi.json");var instructionsZhHans=_dereq_("./languages/translations/zh-Hans.json");var grammarFr=_dereq_("./languages/grammar/fr.json");var grammarRu=_dereq_("./languages/grammar/ru.json");var abbreviationsBg=_dereq_("./languages/abbreviations/bg.json");var abbreviationsCa=_dereq_("./languages/abbreviations/ca.json");var abbreviationsDa=_dereq_("./languages/abbreviations/da.json");var ebbreviationsDe=_dereq_("./languages/abbreviations/de.json");var abbreviationsEn=_dereq_("./languages/abbreviations/en.json");var abbreviationsEs=_dereq_("./languages/abbreviations/es.json");var abbreviationsFr=_dereq_("./languages/abbreviations/fr.json");var abbreviationsHe=_dereq_("./languages/abbreviations/he.json");var abbreviationsHu=_dereq_("./languages/abbreviations/hu.json");var abbreviationsLt=_dereq_("./languages/abbreviations/lt.json");var abbreviationsNl=_dereq_("./languages/abbreviations/nl.json");var abbreviationsRu=_dereq_("./languages/abbreviations/ru.json");var abbreviationsSl=_dereq_("./languages/abbreviations/sl.json");var abbreviationsSv=_dereq_("./languages/abbreviations/sv.json");var abbreviationsUk=_dereq_("./languages/abbreviations/uk.json");var abbreviationsVi=_dereq_("./languages/abbreviations/vi.json");var instructions={da:instructionsDa,de:instructionsDe,en:instructionsEn,eo:instructionsEo,es:instructionsEs,"es-ES":instructionsEsEs,fi:instructionsFi,fr:instructionsFr,he:instructionsHe,id:instructionsId,it:instructionsIt,ko:instructionsKo,my:instructionsMy,nl:instructionsNl,no:instructionsNo,pl:instructionsPl,"pt-BR":instructionsPtBr,"pt-PT":instructionsPtPt,ro:instructionsRo,ru:instructionsRu,sv:instructionsSv,tr:instructionsTr,uk:instructionsUk,vi:instructionsVi,"zh-Hans":instructionsZhHans};var grammars={fr:grammarFr,ru:grammarRu};var abbreviations={bg:abbreviationsBg,ca:abbreviationsCa,da:abbreviationsDa,de:ebbreviationsDe,en:abbreviationsEn,es:abbreviationsEs,fr:abbreviationsFr,he:abbreviationsHe,hu:abbreviationsHu,lt:abbreviationsLt,nl:abbreviationsNl,ru:abbreviationsRu,sl:abbreviationsSl,sv:abbreviationsSv,uk:abbreviationsUk,vi:abbreviationsVi};module.exports={supportedCodes:Object.keys(instructions),instructions:instructions,grammars:grammars,abbreviations:abbreviations}},{"./languages/abbreviations/bg.json":5,"./languages/abbreviations/ca.json":6,"./languages/abbreviations/da.json":7,"./languages/abbreviations/de.json":8,"./languages/abbreviations/en.json":9,"./languages/abbreviations/es.json":10,"./languages/abbreviations/fr.json":11,"./languages/abbreviations/he.json":12,"./languages/abbreviations/hu.json":13,"./languages/abbreviations/lt.json":14,"./languages/abbreviations/nl.json":15,"./languages/abbreviations/ru.json":16,"./languages/abbreviations/sl.json":17,"./languages/abbreviations/sv.json":18,"./languages/abbreviations/uk.json":19,"./languages/abbreviations/vi.json":20,"./languages/grammar/fr.json":21,"./languages/grammar/ru.json":22,"./languages/translations/da.json":23,"./languages/translations/de.json":24,"./languages/translations/en.json":25,"./languages/translations/eo.json":26,"./languages/translations/es-ES.json":27,"./languages/translations/es.json":28,"./languages/translations/fi.json":29,"./languages/translations/fr.json":30,"./languages/translations/he.json":31,"./languages/translations/id.json":32,"./languages/translations/it.json":33,"./languages/translations/ko.json":34,"./languages/translations/my.json":35,"./languages/translations/nl.json":36,"./languages/translations/no.json":37,"./languages/translations/pl.json":38,"./languages/translations/pt-BR.json":39,"./languages/translations/pt-PT.json":40,"./languages/translations/ro.json":41,"./languages/translations/ru.json":42,"./languages/translations/sv.json":43,"./languages/translations/tr.json":44,"./languages/translations/uk.json":45,"./languages/translations/vi.json":46,"./languages/translations/zh-Hans.json":47}],5:[function(_dereq_,module,exports){module.exports={abbreviations:{"междÑнаÑоден":"Ðежд","ÑÑаÑÑи":"СÑÑÑ","вÑзел":"ÐÑз","пазаÑ":"Mkt","ÑвеÑиÑвеÑи":"СвСв","ÑеÑÑÑа":"ÑеÑ","ÑилÑм":"Ум","апаÑÑаменÑи":"ап","езеÑо":"Ðз","ÑвеÑи":"Св","ÑенÑÑÑ":"Ц-Ñ","паÑк":"Ðк","маÑÑÑÑÑ":"Ð-Ñ","плоÑад":"Ðл","наÑионален":"ÐаÑ","ÑÑилиÑе":"УÑ","Ñека":"Рек","поÑок":"Ð-к","Ñайон":"Ð -н","кÑепоÑÑ":"Ð-Ñ","памеÑник":"Ðам","ÑнивеÑÑиÑеÑ":"Уни","ÐÑÑÑ ":"ÐÑ","ÑоÑка":"ТоÑ","планина":"Ðл","Ñело":"Ñ.","виÑоÑини":"виÑ","младÑи":"Ðл","ÑÑанÑиÑ":"С-Ñ","пÑÐ¾Ñ Ð¾Ð´":"ÐÑÐ¾Ñ ","баÑа":"ÐÑ"},classifications:{"ÑоÑиÑане":"ШоÑ","плавен":"Ðл","мÑÑÑо":"ÐÑ","ÑеÑаÑа":"ТеÑ","магиÑÑÑала":"Ð-ла","плоÑад":"Ðл","пеÑ":"ÐеÑ","залив":"Ð-в","пÑÑека":"Ð-ка","плаÑно":"Ðл","ÑлиÑа":"Ул","алеÑ":"Ðл","пеÑÐµÑ Ð¾Ð´Ð½Ð°":"ÐеÑ","ÑоÑка":"ТÑ","задминаване":"Ðадм","кÑÑгово":"ÐÑ","вÑÑÑ ":"ÐÑ","ÑÑд":"Сд","бÑлеваÑд":"ÐÑл","пÑÑ":"ÐÑÑ","ÑкоÑоÑÑна":"СкоÑ","моÑÑ":"Ðо"},directions:{"ÑевеÑозапад":"СÐ","ÑевеÑоизÑок":"СÐ","Ñгозапад":"ЮÐ","ÑгоизÑок":"ЮÐ","ÑевеÑ":"С","изÑок":"Ð","Ñг":"Ю"}}},{}],6:[function(_dereq_,module,exports){module.exports={abbreviations:{comunicacions:"Com.","entitat de població":"Nucli",disseminat:"Diss.","cap de municipi":"Cap",indret:"Indr.",comarca:"Cca.","relleu del litoral":"Lit.",municipi:"Mun.","xarxa hidrogrà fica":"Curs Fluv.",equipament:"Equip.",orografia:"Orogr.",barri:"Barri","edificació":"Edif.","edificació històrica":"Edif. Hist.","entitat descentralitzada":"E.M.D.","element hidrogrà fic":"Hidr."},classifications:{rotonda:"Rot.",carrerada:"Ca.","jardÃ":"J.",paratge:"Pge.",pont:"Pont",lloc:"Lloc",rambla:"Rbla.",cases:"Cses.",barranc:"Bnc.",plana:"Plana","polÃgon":"Pol.",muralla:"Mur.","enllaç":"Ellaç","antiga carretera":"Actra",glorieta:"Glor.",autovia:"Autv.","prolongació":"Prol.","calçada":"Cda.",carretera:"Ctra.",pujada:"Pda.",torrent:"T.",disseminat:"Disse",barri:"B.","cinturó":"Cinto",passera:"Psera",sender:"Send.",carrer:"C.","sèquia":"Sèq.",blocs:"Bloc",rambleta:"Rblt.",partida:"Par.",costa:"Cos.",sector:"Sec.","corraló":"Crral","urbanització":"Urb.",autopista:"Autp.",grup:"Gr.",platja:"Pja.",jardins:"J.",complex:"Comp.",portals:"Ptals",finca:"Fin.",travessera:"Trav.","plaça":"Pl.",travessia:"Trv.","polÃgon industrial":"PI.",passatge:"Ptge.",apartaments:"Apmt.",mirador:"Mira.",antic:"Antic","accés":"Acc.","colònia":"Col.",corriol:"Crol.",portal:"Ptal.",porta:"Pta.",port:"Port","carreró":"Cró.",riera:"Ra.","circumval·lació":"Cval.",baixada:"Bda.",placeta:"Plta.",escala:"Esc.","gran via":"GV",rial:"Rial",conjunt:"Conj.",avinguda:"Av.",esplanada:"Esp.",cantonada:"Cant.",ronda:"Rda.",corredor:"Cdor.",drecera:"Drec.","passadÃs":"PdÃs.",viaducte:"Vdct.",passeig:"Pg.","veïnat":"Veï."},directions:{sudest:"SE",sudoest:"SO",nordest:"NE",nordoest:"NO",est:"E",nord:"N",oest:"O",sud:"S"}}},{}],7:[function(_dereq_,module,exports){module.exports={abbreviations:{skole:"Sk.",ved:"v.",centrum:"C.",sankt:"Skt.",vestre:"v.",hospital:"Hosp.","stræde":"Str.",nordre:"Nr.",plads:"Pl.",universitet:"Uni.","vænge":"vg.",station:"St."},classifications:{avenue:"Ave",gammel:"Gl.",dronning:"Dronn.","sønder":"Sdr.","nørre":"Nr.",vester:"V.",vestre:"V.","øster":"Ã.","østre":"Ã.",boulevard:"Boul."},directions:{"sydøst":"SÃ",nordvest:"NV",syd:"S","nordøst":"NÃ",sydvest:"SV",vest:"V",nord:"N","øst":"Ã"}}},{}],8:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{osten:"O",nordosten:"NO","süden":"S",nordwest:"NW",norden:"N","südost":"SO","südwest":"SW",westen:"W"}}},{}],9:[function(_dereq_,module,exports){module.exports={abbreviations:{square:"Sq",centre:"Ctr",sister:"Sr",lake:"Lk",fort:"Ft",route:"Rte",william:"Wm",national:"Natâl",junction:"Jct",center:"Ctr",saint:"St",saints:"SS",station:"Sta",mount:"Mt",junior:"Jr",mountain:"Mtn",heights:"Hts",university:"Univ",school:"Sch",international:"Intâl",apartments:"Apts",crossing:"Xing",creek:"Crk",township:"Twp",downtown:"Dtwn",father:"Fr",senior:"Sr",point:"Pt",river:"Riv",market:"Mkt",village:"Vil",park:"Pk",memorial:"Mem"},classifications:{place:"Pl",circle:"Cir",bypass:"Byp",motorway:"Mwy",crescent:"Cres",road:"Rd",cove:"Cv",lane:"Ln",square:"Sq",street:"St",freeway:"Fwy",walk:"Wk",plaza:"Plz",parkway:"Pky",avenue:"Ave",pike:"Pk",drive:"Dr",highway:"Hwy",footway:"Ftwy",point:"Pt",court:"Ct",terrace:"Ter",walkway:"Wky",alley:"Aly",expressway:"Expy",bridge:"Br",boulevard:"Blvd",turnpike:"Tpk"},directions:{southeast:"SE",northwest:"NW",south:"S",west:"W",southwest:"SW",north:"N",east:"E",northeast:"NE"}}},{}],10:[function(_dereq_,module,exports){module.exports={abbreviations:{segunda:"2ª",octubre:"8bre",doctores:"Drs",doctora:"Dra",internacional:"Intl",doctor:"Dr",segundo:"2º","señorita":"Srta",doctoras:"Drs",primera:"1ª",primero:"1º",san:"S",colonia:"Col","doña":"Dña",septiembre:"7bre",diciembre:"10bre","señor":"Sr",ayuntamiento:"Ayto","señora":"Sra",tercera:"3ª",tercero:"3º",don:"D",santa:"Sta",ciudad:"Cdad",noviembre:"9bre",departamento:"Dep"},classifications:{camino:"Cmno",avenida:"Av",paseo:"Pº",autopista:"Auto",calle:"C",plaza:"Pza",carretera:"Crta"},directions:{este:"E",noreste:"NE",sur:"S",suroeste:"SO",noroeste:"NO",oeste:"O",sureste:"SE",norte:"N"}}},{}],11:[function(_dereq_,module,exports){module.exports={abbreviations:{"allée":"All","aérodrome":"Aérod","aéroport":"Aérop"},classifications:{centrale:"Ctrale",campings:"Camp.",urbains:"Urb.",mineure:"Min.",publique:"Publ.","supérieur":"Sup.","fédération":"Féd.","notre-dame":"ND",saint:"St","centre hospitalier régional":"CHR",exploitation:"Exploit.","général":"Gal",civiles:"Civ.",maritimes:"Marit.",aviation:"Aviat.",iii:"3","archéologique":"Archéo.",musical:"Music.",musicale:"Music.",immeuble:"Imm.",xv:"15","hôtel":"Hôt.",alpine:"Alp.",communale:"Commun.",v:"5",global:"Glob.","université":"Univ.","confédéral":"Conféd.",xx:"20",x:"10",piscine:"Pisc.",dimanche:"di.",fleuve:"Flv",postaux:"Post.",musicienne:"Music.","département":"Dépt","février":"Févr.",municipales:"Munic.",province:"Prov.","communautés":"Commtés",barrage:"Barr.",mercredi:"me.","présidentes":"Pdtes","cafétérias":"Cafét.","théâtral":"Thé.",viticulteur:"Vitic.",poste:"Post.","spécialisée":"Spéc.",agriculture:"Agric.",infirmier:"Infirm.",animation:"Anim.",mondiale:"Mond.","arrêt":"Arr.",zone:"zon.",municipaux:"Munic.",grand:"Gd",janvier:"Janv.",fondateur:"Fond.","première":"1re",municipale:"Munic.",direction:"Dir.",anonyme:"Anon.","départementale":"Dépt",moyens:"Moy.",novembre:"Nov.",jardin:"Jard.",petites:"Pet.","privé":"Priv.",centres:"Ctres",forestier:"Forest.",xiv:"14",africaines:"Afric.",sergent:"Sgt","européenne":"Eur.","privée":"Priv.","café":"Cfé",xix:"19",hautes:"Htes",major:"Mjr",vendredi:"ve.","municipalité":"Munic.","sous-préfecture":"Ss-préf.","spéciales":"Spéc.",secondaires:"Second.",viie:"7e",moyenne:"Moy.",commerciale:"Commerc.","région":"Rég.","américaines":"Amér.","américains":"Amér.",service:"Sce",professeur:"Prof.","départemental":"Dépt","hôtels":"Hôt.",mondiales:"Mond.",ire:"1re",caporal:"Capo.",militaire:"Milit.","lycée d'enseignement professionnel":"LEP",adjudant:"Adj.","médicale":"Méd.","conférences":"Confér.",universelle:"Univ.",xiie:"12e","supérieures":"Sup.",naturel:"Natur.","société nationale":"SN",hospitalier:"Hosp.",culturelle:"Cult.","américain":"Amér.","son altesse royale":"S.A.R.","infirmière":"Infirm.",viii:"8",fondatrice:"Fond.",madame:"Mme","métropolitain":"Métrop.",ophtalmologues:"Ophtalmos",xviie:"18e",viiie:"8e","commerçante":"Commerç.","centre d'enseignement du second degré":"CES",septembre:"Sept.",agriculteur:"Agric.",xiii:"13",pontifical:"Pontif.","cafétéria":"Cafét.",prince:"Pce",vie:"6e",archiduchesse:"Archid.",occidental:"Occ.",spectacles:"Spect.",camping:"Camp.","métro":"Mº",arrondissement:"Arrond.",viticole:"Vitic.",ii:"2","siècle":"Si.",chapelles:"Chap.",centre:"Ctre","sapeur-pompiers":"Sap.-pomp.","établissements":"Ãtabts","société anonyme":"SA",directeurs:"Dir.",vii:"7",culturel:"Cult.",central:"Ctral","métropolitaine":"Métrop.",administrations:"Admin.",amiraux:"Amir.",sur:"s/",premiers:"1ers","provence-alpes-côte d'azur":"PACA","cathédrale":"Cathéd.",iv:"4",postale:"Post.",social:"Soc.","spécialisé":"Spéc.",district:"Distr.",technologique:"Techno.",viticoles:"Vitic.",ix:"9","protégés":"Prot.",historiques:"Hist.",sous:"s/s",national:"Nal",ambassade:"Amb.","cafés":"Cfés",agronomie:"Agro.",sapeurs:"Sap.",petits:"Pet.",monsieur:"M.",boucher:"Bouch.",restaurant:"Restau.","lycée":"Lyc.",urbaine:"Urb.","préfecture":"Préf.",districts:"Distr.",civil:"Civ.","protégées":"Prot.",sapeur:"Sap.","théâtre":"Thé.","collège":"Coll.",mardi:"ma.","mémorial":"Mémor.",africain:"Afric.","républicaine":"Républ.",sociale:"Soc.","spécial":"Spéc.",technologie:"Techno.",charcuterie:"Charc.",commerces:"Commerc.",fluviale:"Flv",parachutistes:"Para.",primaires:"Prim.",directions:"Dir.","présidentiel":"Pdtl",nationales:"Nales","après":"apr.",samedi:"sa.","unité":"U.",xxiii:"23","associé":"Assoc.","électrique":"Ãlectr.",populaire:"Pop.",asiatique:"Asiat.",navigable:"Navig.","présidente":"Pdte",xive:"14e","associés":"Assoc.",pompiers:"Pomp.",agricoles:"Agric.","élém":"Ãlém.","décembre":"Déc.","son altesse":"S.Alt.","après-midi":"a.-m.",mineures:"Min.",juillet:"Juil.",aviatrices:"Aviat.",fondation:"Fond.",pontificaux:"Pontif.",temple:"Tple","européennes":"Eur.","régionale":"Rég.",informations:"Infos",mondiaux:"Mond.",infanterie:"Infant.","archéologie":"Archéo.",dans:"d/",hospice:"Hosp.",spectacle:"Spect.","hôtels-restaurants":"Hôt.-Rest.","hôtel-restaurant":"Hôt.-Rest.","hélicoptère":"hélico",xixe:"19e",cliniques:"Clin.",docteur:"Dr",secondaire:"Second.",municipal:"Munic.","générale":"Gale","château":"Chât.","commerçant":"Commerç.",avril:"Avr.",clinique:"Clin.",urbaines:"Urb.",navale:"Nav.",navigation:"Navig.",asiatiques:"Asiat.",pontificales:"Pontif.",administrative:"Admin.",syndicat:"Synd.",lundi:"lu.",petite:"Pet.",maritime:"Marit.","métros":"Mº",enseignement:"Enseign.",fluviales:"Flv",historique:"Hist.","comtés":"Ctés","résidentiel":"Résid.",international:"Int.","supérieure":"Sup.","centre hospitalier universitaire":"CHU","confédération":"Conféd.",boucherie:"Bouch.",fondatrices:"Fond.","médicaux":"Méd.","européens":"Eur.",orientaux:"Ori.",naval:"Nav.","étang":"Ãtg",provincial:"Prov.",junior:"Jr","départementales":"Dépt",musique:"Musiq.",directrices:"Dir.","maréchal":"Mal",civils:"Civ.","protégé":"Prot.","établissement":"Ãtabt",trafic:"Traf.",aviateur:"Aviat.",archives:"Arch.",africains:"Afric.",maternelle:"Matern.",industrielle:"Ind.",administratif:"Admin.",oriental:"Ori.",universitaire:"Univ.",majeur:"Maj.",haute:"Hte",communal:"Commun.",petit:"Pet.",commune:"Commun.",exploitant:"Exploit.","conférence":"Confér.",monseigneur:"Mgr",pharmacien:"Pharm.",jeudi:"je.",primaire:"Prim.","hélicoptères":"hélicos",agronomique:"Agro.","médecin":"Méd.",ve:"5e",pontificale:"Pontif.",ier:"1er","cinéma":"Ciné",fluvial:"Flv",occidentaux:"Occ.","commerçants":"Commerç.",banque:"Bq",moyennes:"Moy.",pharmacienne:"Pharm.","démocratique":"Dém.","cinémas":"Cinés","spéciale":"Spéc.","présidents":"Pdts",directrice:"Dir.",vi:"6",basse:"Bas.",xve:"15e","état":"Ã.",aviateurs:"Aviat.",majeurs:"Maj.",infirmiers:"Infirm.","église":"Ãgl.","confédérale":"Conféd.",xxie:"21e",comte:"Cte","européen":"Eur.",union:"U.",pharmacie:"Pharm.","infirmières":"Infirm.","comté":"Cté",sportive:"Sport.","deuxième":"2e",xvi:"17",haut:"Ht","médicales":"Méd.","développé":"Dévelop.","bâtiment":"Bât.",commerce:"Commerc.",ive:"4e",associatif:"Assoc.",rural:"Rur.","cimetière":"Cim.","régional":"Rég.",ferroviaire:"Ferr.",vers:"v/","mosquée":"Mosq.",mineurs:"Min.",nautique:"Naut.","châteaux":"Chât.",sportif:"Sport.",mademoiselle:"Mle","école":"Ãc.",doyen:"Doy.",industriel:"Ind.",chapelle:"Chap.","sociétés":"Stés",internationale:"Int.","coopératif":"Coop.",hospices:"Hosp.",xxii:"22",parachutiste:"Para.",alpines:"Alp.",civile:"Civ.",xvie:"17e","états":"Ã.","musée":"Msée",centrales:"Ctrales",globaux:"Glob.","supérieurs":"Sup.",syndicats:"Synd.","archevêque":"Archev.",docteurs:"Drs","bibliothèque":"Biblio.",lieutenant:"Lieut.","république":"Rép.","vétérinaire":"Vét.","départementaux":"Dépt",premier:"1er",fluviaux:"Flv","animé":"Anim.",orientales:"Ori.",technologiques:"Techno.",princesse:"Pse","routière":"Rout.","coopérative":"Coop.",scolaire:"Scol.","écoles":"Ãc.",football:"Foot",territoriale:"Territ.",commercial:"Commerc.",mineur:"Min.","millénaires":"Mill.",association:"Assoc.",catholique:"Cathol.",administration:"Admin.",mairie:"Mair.",portuaire:"Port.",tertiaires:"Terti.","théâtrale":"Thé.",palais:"Pal.","troisième":"3e",directeur:"Dir.","vétérinaires":"Vét.","faculté":"Fac.",occidentales:"Occ.",viticulteurs:"Vitic.",xvii:"18",occidentale:"Occ.",amiral:"Amir.",professionnel:"Profess.",administratives:"Admin.",commerciales:"Commerc.",saints:"Sts",agronomes:"Agro.",stade:"Std","sous-préfet":"Ss-préf.",senior:"Sr",agronome:"Agro.",terrain:"Terr.",catholiques:"Cathol.","résidentielle":"Résid.",grands:"Gds",exploitants:"Exploit.",xiiie:"13e",croix:"Cx","généraux":"Gaux","crédit":"Créd.","cimetières":"Cim.",antenne:"Ant.","médical":"Méd.","collèges":"Coll.",musicien:"Music.",apostolique:"Apost.",postal:"Post.",territorial:"Territ.",urbanisme:"Urb.","préfectorale":"Préf.",fondateurs:"Fond.",information:"Info.","églises":"Ãgl.",ophtalmologue:"Ophtalmo","congrégation":"Congrég.",charcutier:"Charc.","étage":"ét.",consulat:"Consul.",public:"Publ.","ferrée":"Ferr.",matin:"mat.","société anonyme à responsabilité limitée":"SARL",monuments:"Mmts",protection:"Prot.",universel:"Univ.",nationale:"Nale","président":"Pdt",provinciale:"Prov.",agriculteurs:"Agric.","préfectoral":"Préf.",xxe:"20e",alpins:"Alp.",avant:"av.",infirmerie:"Infirm.","deux mil":"2000",rurale:"Rur.",administratifs:"Admin.",octobre:"Oct.",archipel:"Archip.","communauté":"Commté",globales:"Glob.",alpin:"Alp.","numéros":"Nºˢ","lieutenant-colonel":"Lieut.-Col.","jésus-christ":"J.-C.",agricole:"Agric.","sa majesté":"S.Maj.",associative:"Assoc.",xxi:"21","présidentielle":"Pdtle",moyen:"Moy.","fédéral":"Féd.",professionnelle:"Profess.",tertiaire:"Terti.",ixe:"9e","hôpital":"Hôp.",technologies:"Techno.",iiie:"3e","développement":"Dévelop.",monument:"Mmt","forestière":"Forest.","numéro":"Nº",viticulture:"Vitic.","traversière":"Traver.",technique:"Tech.","électriques":"Ãlectr.",militaires:"Milit.",pompier:"Pomp.","américaine":"Amér.","préfet":"Préf.","congrégations":"Congrég.","pâtissier":"Pâtiss.",mondial:"Mond.",ophtalmologie:"Ophtalm.",sainte:"Ste",africaine:"Afric.",aviatrice:"Aviat.",doyens:"Doy.","société":"Sté",majeures:"Maj.",orientale:"Ori.","ministère":"Min.",archiduc:"Archid.",territoire:"Territ.",techniques:"Tech.","île-de-france":"IDF",globale:"Glob.",xe:"10e",xie:"11e",majeure:"Maj.",commerciaux:"Commerc.",maire:"Mair.","spéciaux":"Spéc.",grande:"Gde",messieurs:"MM",colonel:"Col.","millénaire":"Mill.",xi:"11",urbain:"Urb.","fédérale":"Féd.","ferré":"Ferr.","rivière":"Riv.","républicain":"Républ.",grandes:"Gdes","régiment":"Régim.",hauts:"Hts","catégorie":"Catég.",basses:"Bas.",xii:"12",agronomiques:"Agro.",iie:"2e","protégée":"Prot.","sapeur-pompier":"Sap.-pomp."},directions:{"est-nord-est":"ENE", 2166"nord-est":"NE",ouest:"O","sud-est":"SE","est-sud-est":"ESE","nord-nord-est":"NNE",sud:"S","nord-nord-ouest":"NNO","nord-ouest":"NO",nord:"N","ouest-sud-ouest":"OSO","ouest-nord-ouest":"ONO","sud-ouest":"SO","sud-sud-est":"SSE","sud-sud-ouest":"SSO",est:"E"}}},{}],12:[function(_dereq_,module,exports){module.exports={abbreviations:{"ש×ר×ת":"ש×'"},classifications:{},directions:{}}},{}],13:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{kelet:"K","északkelet":"ÃK","dél":"D","északnyugat":"ÃNY","észak":"Ã","délkelet":"DK","délnyugat":"DNY",nyugat:"NY"}}},{}],14:[function(_dereq_,module,exports){module.exports={abbreviations:{apartamentai:"Apt","aukÅ¡tumos":"AukÅ¡",centras:"Ctr","ežeras":"Ež",fortas:"Ft",greitkelis:"Grtkl",juosta:"Jst",kaimas:"Km",kalnas:"Kln",kelias:"Kl",kiemelis:"Kml",miestelis:"Mstl","miesto centras":"M.Ctr",mokykla:"Mok",nacionalinis:"Nac",paminklas:"Pmkl",parkas:"Pk",pusratis:"Psrt","sankryža":"Skrž","sesÄ":"SesÄ",skveras:"Skv",stotis:"St","Å¡v":"Å v",tarptautinis:"Trptaut","taÅ¡kas":"TÅ¡k","tÄvas":"TÄv",turgus:"Tgs",universitetas:"Univ","upÄ":"Up",upelis:"Up",vieta:"Vt"},classifications:{"aikÅ¡tÄ":"a.","alÄja":"al.",aplinkkelis:"aplinkl.",autostrada:"auto.",bulvaras:"b.","gatvÄ":"g.",kelias:"kel.","krantinÄ":"krant.",prospektas:"pr.",plentas:"pl.",skersgatvis:"skg.",takas:"tak.",tiltas:"tlt."},directions:{"pietÅ«s":"P",vakarai:"V","Å¡iaurÄ":"Å ","Å¡iaurÄs vakarai":"Å V","pietryÄiai":"PR","Å¡iaurÄs rytai":"Å R",rytai:"R",pietvakariai:"PV"}}},{}],15:[function(_dereq_,module,exports){module.exports={abbreviations:{centrum:"Cntrm",nationaal:"Natâl",berg:"Brg",meer:"Mr",kruising:"Krsng",toetreden:"Ttrdn"},classifications:{bypass:"Pass",brug:"Br",straat:"Str",rechtbank:"Rbank",snoek:"Snk",autobaan:"Baan",terras:"Trrs",punt:"Pt",plaza:"Plz",rijden:"Rijd",parkway:"Pky",inham:"Nham",snelweg:"Weg","halve maan":"Maan",cirkel:"Crkl",laan:"Ln",rijbaan:"Strook",weg:"Weg",lopen:"Lpn",autoweg:"Weg",boulevard:"Blvd",plaats:"Plts",steeg:"Stg",voetpad:"Stoep"},directions:{noordoost:"NO",westen:"W",zuiden:"Z",zuidwest:"ZW",oost:"O",zuidoost:"ZO",noordwest:"NW",noorden:"N"}}},{}],16:[function(_dereq_,module,exports){module.exports={abbreviations:{"апоÑÑола":"ап.","апоÑÑолов":"апп.","великомÑÑеника":"вмÑ","великомÑÑениÑÑ":"вмÑ.","владение":"вл.","гоÑод":"г.","деÑевнÑ":"д.","имени":"им.","мÑÑеника":"мÑ.","мÑÑеников":"мÑÑ.","мÑÑениÑ":"мÑÑ.","мÑÑениÑÑ":"мÑ.","озеÑо":"о.","поÑÑлок":"п.","пÑеподобного":"пÑп.","пÑеподобнÑÑ ":"пÑпп.","Ñека":"Ñ.","ÑвÑÑиÑелей":"ÑвÑÑ.","ÑвÑÑиÑелÑ":"ÑвÑ.","ÑвÑÑенномÑÑеника":"ÑÑмÑ.","ÑвÑÑенномÑÑеников":"ÑÑмÑÑ.","ÑÑанÑиÑ":"ÑÑ.","ÑÑаÑÑок":"ÑÑ."},classifications:{"пÑоезд":"пÑ-д","пÑоÑпекÑ":"пÑ.","пеÑеÑлок":"пеÑ.","набеÑежнаÑ":"наб.","плоÑадÑ":"пл.","ÑоÑÑе":"Ñ.","бÑлÑваÑ":"б.","ÑÑпик":"ÑÑп.","ÑлиÑа":"Ñл."},directions:{"воÑÑок":"Ð","ÑевеÑо-воÑÑок":"СÐ","Ñго-воÑÑок":"ЮÐ","Ñго-запад":"ЮÐ","ÑевеÑо-запад":"СÐ","ÑевеÑ":"С","запад":"Ð","Ñг":"Ю"}}},{}],17:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{vzhod:"V",severovzhod:"SV",jug:"J",severozahod:"SZ",sever:"S",jugovzhod:"JV",jugozahod:"JZ",zahod:"Z"}}},{}],18:[function(_dereq_,module,exports){module.exports={abbreviations:{sankta:"s:ta",gamla:"G:la",sankt:"s:t"},classifications:{Bro:"Br"},directions:{norr:"N","sydöst":"SO","väster":"V","öster":"O","nordväst":"NV","sydväst":"SV","söder":"S","nordöst":"NO"}}},{}],19:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{"ÑÑ Ñд":"Ð¡Ñ ","пÑвнÑÑний ÑÑ Ñд":"ÐÐ½Ð¡Ñ ","пÑвденÑ":"Ðд","пÑвнÑÑний Ð·Ð°Ñ Ñд":"ÐнÐд","пÑвнÑÑ":"Ðн","пÑвденний ÑÑ Ñд":"ÐÐ´Ð¡Ñ ","пÑвденний Ð·Ð°Ñ Ñд":"ÐдÐÑ ","Ð·Ð°Ñ Ñд":"ÐÑ "}}},{}],20:[function(_dereq_,module,exports){module.exports={abbreviations:{"viá»n bảo tà ng":"VBT","thá» trấn":"Tt","Äại há»c":"ÄH","cÄn cứ không quan":"CCKQ","câu lạc bá»":"CLB","bưu Äiá»n":"BÄ","khách sạn":"KS","khu du lá»ch":"KDL","khu công nghiá»p":"KCN","khu nghá» mát":"KNM","thá» xã":"Tx","khu chung cư":"KCC","phi trưá»ng":"PT","trung tâm":"TT","tá»ng công ty":"TCty","trung há»c cÆ¡ sá»":"THCS","sân bay quá»c tế":"SBQT","trung há»c phá» thông":"THPT","cao Äẳng":"CÄ","công ty":"Cty","sân bay":"SB","thà nh phá»":"Tp","công viên":"CV","sân váºn Äá»ng":"SVÄ","linh mục":"LM","vưá»n quá»c gia":"VQG"},classifications:{"huyá»n lá»":"HL","ÄÆ°á»ng tá»nh":"ÄT","quá»c lá»":"QL","xa lá»":"XL","hương lá»":"HL","tá»nh lá»":"TL","ÄÆ°á»ng huyá»n":"ÄH","ÄÆ°á»ng cao tá»c":"ÄCT","Äại lá»":"ÄL","viá»t nam":"VN","quảng trưá»ng":"QT","ÄÆ°á»ng bá»":"ÄB"},directions:{"tây":"T",nam:"N","Äông nam":"ÄN","Äông bắc":"ÄB","tây nam":"TN","Äông":"Ä","bắc":"B"}}},{}],21:[function(_dereq_,module,exports){module.exports={meta:{regExpFlags:"gi"},v5:{article:[["^ Acc[èe]s "," lâaccès "],["^ Aire "," lâaire "],["^ All[ée]e "," lâallée "],["^ Anse "," lâanse "],["^ (L['â])?Autoroute "," lâautoroute "],["^ Avenue "," lâavenue "],["^ Barreau "," le barreau "],["^ Boulevard "," le boulevard "],["^ Chemin "," le chemin "],["^ Petit[\\- ]Chemin "," le petit chemin "],["^ Cit[ée] "," la cité "],["^ Clos "," le clos "],["^ Corniche "," la corniche "],["^ Cour "," la cour "],["^ Cours "," le cours "],["^ D[ée]viation "," la déviation "],["^ Entr[ée]e "," lâentrée "],["^ Esplanade "," lâesplanade "],["^ Galerie "," la galerie "],["^ Impasse "," lâimpasse "],["^ Lotissement "," le lotissement "],["^ Mont[ée]e "," la montée "],["^ Parc "," le parc "],["^ Parvis "," le parvis "],["^ Passage "," le passage "],["^ Place "," la place "],["^ Petit[\\- ]Pont "," le petit-pont "],["^ Pont "," le pont "],["^ Promenade "," la promenade "],["^ Quai "," le quai "],["^ Rocade "," la rocade "],["^ Rond[\\- ]?Point "," le rond-point "],["^ Route "," la route "],["^ Rue "," la rue "],["^ Grande Rue "," la grande rue "],["^ Sente "," la sente "],["^ Sentier "," le sentier "],["^ Sortie "," la sortie "],["^ Souterrain "," le souterrain "],["^ Square "," le square "],["^ Terrasse "," la terrasse "],["^ Traverse "," la traverse "],["^ Tunnel "," le tunnel "],["^ Viaduc "," le viaduc "],["^ Villa "," la villa "],["^ Village "," le village "],["^ Voie "," la voie "],[" ([dl])'"," $1â"]],preposition:[["^ Le "," du "],["^ Les "," des "],["^ La "," de La "],["^ Acc[èe]s "," de lâaccès "],["^ Aire "," de lâaire "],["^ All[ée]e "," de lâallée "],["^ Anse "," de lâanse "],["^ (L['â])?Autoroute "," de lâautoroute "],["^ Avenue "," de lâavenue "],["^ Barreau "," du barreau "],["^ Boulevard "," du boulevard "],["^ Chemin "," du chemin "],["^ Petit[\\- ]Chemin "," du petit chemin "],["^ Cit[ée] "," de la cité "],["^ Clos "," du clos "],["^ Corniche "," de la corniche "],["^ Cour "," de la cour "],["^ Cours "," du cours "],["^ D[ée]viation "," de la déviation "],["^ Entr[ée]e "," de lâentrée "],["^ Esplanade "," de lâesplanade "],["^ Galerie "," de la galerie "],["^ Impasse "," de lâimpasse "],["^ Lotissement "," du lotissement "],["^ Mont[ée]e "," de la montée "],["^ Parc "," du parc "],["^ Parvis "," du parvis "],["^ Passage "," du passage "],["^ Place "," de la place "],["^ Petit[\\- ]Pont "," du petit-pont "],["^ Pont "," du pont "],["^ Promenade "," de la promenade "],["^ Quai "," du quai "],["^ Rocade "," de la rocade "],["^ Rond[\\- ]?Point "," du rond-point "],["^ Route "," de la route "],["^ Rue "," de la rue "],["^ Grande Rue "," de la grande rue "],["^ Sente "," de la sente "],["^ Sentier "," du sentier "],["^ Sortie "," de la sortie "],["^ Souterrain "," du souterrain "],["^ Square "," du square "],["^ Terrasse "," de la terrasse "],["^ Traverse "," de la traverse "],["^ Tunnel "," du tunnel "],["^ Viaduc "," du viaduc "],["^ Villa "," de la villa "],["^ Village "," du village "],["^ Voie "," de la voie "],["^ ([AÃÃEÃÃÃÃIÃÃOÃUÃÃÃYŸÃÅ])"," dâ$1"],["^ (\\S)"," de $1"],[" ([dl])'"," $1â"]],rotary:[["^ Le "," le rond-point du "],["^ Les "," le rond-point des "],["^ La "," le rond-point de La "],["^ Acc[èe]s "," le rond-point de lâaccès "],["^ Aire "," le rond-point de lâaire "],["^ All[ée]e "," le rond-point de lâallée "],["^ Anse "," le rond-point de lâanse "],["^ (L['â])?Autoroute "," le rond-point de lâautoroute "],["^ Avenue "," le rond-point de lâavenue "],["^ Barreau "," le rond-point du barreau "],["^ Boulevard "," le rond-point du boulevard "],["^ Chemin "," le rond-point du chemin "],["^ Petit[\\- ]Chemin "," le rond-point du petit chemin "],["^ Cit[ée] "," le rond-point de la cité "],["^ Clos "," le rond-point du clos "],["^ Corniche "," le rond-point de la corniche "],["^ Cour "," le rond-point de la cour "],["^ Cours "," le rond-point du cours "],["^ D[ée]viation "," le rond-point de la déviation "],["^ Entr[ée]e "," le rond-point de lâentrée "],["^ Esplanade "," le rond-point de lâesplanade "],["^ Galerie "," le rond-point de la galerie "],["^ Impasse "," le rond-point de lâimpasse "],["^ Lotissement "," le rond-point du lotissement "],["^ Mont[ée]e "," le rond-point de la montée "],["^ Parc "," le rond-point du parc "],["^ Parvis "," le rond-point du parvis "],["^ Passage "," le rond-point du passage "],["^ Place "," le rond-point de la place "],["^ Petit[\\- ]Pont "," le rond-point du petit-pont "],["^ Pont "," le rond-point du pont "],["^ Promenade "," le rond-point de la promenade "],["^ Quai "," le rond-point du quai "],["^ Rocade "," le rond-point de la rocade "],["^ Rond[\\- ]?Point "," le rond-point "],["^ Route "," le rond-point de la route "],["^ Rue "," le rond-point de la rue "],["^ Grande Rue "," le rond-point de la grande rue "],["^ Sente "," le rond-point de la sente "],["^ Sentier "," le rond-point du sentier "],["^ Sortie "," le rond-point de la sortie "],["^ Souterrain "," le rond-point du souterrain "],["^ Square "," le rond-point du square "],["^ Terrasse "," le rond-point de la terrasse "],["^ Traverse "," le rond-point de la traverse "],["^ Tunnel "," le rond-point du tunnel "],["^ Viaduc "," le rond-point du viaduc "],["^ Villa "," le rond-point de la villa "],["^ Village "," le rond-point du village "],["^ Voie "," le rond-point de la voie "],["^ ([AÃÃEÃÃÃÃIÃÃOÃUÃÃÃYŸÃÅ])"," le rond-point dâ$1"],["^ (\\S)"," le rond-point de $1"],[" ([dl])'"," $1â"]],arrival:[["^ Le "," au "],["^ Les "," aux "],["^ La "," à La "],["^ (\\S)"," à $1"],[" ([dl])'"," $1â"]]}}},{}],22:[function(_dereq_,module,exports){module.exports={meta:{regExpFlags:""},v5:{accusative:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-Ñ $2ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ [Ðа]Ð»Ð»ÐµÑ "," Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ-$2ÑÑ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-Ñ ÑлиÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-Ñ $2ÑÑ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ $2ÑÑ ÑлиÑÑ "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1Ñ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ÑÑ $2Ñ ÑлиÑÑ "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑÐ»Ð°Ð²Ð»Ñ ÑлиÑÑ "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑÐ½Ñ ÑлиÑÑ "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑÑ ÑлиÑÑ "],["^ [УÑ]лиÑа "," ÑлиÑÑ "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-Ñ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-Ñ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-Ñ $2ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-Ñ Ð»Ð¸Ð½Ð¸Ð¸ "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-Ñ $2ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежнÑÑ "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1Ñ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-Ñ $2ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-Ñ Ð¿ÑоÑÐµÐºÑ "],["^ [Ðп]ÑоÑека "," пÑоÑÐµÐºÑ "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-Ñ $2ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ [ÐÑ]ÑÑакада "," ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ $2ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-Ñ $2ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑÐ°Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-Ñ $2ÑÑ ÑазвÑÐ·ÐºÑ "],["^ [Ð Ñ]азвÑзка "," ÑазвÑÐ·ÐºÑ "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-Ñ $2ÑÑ ÑÑаÑÑÑ "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑÑ "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2ÑÑ $3доÑÐ¾Ð³Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-Ñ $2ÑÑ $3доÑÐ¾Ð³Ñ "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑÐ¾Ð³Ñ "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-Ñ $2ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ [Ðд]оÑожка "," доÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ÑÑ ÐºÐ¾ÑÑ "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ÑÑ Ñ Ð¾ÑÐ´Ñ "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑ "]],dative:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллее "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллее "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллее "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑе "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑе "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑе "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑе "],["^ [УÑ]лиÑа "," ÑлиÑе "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линиÑм "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеке "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеке "],["^ [Ðп]ÑоÑека "," пÑоÑеке "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑакаде "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑакаде "],["^ [ÐÑ]ÑÑакада "," ÑÑÑакаде "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзке "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзке "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑе "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑе "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоге "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоге "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоге "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоге "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожке "],["^ [Ðд]оÑожка "," доÑожке "],["^ (\\S+)во [Ðп]оле "," $1Ð²Ñ Ð¿Ð¾Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑе "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾Ñде "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1Ð¾Ð¼Ñ Ð¿ÑоÑÐ¾ÐºÑ "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2Ñ Ð±ÑлÑваÑÑ "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑÑ "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑÑ "],["^ (\\S+н)ий [Ðз]аезд "," $1ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ [Ðз]аезд "," Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ [Ðм]оÑÑ "," моÑÑÑ "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1ÐµÐ¼Ñ Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1Ð¾Ð¼Ñ Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ (\\S+н)ий [Ðп]аÑк "," $1ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-Ð¼Ñ $2Ñ Ð¿Ð°ÑÐºÑ "],["^ [Ðп]аÑк "," паÑÐºÑ "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1омÑ-$2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2омÑ-$3Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ [Ðп]еÑеÑлок "," пеÑеÑÐ»ÐºÑ "],["^ [Ðп]одÑезд "," подÑÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ñ-$2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ $3Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ $3Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ [Ðп]Ñоезд "," пÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2Ñ Ð¿ÑоÑпекÑÑ "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑÑ "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1Ñ ÑпÑÑÐºÑ "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ [СÑ]пÑÑк "," ÑпÑÑÐºÑ "],["^ (\\S+н)ий [СÑ]Ñезд "," $1ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-Ð¼Ñ $2Ñ ÑÑÐµÐ·Ð´Ñ "],["^ [СÑ]Ñезд "," ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1Ñ ÑÑакÑÑ "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑÑ "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ [ТÑ]Ñпик "," ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2колÑÑÑ "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2колÑÑÑ "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑÑ "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1Ð¼Ñ ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],[" ([ТÑ])ÑеÑÐ¾Ð¼Ñ "," $1ÑеÑÑÐµÐ¼Ñ "],["([жÑ])Ð¾Ð¼Ñ ","$1ÑÐµÐ¼Ñ "],["([жÑ])ой ","$1ей "]], 2167genitive:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллеи "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллеи "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллеи "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллеи "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллеи "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑÑ "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑÑ "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑÑ "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑÑ "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑÑ "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑÑ "],["^ [УÑ]лиÑа "," ÑлиÑÑ "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линий "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеки "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеки "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеки "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеки "],["^ [Ðп]ÑоÑека "," пÑоÑеки "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ [ÐÑ]ÑÑакада "," ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзки "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзки "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзки "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзки "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзки "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑÑ "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑÑ "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоги "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоги "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоги "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоги "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоги "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоги "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожки "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожки "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожки "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожки "],["^ [Ðд]оÑожка "," доÑожки "],["^ (\\S+)во [Ðп]оле "," $1ва Ð¿Ð¾Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑÑ "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾ÑÐ´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1ого пÑоÑока "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1его бÑлÑваÑа "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого бÑлÑваÑа "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2его бÑлÑваÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1его $2ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2ого бÑлÑваÑа "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2его бÑлÑваÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2ого бÑлÑваÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2ого бÑлÑваÑа "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑа "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑа "],["^ (\\S+н)ий [Ðз]аезд "," $1его заезда "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1ого заезда "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1а заезда "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1а заезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1ого $2его заезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1его $2ого заезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1ого $2ого заезда "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1ого $2а заезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1ого $2а заезда "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-го $2его заезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-го $2ого заезда "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-го $2а заезда "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-го $2а заезда "],["^ [Ðз]аезд "," заезда "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1его моÑÑа "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ого моÑÑа "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1а моÑÑа "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1а моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1ого $2его моÑÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1его $2ого моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ого $2ого моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ого $2а моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ого $2а моÑÑа "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-го моÑÑа "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-го $2его моÑÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-го $2ого моÑÑа "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-го $2а моÑÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-го $2а моÑÑа "],["^ [Ðм]оÑÑ "," моÑÑа "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1его Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1ого Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ (\\S+н)ий [Ðп]аÑк "," $1его паÑка "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1ого паÑка "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1ого $2его паÑка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1его $2ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1ого $2ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1ого $2ого паÑка "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-го $2его паÑка "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-го $2ого паÑка "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-го $2ого паÑка "],["^ [Ðп]аÑк "," паÑка "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого-$2ого пеÑеÑлка "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-го $2ого-$3ого пеÑеÑлка "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1его пеÑеÑлка "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого пеÑеÑлка "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1а пеÑеÑлка "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1а пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1ого $2его пеÑеÑлка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1его $2ого пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого $2ого пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ого $2а пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ого $2а пеÑеÑлка "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-го пеÑеÑлка "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-го $2его пеÑеÑлка "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-го $2ого пеÑеÑлка "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-го $2а пеÑеÑлка "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-го $2а пеÑеÑлка "],["^ [Ðп]еÑеÑлок "," пеÑеÑлка "],["^ [Ðп]одÑезд "," подÑезда "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1а-$2ого пÑоезда "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1его пÑоезда "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ого пÑоезда "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1а пÑоезда "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1а пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1ого $2его пÑоезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1его $2ого пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ого $2ого пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ого $2а пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ого $2а пÑоезда "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-го пÑоезда "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-го $2его пÑоезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2ого пÑоезда "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-го $2а пÑоезда "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-го $2а пÑоезда "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2его $3ого пÑоезда "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2ого $3ого пÑоезда "],["^ [Ðп]Ñоезд "," пÑоезда "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1его пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого пÑоÑпекÑа "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2его пÑоÑпекÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1его $2ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2ого пÑоÑпекÑа "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2его пÑоÑпекÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2ого пÑоÑпекÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2ого пÑоÑпекÑа "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑа "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1его пÑÑепÑовода "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ого пÑÑепÑовода "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ого $2его пÑÑепÑовода "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1его $2ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ого $2ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ого $2ого пÑÑепÑовода "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-го $2его пÑÑепÑовода "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-го $2ого пÑÑепÑовода "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-го $2ого пÑÑепÑовода "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑовода "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1его ÑпÑÑка "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ого ÑпÑÑка "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1а ÑпÑÑка "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1а ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1ого $2его ÑпÑÑка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1его $2ого ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ого $2ого ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ого $2а ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ого $2а ÑпÑÑка "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-го $2его ÑпÑÑка "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-го $2ого ÑпÑÑка "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-го $2а ÑпÑÑка "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-го $2а ÑпÑÑка "],["^ [СÑ]пÑÑк "," ÑпÑÑка "],["^ (\\S+н)ий [СÑ]Ñезд "," $1его ÑÑезда "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ого ÑÑезда "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1ого $2его ÑÑезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1его $2ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ого $2ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1ого $2ого ÑÑезда "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-го $2его ÑÑезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-го $2ого ÑÑезда "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-го $2ого ÑÑезда "],["^ [СÑ]Ñезд "," ÑÑезда "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1его $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ем ÑÑакÑа "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ого ÑÑакÑа "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1а ÑÑакÑа "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1а ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ого $2его ÑÑакÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1его $2ого ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ого $2ого ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ого $2а ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ого $2а ÑÑакÑа "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-го $2его ÑÑакÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-го $2ого ÑÑакÑа "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-го $2а ÑÑакÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-го $2а ÑÑакÑа "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑа "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1его ÑÑпика "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ого ÑÑпика "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1а ÑÑпика "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1а ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1ого $2его ÑÑпика "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1его $2ого ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ого $2ого ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ого $2а ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ого $2а ÑÑпика "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-го ÑÑпика "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-го $2его ÑÑпика "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-го $2ого ÑÑпика "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-го $2а ÑÑпика "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-го $2а ÑÑпика "],["^ [ТÑ]Ñпик "," ÑÑпика "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2колÑÑа "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2колÑÑа "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2го $3колÑÑа "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2го $3колÑÑа "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-го $2го $3колÑÑа "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-го $2го $3колÑÑа "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑа "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1го ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1го ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1го $2го ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1го $2го ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-го $2го ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-го $2го ÑоÑÑе "],[" ([ТÑ])ÑеÑого "," $1ÑеÑÑего "],["([жÑ])ого ","$1Ñего "]],prepositional:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллее "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллее "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллее "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑе "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑе "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑе "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑе "],["^ [УÑ]лиÑа "," ÑлиÑе "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линиÑÑ "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеке "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеке "],["^ [Ðп]ÑоÑека "," пÑоÑеке "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑакаде "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑакаде "],["^ [ÐÑ]ÑÑакада "," ÑÑÑакаде "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзке "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзке "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑе "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑе "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоге "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоге "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоге "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоге "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожке "],["^ [Ðд]оÑожка "," доÑожке "],["^ (\\S+)во [Ðп]оле "," $1вом поле "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑе "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾Ñде "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1ом пÑоÑоке "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ем бÑлÑваÑе "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом бÑлÑваÑе "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ем бÑлÑваÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ем $2ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ом бÑлÑваÑе "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ем бÑлÑваÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ом бÑлÑваÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ом бÑлÑваÑе "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑе "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑе "],["^ (\\S+н)ий [Ðз]аезд "," $1ем заезде "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1ом заезде "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1ом заезде "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1ом заезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1ом $2ем заезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1ем $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-м $2ем заезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-м $2ом заезде "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-м $2ом заезде "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-м $2ом заезде "],["^ [Ðз]аезд "," заезде "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1ем моÑÑÑ "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1ом $2ем моÑÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ем $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-м моÑÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-м $2ем моÑÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ [Ðм]оÑÑ "," моÑÑÑ "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1ем Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1ом Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ (\\S+н)ий [Ðп]аÑк "," $1ем паÑке "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1ом паÑке "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1ом $2ем паÑке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1ем $2ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1ом $2ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1ом $2ом паÑке "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-м $2ем паÑке "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-м $2ом паÑке "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-м $2ом паÑке "],["^ [Ðп]аÑк "," паÑке "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом-$2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-м $2ом-$3ом пеÑеÑлке "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1ем пеÑеÑлке "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1ом $2ем пеÑеÑлке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ем $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-м пеÑеÑлке "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-м $2ем пеÑеÑлке "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ [Ðп]еÑеÑлок "," пеÑеÑлке "],["^ [Ðп]одÑезд "," подÑезде "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом-$2ом пÑоезде "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1ем пÑоезде "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1ом $2ем пÑоезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ем $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-м пÑоезде "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-м $2ем пÑоезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ем $3ом пÑоезде "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ом $3ом пÑоезде "],["^ [Ðп]Ñоезд "," пÑоезде "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ем пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом пÑоÑпекÑе "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ем пÑоÑпекÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ем $2ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ом пÑоÑпекÑе "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ем пÑоÑпекÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ом пÑоÑпекÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ом пÑоÑпекÑе "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑе "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ем пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ом пÑÑепÑоводе "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ом $2ем пÑÑепÑоводе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ем $2ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ом $2ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ом $2ом пÑÑепÑоводе "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-м $2ем пÑÑепÑоводе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-м $2ом пÑÑепÑоводе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-м $2ом пÑÑепÑоводе "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑоводе "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1ем ÑпÑÑке "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1ом $2ем ÑпÑÑке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ем $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-м $2ем ÑпÑÑке "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ [СÑ]пÑÑк "," ÑпÑÑке "],["^ (\\S+н)ий [СÑ]Ñезд "," $1ем ÑÑезде "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ом ÑÑезде "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1ом $2ем ÑÑезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ем $2ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ом $2ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1ом $2ом ÑÑезде "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-м $2ем ÑÑезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-м $2ом ÑÑезде "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-м $2ом ÑÑезде "],["^ [СÑ]Ñезд "," ÑÑезде "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ем Ñоннеле "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом Ñоннеле "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ем Ñоннеле "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ем $2ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ом Ñоннеле "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ем Ñоннеле "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ом Ñоннеле "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ом Ñоннеле "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," Ñоннеле "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ем ÑÑакÑе "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ем ÑÑакÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ем $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ем ÑÑакÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑе "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1ем ÑÑпике "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1ом $2ем ÑÑпике "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ем $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-м ÑÑпике "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-м $2ем ÑÑпике "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ [ТÑ]Ñпик "," ÑÑпике "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2колÑÑе "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2колÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2м $3колÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2м $3колÑÑе "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-м $2м $3колÑÑе "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-м $2м $3колÑÑе "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑе "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1м ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1м ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1м $2м ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1м $2м ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-м $2м ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-м $2м ÑоÑÑе "],[" ([ТÑ])ÑеÑом "," $1ÑеÑÑем "],["([жÑ])ом ","$1Ñем "]]}}},{}],23:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"første",2:"anden",3:"tredje",4:"fjerde",5:"femte",6:"sjette",7:"syvende",8:"ottende",9:"niende",10:"tiende"},direction:{north:"Nord",northeast:"Nordøst",east:"Ãst",southeast:"Sydøst",south:"Syd",southwest:"Sydvest",west:"Vest",northwest:"Nordvest"},modifier:{left:"venstresving",right:"højresving","sharp left":"skarpt venstresving","sharp right":"skarpt højresving","slight left":"svagt venstresving","slight right":"svagt højresving",straight:"ligeud",uturn:"U-vending"},lanes:{xo:"Hold til højre",ox:"Hold til venstre",xox:"Benyt midterste spor",oxo:"Hold til højre eller venstre"}},modes:{ferry:{default:"Tag færgen",name:"Tag færgen {way_name}",destination:"Tag færgen i retning {destination}"}},phrase:{"two linked by distance":"{instruction_one} derefter, efter {distance}, {instruction_two}","two linked":"{instruction_one}, derefter {instruction_two}","one in distance":"Efter {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"afkørsel {exit}"},arrive:{default:{default:"Du er ankommet til din {nth} destination",upcoming:"Du vil ankomme til din {nth} destination",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}"},left:{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},right:{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"sharp left":{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},"sharp right":{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"slight right":{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"slight left":{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},straight:{default:"Du er ankommet til din {nth} destination, der befinder sig lige frem",upcoming:"Du vil ankomme til din {nth} destination foran dig",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, der befinder sig lige frem"}},continue:{default:{default:"Drej til {modifier}",name:"Drej til {modifier} videre ad {way_name}",destination:"Drej til {modifier} mod {destination}",exit:"Drej til {modifier} ad {way_name}"},straight:{default:"Fortsæt ligeud", 2168name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt mod {destination}",distance:"Fortsæt {distance} ligeud",namedistance:"Fortsæt {distance} ad {way_name}"},"sharp left":{default:"Drej skarpt til venstre",name:"Drej skarpt til venstre videre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre",name:"Drej skarpt til højre videre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},"slight left":{default:"Drej left til venstre",name:"Drej let til venstre videre ad {way_name}",destination:"Drej let til venstre mod {destination}"},"slight right":{default:"Drej let til højre",name:"Drej let til højre videre ad {way_name}",destination:"Drej let til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending tilbage ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},depart:{default:{default:"Kør mod {direction}",name:"Kør mod {direction} ad {way_name}",namedistance:"Fortsæt {distance} ad {way_name}mod {direction}"}},"end of road":{default:{default:"Drej til {modifier}",name:"Drej til {modifier} ad {way_name}",destination:"Drej til {modifier} mof {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt ligeud mod {destination}"},uturn:{default:"Foretag en U-vending for enden af vejen",name:"Foretag en U-vending ad {way_name} for enden af vejen",destination:"Foretag en U-vending mod {destination} for enden af vejen"}},fork:{default:{default:"Hold til {modifier} ved udfletningen",name:"Hold mod {modifier} pÃ¥ {way_name}",destination:"Hold mod {modifier} mod {destination}"},"slight left":{default:"Hold til venstre ved udfletningen",name:"Hold til venstre pÃ¥ {way_name}",destination:"Hold til venstre mod {destination}"},"slight right":{default:"Hold til højre ved udfletningen",name:"Hold til højre pÃ¥ {way_name}",destination:"Hold til højre mod {destination}"},"sharp left":{default:"Drej skarpt til venstre ved udfletningen",name:"Drej skarpt til venstre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre ved udfletningen",name:"Drej skarpt til højre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},merge:{default:{default:"Flet til {modifier}",name:"Flet til {modifier} ad {way_name}",destination:"Flet til {modifier} mod {destination}"},straight:{default:"Flet",name:"Flet ind pÃ¥ {way_name}",destination:"Flet ind mod {destination}"},"slight left":{default:"Flet til venstre",name:"Flet til venstre ad {way_name}",destination:"Flet til venstre mod {destination}"},"slight right":{default:"Flet til højre",name:"Flet til højre ad {way_name}",destination:"Flet til højre mod {destination}"},"sharp left":{default:"Flet til venstre",name:"Flet til venstre ad {way_name}",destination:"Flet til venstre mod {destination}"},"sharp right":{default:"Flet til højre",name:"Flet til højre ad {way_name}",destination:"Flet til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},"new name":{default:{default:"Fortsæt {modifier}",name:"Fortsæt {modifier} ad {way_name}",destination:"Fortsæt {modifier} mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ad {way_name}",destination:"Fortsæt mod {destination}"},"sharp left":{default:"Drej skarpt til venstre",name:"Drej skarpt til venstre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre",name:"Drej skarpt til højre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},"slight left":{default:"Fortsæt til venstre",name:"Fortsæt til venstre ad {way_name}",destination:"Fortsæt til venstre mod {destination}"},"slight right":{default:"Fortsæt til højre",name:"Fortsæt til højre ad {way_name}",destination:"Fortsæt til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},notification:{default:{default:"Fortsæt {modifier}",name:"Fortsæt {modifier} ad {way_name}",destination:"Fortsæt {modifier} mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},"off ramp":{default:{default:"Tag afkørslen",name:"Tag afkørslen ad {way_name}",destination:"Tag afkørslen mod {destination}",exit:"Vælg afkørsel {exit}",exit_destination:"Vælg afkørsel {exit} mod {destination}"},left:{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},right:{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"},"sharp left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},"sharp right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"},"slight left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},"slight right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"}},"on ramp":{default:{default:"Tag afkørslen",name:"Tag afkørslen ad {way_name}",destination:"Tag afkørslen mod {destination}"},left:{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},right:{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"},"sharp left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},"sharp right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"},"slight left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},"slight right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"}},rotary:{default:{default:{default:"Kør ind i rundkørslen",name:"Tag rundkørslen og kør fra ad {way_name}",destination:"Tag rundkørslen og kør mod {destination}"},name:{default:"Kør ind i {rotary_name}",name:"Kør ind i {rotary_name} og kør ad {way_name} ",destination:"Kør ind i {rotary_name} og kør mod {destination}"},exit:{default:"Tag rundkørslen og forlad ved {exit_number} afkørsel",name:"Tag rundkørslen og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Tag rundkørslen og forlad ved {exit_number} afkørsel mod {destination}"},name_exit:{default:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel",name:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel mod {destination}"}}},roundabout:{default:{exit:{default:"Tag rundkørslen og forlad ved {exit_number} afkørsel",name:"Tag rundkørslen og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Tag rundkørslen og forlad ved {exit_number} afkørsel mod {destination}"},default:{default:"Kør ind i rundkørslen",name:"Tag rundkørslen og kør fra ad {way_name}",destination:"Tag rundkørslen og kør mod {destination}"}}},"roundabout turn":{default:{default:"Foretag et {modifier}",name:"Foretag et {modifier} ad {way_name}",destination:"Foretag et {modifier} mod {destination}"},left:{default:"Drej til venstre",name:"Drej til venstre ad {way_name}",destination:"Drej til venstre mod {destination}"},right:{default:"Drej til højre",name:"Drej til højre ad {way_name}",destination:"Drej til højre mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt ligeud mod {destination}"}},"exit roundabout":{default:{default:"Forlad rundkørslen",name:"Forlad rundkørslen ad {way_name}",destination:"Forlad rundkørslen mod {destination}"}},"exit rotary":{default:{default:"Forlad rundkørslen",name:"Forlad rundkørslen ad {way_name}",destination:"Forlad rundkørslen mod {destination}"}},turn:{default:{default:"Foretag et {modifier}",name:"Foretag et {modifier} ad {way_name}",destination:"Foretag et {modifier} mod {destination}"},left:{default:"Drej til venstre",name:"Drej til venstre ad {way_name}",destination:"Drej til venstre mod {destination}"},right:{default:"Drej til højre",name:"Drej til højre ad {way_name}",destination:"Drej til højre mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Kør ligeud ad {way_name}",destination:"Kør ligeud mod {destination}"}},"use lane":{no_lanes:{default:"Fortsæt ligeud"},default:{default:"{lane_instruction}"}}}}},{}],24:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"erste",2:"zweite",3:"dritte",4:"vierte",5:"fünfte",6:"sechste",7:"siebente",8:"achte",9:"neunte",10:"zehnte"},direction:{north:"Norden",northeast:"Nordosten",east:"Osten",southeast:"Südosten",south:"Süden",southwest:"Südwesten",west:"Westen",northwest:"Nordwesten"},modifier:{left:"links",right:"rechts","sharp left":"scharf links","sharp right":"scharf rechts","slight left":"leicht links","slight right":"leicht rechts",straight:"geradeaus",uturn:"180°-Wendung"},lanes:{xo:"Rechts halten",ox:"Links halten",xox:"Mittlere Spur nutzen",oxo:"Rechts oder links halten"}},modes:{ferry:{default:"Fähre nehmen",name:"Fähre nehmen {way_name}",destination:"Fähre nehmen Richtung {destination}"}},phrase:{"two linked by distance":"{instruction_one} danach in {distance} {instruction_two}","two linked":"{instruction_one} danach {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Sie haben Ihr {nth} Ziel erreicht",upcoming:"Sie haben Ihr {nth} Ziel erreicht",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}"},left:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},right:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"sharp left":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},"sharp right":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"slight right":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"slight left":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},straight:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich geradeaus",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich geradeaus",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich geradeaus"}},continue:{default:{default:"{modifier} abbiegen",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}",exit:"{modifier} abbiegen auf {way_name}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Weiterfahren in Richtung {destination}",distance:"Geradeaus weiterfahren für {distance}",namedistance:"Geradeaus weiterfahren auf {way_name} für {distance}"},"sharp left":{default:"Scharf links",name:"Scharf links weiterfahren auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts",name:"Scharf rechts weiterfahren auf {way_name}",destination:"Scharf rechts Richtung {destination}"},"slight left":{default:"Leicht links",name:"Leicht links weiter auf {way_name}",destination:"Leicht links weiter Richtung {destination}"},"slight right":{default:"Leicht rechts weiter",name:"Leicht rechts weiter auf {way_name}",destination:"Leicht rechts weiter Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},depart:{default:{default:"Fahren Sie Richtung {direction}",name:"Fahren Sie Richtung {direction} auf {way_name}",namedistance:"Fahren Sie Richtung {direction} auf {way_name} für {distance}"}},"end of road":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"},uturn:{default:"180°-Wendung am Ende der StraÃe",name:"180°-Wendung auf {way_name} am Ende der StraÃe",destination:"180°-Wendung Richtung {destination} am Ende der StraÃe"}},fork:{default:{default:"{modifier} halten an der Gabelung",name:"{modifier} halten an der Gabelung auf {way_name}",destination:"{modifier} halten an der Gabelung Richtung {destination}"},"slight left":{default:"Links halten an der Gabelung",name:"Links halten an der Gabelung auf {way_name}",destination:"Links halten an der Gabelung Richtung {destination}"},"slight right":{default:"Rechts halten an der Gabelung",name:"Rechts halten an der Gabelung auf {way_name}",destination:"Rechts halten an der Gabelung Richtung {destination}"},"sharp left":{default:"Scharf links abbiegen an der Gabelung",name:"Scharf links auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts abbiegen an der Gabelung",name:"Scharf rechts auf {way_name}",destination:"Scharf rechts Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},merge:{default:{default:"{modifier} auffahren",name:"{modifier} auffahren auf {way_name}",destination:"{modifier} auffahren Richtung {destination}"},straight:{default:"geradeaus auffahren",name:"geradeaus auffahren auf {way_name}",destination:"geradeaus auffahren Richtung {destination}"},"slight left":{default:"Leicht links auffahren",name:"Leicht links auffahren auf {way_name}",destination:"Leicht links auffahren Richtung {destination}"},"slight right":{default:"Leicht rechts auffahren",name:"Leicht rechts auffahren auf {way_name}",destination:"Leicht rechts auffahren Richtung {destination}"},"sharp left":{default:"Scharf links auffahren",name:"Scharf links auffahren auf {way_name}",destination:"Scharf links auffahren Richtung {destination}"},"sharp right":{default:"Scharf rechts auffahren",name:"Scharf rechts auffahren auf {way_name}",destination:"Scharf rechts auffahren Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},"new name":{default:{default:"{modifier} weiterfahren",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} weiterfahren Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Weiterfahren auf {way_name}",destination:"Weiterfahren in Richtung {destination}"},"sharp left":{default:"Scharf links",name:"Scharf links auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts",name:"Scharf rechts auf {way_name}",destination:"Scharf rechts Richtung {destination}"},"slight left":{default:"Leicht links weiter",name:"Leicht links weiter auf {way_name}",destination:"Leicht links weiter Richtung {destination}"},"slight right":{default:"Leicht rechts weiter",name:"Leicht rechts weiter auf {way_name}",destination:"Leicht rechts weiter Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},notification:{default:{default:"{modifier} weiterfahren",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} weiterfahren Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},"off ramp":{default:{default:"Ausfahrt nehmen",name:"Ausfahrt nehmen auf {way_name}",destination:"Ausfahrt nehmen Richtung {destination}",exit:"Ausfahrt {exit} nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},left:{default:"Ausfahrt links nehmen",name:"Ausfahrt links nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} links nehmen",exit_destination:"Ausfahrt {exit} links nehmen Richtung {destination}"},right:{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen Richtung {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},"sharp left":{default:"Ausfahrt links nehmen",name:"Ausfahrt links Seite nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} links nehmen",exit_destination:"Ausfahrt{exit} links nehmen Richtung {destination}"},"sharp right":{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen auf {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},"slight left":{default:"Ausfahrt links nehmen",name:"Ausfahrt links nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} nehmen",exit_destination:"Ausfahrt {exit} links nehmen Richtung {destination}"},"slight right":{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen auf {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"}},"on ramp":{default:{default:"Auffahrt nehmen",name:"Auffahrt nehmen auf {way_name}",destination:"Auffahrt nehmen Richtung {destination}"},left:{default:"Auffahrt links nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},right:{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"},"sharp left":{default:"Auffahrt links nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},"sharp right":{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"},"slight left":{default:"Auffahrt links Seite nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},"slight right":{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"}},rotary:{default:{default:{default:"In den Kreisverkehr fahren",name:"Im Kreisverkehr die Ausfahrt auf {way_name} nehmen",destination:"Im Kreisverkehr die Ausfahrt Richtung {destination} nehmen"},name:{default:"In {rotary_name} fahren",name:"In {rotary_name} die Ausfahrt auf {way_name} nehmen",destination:"In {rotary_name} die Ausfahrt Richtung {destination} nehmen"},exit:{default:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen",name:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen auf {way_name}",destination:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen Richtung {destination}"},name_exit:{default:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen",name:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen auf {way_name}",destination:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen Richtung {destination}"}}},roundabout:{default:{exit:{default:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen",name:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen auf {way_name}",destination:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen Richtung {destination}"},default:{default:"In den Kreisverkehr fahren",name:"Im Kreisverkehr die Ausfahrt auf {way_name} nehmen",destination:"Im Kreisverkehr die Ausfahrt Richtung {destination} nehmen"}}},"roundabout turn":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"exit roundabout":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"exit rotary":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},turn:{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"use lane":{no_lanes:{default:"Geradeaus weiterfahren"},default:{default:"{lane_instruction}"}}}}},{}],25:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1st",2:"2nd",3:"3rd",4:"4th",5:"5th",6:"6th",7:"7th",8:"8th",9:"9th",10:"10th"},direction:{north:"north",northeast:"northeast",east:"east",southeast:"southeast",south:"south",southwest:"southwest",west:"west",northwest:"northwest"},modifier:{left:"left",right:"right","sharp left":"sharp left","sharp right":"sharp right","slight left":"slight left","slight right":"slight right",straight:"straight",uturn:"U-turn"},lanes:{xo:"Keep right",ox:"Keep left",xox:"Keep in the middle",oxo:"Keep left or right"}},modes:{ferry:{default:"Take the ferry",name:"Take the ferry {way_name}",destination:"Take the ferry towards {destination}"}},phrase:{"two linked by distance":"{instruction_one}, then, in {distance}, {instruction_two}","two linked":"{instruction_one}, then {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"You have arrived at your {nth} destination",upcoming:"You will arrive at your {nth} destination",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}"},left:{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},right:{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"sharp left":{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},"sharp right":{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"slight right":{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"slight left":{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},straight:{default:"You have arrived at your {nth} destination, straight ahead",upcoming:"You will arrive at your {nth} destination, straight ahead",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, straight ahead"}},continue:{default:{default:"Turn {modifier}",name:"Turn {modifier} to stay on {way_name}",destination:"Turn {modifier} towards {destination}",exit:"Turn {modifier} onto {way_name}"},straight:{default:"Continue straight",name:"Continue straight to stay on {way_name}",destination:"Continue towards {destination}",distance:"Continue straight for {distance}",namedistance:"Continue on {way_name} for {distance}"},"sharp left":{default:"Make a sharp left",name:"Make a sharp left to stay on {way_name}",destination:"Make a sharp left towards {destination}"},"sharp right":{default:"Make a sharp right",name:"Make a sharp right to stay on {way_name}",destination:"Make a sharp right towards {destination}"},"slight left":{default:"Make a slight left",name:"Make a slight left to stay on {way_name}",destination:"Make a slight left towards {destination}"},"slight right":{default:"Make a slight right",name:"Make a slight right to stay on {way_name}",destination:"Make a slight right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn and continue on {way_name}",destination:"Make a U-turn towards {destination}"}},depart:{default:{default:"Head {direction}",name:"Head {direction} on {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Turn {modifier}",name:"Turn {modifier} onto {way_name}",destination:"Turn {modifier} towards {destination}"},straight:{default:"Continue straight",name:"Continue straight onto {way_name}",destination:"Continue straight towards {destination}"},uturn:{default:"Make a U-turn at the end of the road",name:"Make a U-turn onto {way_name} at the end of the road",destination:"Make a U-turn towards {destination} at the end of the road"}},fork:{default:{default:"Keep {modifier} at the fork",name:"Keep {modifier} onto {way_name}",destination:"Keep {modifier} towards {destination}"},"slight left":{default:"Keep left at the fork",name:"Keep left onto {way_name}",destination:"Keep left towards {destination}"},"slight right":{default:"Keep right at the fork",name:"Keep right onto {way_name}",destination:"Keep right towards {destination}"},"sharp left":{default:"Take a sharp left at the fork",name:"Take a sharp left onto {way_name}",destination:"Take a sharp left towards {destination}"},"sharp right":{default:"Take a sharp right at the fork",name:"Take a sharp right onto {way_name}",destination:"Take a sharp right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},merge:{default:{default:"Merge {modifier}",name:"Merge {modifier} onto {way_name}",destination:"Merge {modifier} towards {destination}"},straight:{default:"Merge",name:"Merge onto {way_name}",destination:"Merge towards {destination}"},"slight left":{default:"Merge left",name:"Merge left onto {way_name}",destination:"Merge left towards {destination}"},"slight right":{default:"Merge right",name:"Merge right onto {way_name}",destination:"Merge right towards {destination}"},"sharp left":{default:"Merge left",name:"Merge left onto {way_name}",destination:"Merge left towards {destination}"},"sharp right":{default:"Merge right",name:"Merge right onto {way_name}",destination:"Merge right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} onto {way_name}",destination:"Continue {modifier} towards {destination}"},straight:{default:"Continue straight",name:"Continue onto {way_name}",destination:"Continue towards {destination}"},"sharp left":{default:"Take a sharp left",name:"Take a sharp left onto {way_name}",destination:"Take a sharp left towards {destination}"},"sharp right":{default:"Take a sharp right",name:"Take a sharp right onto {way_name}",destination:"Take a sharp right towards {destination}"},"slight left":{default:"Continue slightly left",name:"Continue slightly left onto {way_name}", 2169destination:"Continue slightly left towards {destination}"},"slight right":{default:"Continue slightly right",name:"Continue slightly right onto {way_name}",destination:"Continue slightly right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} onto {way_name}",destination:"Continue {modifier} towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},"off ramp":{default:{default:"Take the ramp",name:"Take the ramp onto {way_name}",destination:"Take the ramp towards {destination}",exit:"Take exit {exit}",exit_destination:"Take exit {exit} towards {destination}"},left:{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},right:{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"sharp left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"sharp right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"slight left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"slight right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"}},"on ramp":{default:{default:"Take the ramp",name:"Take the ramp onto {way_name}",destination:"Take the ramp towards {destination}"},left:{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},right:{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"},"sharp left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},"sharp right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"},"slight left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},"slight right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"}},rotary:{default:{default:{default:"Enter the traffic circle",name:"Enter the traffic circle and exit onto {way_name}",destination:"Enter the traffic circle and exit towards {destination}"},name:{default:"Enter {rotary_name}",name:"Enter {rotary_name} and exit onto {way_name}",destination:"Enter {rotary_name} and exit towards {destination}"},exit:{default:"Enter the traffic circle and take the {exit_number} exit",name:"Enter the traffic circle and take the {exit_number} exit onto {way_name}",destination:"Enter the traffic circle and take the {exit_number} exit towards {destination}"},name_exit:{default:"Enter {rotary_name} and take the {exit_number} exit",name:"Enter {rotary_name} and take the {exit_number} exit onto {way_name}",destination:"Enter {rotary_name} and take the {exit_number} exit towards {destination}"}}},roundabout:{default:{exit:{default:"Enter the traffic circle and take the {exit_number} exit",name:"Enter the traffic circle and take the {exit_number} exit onto {way_name}",destination:"Enter the traffic circle and take the {exit_number} exit towards {destination}"},default:{default:"Enter the traffic circle",name:"Enter the traffic circle and exit onto {way_name}",destination:"Enter the traffic circle and exit towards {destination}"}}},"roundabout turn":{default:{default:"Make a {modifier}",name:"Make a {modifier} onto {way_name}",destination:"Make a {modifier} towards {destination}"},left:{default:"Turn left",name:"Turn left onto {way_name}",destination:"Turn left towards {destination}"},right:{default:"Turn right",name:"Turn right onto {way_name}",destination:"Turn right towards {destination}"},straight:{default:"Continue straight",name:"Continue straight onto {way_name}",destination:"Continue straight towards {destination}"}},"exit roundabout":{default:{default:"Exit the traffic circle",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},"exit rotary":{default:{default:"Exit the traffic circle",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},turn:{default:{default:"Make a {modifier}",name:"Make a {modifier} onto {way_name}",destination:"Make a {modifier} towards {destination}"},left:{default:"Turn left",name:"Turn left onto {way_name}",destination:"Turn left towards {destination}"},right:{default:"Turn right",name:"Turn right onto {way_name}",destination:"Turn right towards {destination}"},straight:{default:"Go straight",name:"Go straight onto {way_name}",destination:"Go straight towards {destination}"}},"use lane":{no_lanes:{default:"Continue straight"},default:{default:"{lane_instruction}"}}}}},{}],26:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"norden",northeast:"nord-orienten",east:"orienten",southeast:"sud-orienten",south:"suden",southwest:"sud-okcidenten",west:"okcidenten",northwest:"nord-okcidenten"},modifier:{left:"maldekstren",right:"dekstren","sharp left":"maldekstregen","sharp right":"dekstregen","slight left":"maldekstreten","slight right":"dekstreten",straight:"rekten",uturn:"turniÄu malantaÅen"},lanes:{xo:"Veturu dekstre",ox:"Veturu maldekstre",xox:"Veturu meze",oxo:"Veturu dekstre aÅ maldekstre"}},modes:{ferry:{default:"EnpramiÄu",name:"EnpramiÄu {way_name}",destination:"EnpramiÄu direkte al {destination}"}},phrase:{"two linked by distance":"{instruction_one} kaj post {distance} {instruction_two}","two linked":"{instruction_one} kaj sekve {instruction_two}","one in distance":"Post {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"elveturejo {exit}"},arrive:{default:{default:"Vi atingis vian {nth} celon",upcoming:"Vi atingos vian {nth} celon",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}"},left:{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},right:{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"sharp left":{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},"sharp right":{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"slight right":{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"slight left":{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},straight:{default:"Vi atingis vian {nth} celon",upcoming:"Vi atingos vian {nth} celon rekte",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name} antaÅe"}},continue:{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}",exit:"Veturu {modifier} direkte al {way_name}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}",distance:"Veturu rekten dum {distance}",namedistance:"Veturu rekten al {way_name} dum {distance}"},"sharp left":{default:"TurniÄu ege maldekstren",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"TurniÄu ege dekstren",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},"slight left":{default:"TurniÄu ete maldekstren",name:"TurniÄu ete maldekstren al {way_name}",destination:"TurniÄu ete maldekstren direkte al {destination}"},"slight right":{default:"TurniÄu ete dekstren",name:"TurniÄu ete dekstren al {way_name}",destination:"TurniÄu ete dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},depart:{default:{default:"DirektiÄu {direction}",name:"DirektiÄu {direction} al {way_name}",namedistance:"DirektiÄu {direction} al {way_name} tra {distance}"}},"end of road":{default:{default:"Veturu {modifier}",name:"Veturu {modifier} direkte al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen Äe fino de la vojo",name:"TurniÄu malantaÅen al {way_name} Äe fino de la vojo",destination:"TurniÄu malantaÅen direkte al {destination} Äe fino de la vojo"}},fork:{default:{default:"DaÅru {modifier} Äe la vojforko",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},"slight left":{default:"Maldekstren Äe la vojforko",name:"Pluu maldekstren al {way_name}",destination:"Pluu maldekstren direkte al {destination}"},"slight right":{default:"Dekstren Äe la vojforko",name:"Pluu dekstren al {way_name}",destination:"Pluu dekstren direkte al {destination}"},"sharp left":{default:"Ege maldekstren Äe la vojforko",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"Ege dekstren Äe la vojforko",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},merge:{default:{default:"Enveturu {modifier}",name:"Enveturu {modifier} al {way_name}",destination:"Enveturu {modifier} direkte al {destination}"},straight:{default:"Enveturu",name:"Enveturu al {way_name}",destination:"Enveturu direkte al {destination}"},"slight left":{default:"Enveturu de maldekstre",name:"Enveturu de maldekstre al {way_name}",destination:"Enveturu de maldekstre direkte al {destination}"},"slight right":{default:"Enveturu de dekstre",name:"Enveturu de dekstre al {way_name}",destination:"Enveturu de dekstre direkte al {destination}"},"sharp left":{default:"Enveturu de maldekstre",name:"Enveture de maldekstre al {way_name}",destination:"Enveturu de maldekstre direkte al {destination}"},"sharp right":{default:"Enveturu de dekstre",name:"Enveturu de dekstre al {way_name}",destination:"Enveturu de dekstre direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},"new name":{default:{default:"Pluu {modifier}",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"},"sharp left":{default:"TurniÄu ege maldekstren",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"TurniÄu ege dekstren",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},"slight left":{default:"Pluu ete maldekstren",name:"Pluu ete maldekstren al {way_name}",destination:"Pluu ete maldekstren direkte al {destination}"},"slight right":{default:"Pluu ete dekstren",name:"Pluu ete dekstren al {way_name}",destination:"Pluu ete dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},notification:{default:{default:"Pluu {modifier}",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},"off ramp":{default:{default:"DirektiÄu al enveturejo",name:"DirektiÄu al enveturejo al {way_name}",destination:"DirektiÄu al enveturejo direkte al {destination}",exit:"DirektiÄu al elveturejo {exit}",exit_destination:"DirektiÄu al elveturejo {exit} direkte al {destination}"},left:{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al elveturejo {exit} Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},right:{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe ldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"},"sharp left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},"sharp right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al elveturejo {exit} Äe dekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"},"slight left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},"slight right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe ldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"}},"on ramp":{default:{default:"DirektiÄu al enveturejo",name:"DirektiÄu al enveturejo al {way_name}",destination:"DirektiÄu al enveturejo direkte al {destination}"},left:{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},right:{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"},"sharp left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},"sharp right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"},"slight left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},"slight right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"}},rotary:{default:{default:{default:"Enveturu trafikcirklegon",name:"Enveturu trafikcirklegon kaj elveturu al {way_name}",destination:"Enveturu trafikcirklegon kaj elveturu direkte al {destination}"},name:{default:"Enveturu {rotary_name}",name:"Enveturu {rotary_name} kaj elveturu al {way_name}",destination:"Enveturu {rotary_name} kaj elveturu direkte al {destination}"},exit:{default:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo",name:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo direkte al {destination}"},name_exit:{default:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo",name:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo direkte al {destination}"}}},roundabout:{default:{exit:{default:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo",name:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo direkte al {destination}"},default:{default:"Enveturu trafikcirklegon",name:"Enveturu trafikcirklegon kaj elveturu al {way_name}",destination:"Enveturu trafikcirklegon kaj elveturu direkte al {destination}"}}},"roundabout turn":{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},left:{default:"TurniÄu maldekstren",name:"TurniÄu maldekstren al {way_name}",destination:"TurniÄu maldekstren direkte al {destination}"},right:{default:"TurniÄu dekstren",name:"TurniÄu dekstren al {way_name}",destination:"TurniÄu dekstren direkte al {destination}"},straight:{default:"Pluu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"}},"exit roundabout":{default:{default:"Elveturu trafikcirklegon",name:"Elveturu trafikcirklegon al {way_name}",destination:"Elveturu trafikcirklegon direkte al {destination}"}},"exit rotary":{default:{default:"Eliru trafikcirklegon",name:"Elveturu trafikcirklegon al {way_name}",destination:"Elveturu trafikcirklegon direkte al {destination}"}},turn:{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},left:{default:"TurniÄu maldekstren",name:"TurniÄu maldekstren al {way_name}",destination:"TurniÄu maldekstren direkte al {destination}"},right:{default:"TurniÄu dekstren",name:"TurniÄu dekstren al {way_name}",destination:"TurniÄu dekstren direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"}},"use lane":{no_lanes:{default:"Pluu rekten"},default:{default:"{lane_instruction}"}}}}},{}],27:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"norte",northeast:"noreste",east:"este",southeast:"sureste",south:"sur",southwest:"suroeste",west:"oeste",northwest:"noroeste"},modifier:{left:"a la izquierda",right:"a la derecha","sharp left":"cerrada a la izquierda","sharp right":"cerrada a la derecha","slight left":"ligeramente a la izquierda","slight right":"ligeramente a la derecha",straight:"recto",uturn:"cambio de sentido"},lanes:{xo:"Mantente a la derecha",ox:"Mantente a la izquierda",xox:"Mantente en el medio",oxo:"Mantente a la izquierda o a la derecha"}},modes:{ferry:{default:"Coge el ferry",name:"Coge el ferry {way_name}",destination:"Coge el ferry hacia {destination}"}},phrase:{"two linked by distance":"{instruction_one} y luego en {distance}, {instruction_two}","two linked":"{instruction_one} y luego {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"salida {exit}"},arrive:{default:{default:"Has llegado a tu {nth} destino",upcoming:"Vas a llegar a tu {nth} destino",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}"},left:{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},right:{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"sharp left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},"sharp right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},straight:{default:"Has llegado a tu {nth} destino, en frente",upcoming:"Vas a llegar a tu {nth} destino, en frente",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, en frente"}},continue:{default:{default:"Gire {modifier}",name:"Cruce {modifier} en {way_name}",destination:"Gire {modifier} hacia {destination}",exit:"Gire {modifier} en {way_name}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}",distance:"Continúa recto por {distance}",namedistance:"Continúa recto en {way_name} por {distance}"},"sharp left":{default:"Gire a la izquierda",name:"Gire a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},"sharp right":{default:"Gire a la derecha",name:"Gire a la derecha en {way_name}",destination:"Gire a la derecha hacia {destination}"},"slight left":{default:"Gire a la izquierda",name:"Doble levemente a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},"slight right":{default:"Gire a la izquierda",name:"Doble levemente a la derecha en {way_name}",destination:"Gire a la izquierda hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido y continúa en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},depart:{default:{default:"DirÃgete al {direction}",name:"DirÃgete al {direction} por {way_name}",namedistance:"DirÃgete al {direction} en {way_name} por {distance}"}},"end of road":{default:{default:"Al final de la calle gira {modifier}",name:"Al final de la calle gira {modifier} por {way_name}",destination:"Al final de la calle gira {modifier} hacia {destination}"},straight:{default:"Al final de la calle continúa recto",name:"Al final de la calle continúa recto por {way_name}",destination:"Al final de la calle continúa recto hacia {destination}"},uturn:{default:"Al final de la calle haz un cambio de sentido",name:"Al final de la calle haz un cambio de sentido en {way_name}",destination:"Al final de la calle haz un cambio de sentido hacia {destination}"}},fork:{default:{default:"Mantente {modifier} en el cruce",name:"Mantente {modifier} por {way_name}",destination:"Mantente {modifier} hacia {destination}"},"slight left":{default:"Mantente a la izquierda en el cruce",name:"Mantente a la izquierda por {way_name}",destination:"Mantente a la izquierda hacia {destination}"},"slight right":{default:"Mantente a la derecha en el cruce",name:"Mantente a la derecha por {way_name}",destination:"Mantente a la derecha hacia {destination}"},"sharp left":{default:"Gira la izquierda en el cruce",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha en el cruce",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},merge:{default:{default:"Incorpórate {modifier}",name:"Incorpórate {modifier} por {way_name}",destination:"Incorpórate {modifier} hacia {destination}"},straight:{default:"Incorpórate",name:"Incorpórate por {way_name}",destination:"Incorpórate hacia {destination}"},"slight left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda por {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"slight right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha por {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},"sharp left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda por {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"sharp right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha por {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"new name":{default:{default:"Continúa {modifier}",name:"Continúa {modifier} por {way_name}",destination:"Continúa {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa por {way_name}",destination:"Continúa hacia {destination}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Continúa ligeramente por la izquierda",name:"Continúa ligeramente por la izquierda por {way_name}",destination:"Continúa ligeramente por la izquierda hacia {destination}"},"slight right":{default:"Continúa ligeramente por la derecha",name:"Continúa ligeramente por la derecha por {way_name}",destination:"Continúa ligeramente por la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},notification:{default:{default:"Continúa {modifier}",name:"Continúa {modifier} por {way_name}",destination:"Continúa {modifier} hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"off ramp":{default:{default:"Coge la cuesta abajo",name:"Coge la cuesta abajo por {way_name}",destination:"Coge la cuesta abajo hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},left:{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},right:{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},"sharp left":{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},"sharp right":{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},"slight left":{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},"slight right":{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"}},"on ramp":{default:{default:"Coge la cuesta",name:"Coge la cuesta por {way_name}",destination:"Coge la cuesta hacia {destination}"},left:{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},right:{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"},"sharp left":{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},"sharp right":{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"},"slight left":{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},"slight right":{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"}},rotary:{default:{default:{default:"Incorpórate en la rotonda",name:"En la rotonda sal por {way_name}",destination:"En la rotonda sal hacia {destination}"},name:{default:"En {rotary_name}",name:"En {rotary_name} sal por {way_name}",destination:"En {rotary_name} sal hacia {destination}"},exit:{default:"En la rotonda toma la {exit_number} salida", 2170name:"En la rotonda toma la {exit_number} salida por {way_name}",destination:"En la rotonda toma la {exit_number} salida hacia {destination}"},name_exit:{default:"En {rotary_name} toma la {exit_number} salida",name:"En {rotary_name} toma la {exit_number} salida por {way_name}",destination:"En {rotary_name} toma la {exit_number} salida hacia {destination}"}}},roundabout:{default:{exit:{default:"En la rotonda toma la {exit_number} salida",name:"En la rotonda toma la {exit_number} salida por {way_name}",destination:"En la rotonda toma la {exit_number} salida hacia {destination}"},default:{default:"Incorpórate en la rotonda",name:"Incorpórate en la rotonda y sal en {way_name}",destination:"Incorpórate en la rotonda y sal hacia {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} en {way_name}",destination:"Siga {modifier} hacia {destination}"},left:{default:"Gire a la izquierda",name:"Gire a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},right:{default:"Gire a la derecha",name:"Gire a la derecha en {way_name}",destination:"Gire a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto por {way_name}",destination:"Continúa recto hacia {destination}"}},"exit roundabout":{default:{default:"Sal la rotonda",name:"Toma la salida por {way_name}",destination:"Toma la salida hacia {destination}"}},"exit rotary":{default:{default:"Sal la rotonda",name:"Toma la salida por {way_name}",destination:"Toma la salida hacia {destination}"}},turn:{default:{default:"Gira {modifier}",name:"Gira {modifier} por {way_name}",destination:"Gira {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto por {way_name}",destination:"Continúa recto hacia {destination}"}},"use lane":{no_lanes:{default:"Continúa recto"},default:{default:"{lane_instruction}"}}}}},{}],28:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"norte",northeast:"noreste",east:"este",southeast:"sureste",south:"sur",southwest:"suroeste",west:"oeste",northwest:"noroeste"},modifier:{left:"izquierda",right:"derecha","sharp left":"cerrada a la izquierda","sharp right":"cerrada a la derecha","slight left":"levemente a la izquierda","slight right":"levemente a la derecha",straight:"recto",uturn:"cambio de sentido"},lanes:{xo:"Mantente a la derecha",ox:"Mantente a la izquierda",xox:"Mantente en el medio",oxo:"Mantente a la izquierda o derecha"}},modes:{ferry:{default:"Coge el ferry",name:"Coge el ferry {way_name}",destination:"Coge el ferry a {destination}"}},phrase:{"two linked by distance":"{instruction_one} y luego a {distance}, {instruction_two}","two linked":"{instruction_one} y luego {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"salida {exit}"},arrive:{default:{default:"Has llegado a tu {nth} destino",upcoming:"Vas a llegar a tu {nth} destino",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}"},left:{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},right:{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"sharp left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},"sharp right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},straight:{default:"Has llegado a tu {nth} destino, en frente",upcoming:"Vas a llegar a tu {nth} destino, en frente",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, en frente"}},continue:{default:{default:"Gira a {modifier}",name:"Cruza a la{modifier} en {way_name}",destination:"Gira a {modifier} hacia {destination}",exit:"Gira a {modifier} en {way_name}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}",distance:"Continúa recto por {distance}",namedistance:"Continúa recto en {way_name} por {distance}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Gira a la izquierda",name:"Dobla levemente a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"slight right":{default:"Gira a la izquierda",name:"Dobla levemente a la derecha en {way_name}",destination:"Gira a la izquierda hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido y continúa en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},depart:{default:{default:"Ve a {direction}",name:"Ve a {direction} en {way_name}",namedistance:"Ve a {direction} en {way_name} por {distance}"}},"end of road":{default:{default:"Gira a {modifier}",name:"Gira a {modifier} en {way_name}",destination:"Gira a {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto en {way_name}",destination:"Continúa recto hacia {destination}"},uturn:{default:"Haz un cambio de sentido al final de la via",name:"Haz un cambio de sentido en {way_name} al final de la via",destination:"Haz un cambio de sentido hacia {destination} al final de la via"}},fork:{default:{default:"Mantente {modifier} en el cruza",name:"Mantente {modifier} en {way_name}",destination:"Mantente {modifier} hacia {destination}"},"slight left":{default:"Mantente a la izquierda en el cruza",name:"Mantente a la izquierda en {way_name}",destination:"Mantente a la izquierda hacia {destination}"},"slight right":{default:"Mantente a la derecha en el cruza",name:"Mantente a la derecha en {way_name}",destination:"Mantente a la derecha hacia {destination}"},"sharp left":{default:"Gira a la izquierda en el cruza",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha en el cruza",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},merge:{default:{default:"Incorpórate a {modifier}",name:"Incorpórate a {modifier} en {way_name}",destination:"Incorpórate a {modifier} hacia {destination}"},straight:{default:"Incorpórate",name:"Incorpórate a {way_name}",destination:"Incorpórate hacia {destination}"},"slight left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda en {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"slight right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha en {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},"sharp left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda en {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"sharp right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha en {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"new name":{default:{default:"Continúa {modifier}",name:"Continúa {modifier} en {way_name}",destination:"Continúa {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Continúa levemente a la izquierda",name:"Continúa levemente a la izquierda en {way_name}",destination:"Continúa levemente a la izquierda hacia {destination}"},"slight right":{default:"Continúa levemente a la derecha",name:"Continúa levemente a la derecha en {way_name}",destination:"Continúa levemente a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},notification:{default:{default:"Continúa {modifier}",name:"Continúa {modifier} en {way_name}",destination:"Continúa {modifier} hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"off ramp":{default:{default:"Toma la salida",name:"Toma la salida en {way_name}",destination:"Toma la salida hacia {destination}",exit:"Toma la salida {exit}",exit_destination:"Toma la salida {exit} hacia {destination}"},left:{default:"Toma la salida en la izquierda",name:"Toma la salida en la izquierda en {way_name}",destination:"Toma la salida en la izquierda en {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},right:{default:"Toma la salida en la derecha",name:"Toma la salida en la derecha en {way_name}",destination:"Toma la salida en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"},"sharp left":{default:"Ve cuesta abajo en la izquierda",name:"Ve cuesta abajo en la izquierda en {way_name}",destination:"Ve cuesta abajo en la izquierda hacia {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},"sharp right":{default:"Ve cuesta abajo en la derecha",name:"Ve cuesta abajo en la derecha en {way_name}",destination:"Ve cuesta abajo en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"},"slight left":{default:"Ve cuesta abajo en la izquierda",name:"Ve cuesta abajo en la izquierda en {way_name}",destination:"Ve cuesta abajo en la izquierda hacia {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},"slight right":{default:"Toma la salida en la derecha",name:"Toma la salida en la derecha en {way_name}",destination:"Toma la salida en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"}},"on ramp":{default:{default:"Toma la rampa",name:"Toma la rampa en {way_name}",destination:"Toma la rampa hacia {destination}"},left:{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},right:{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"},"sharp left":{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},"sharp right":{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"},"slight left":{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},"slight right":{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"}},rotary:{default:{default:{default:"Entra en la rotonda",name:"Entra en la rotonda y sal en {way_name}",destination:"Entra en la rotonda y sal hacia {destination}"},name:{default:"Entra en {rotary_name}",name:"Entra en {rotary_name} y sal en {way_name}",destination:"Entra en {rotary_name} y sal hacia {destination}"},exit:{default:"Entra en la rotonda y toma la {exit_number} salida",name:"Entra en la rotonda y toma la {exit_number} salida a {way_name}",destination:"Entra en la rotonda y toma la {exit_number} salida hacia {destination}"},name_exit:{default:"Entra en {rotary_name} y coge la {exit_number} salida",name:"Entra en {rotary_name} y coge la {exit_number} salida en {way_name}",destination:"Entra en {rotary_name} y coge la {exit_number} salida hacia {destination}"}}},roundabout:{default:{exit:{default:"Entra en la rotonda y toma la {exit_number} salida",name:"Entra en la rotonda y toma la {exit_number} salida a {way_name}",destination:"Entra en la rotonda y toma la {exit_number} salida hacia {destination}"},default:{default:"Entra en la rotonda",name:"Entra en la rotonda y sal en {way_name}",destination:"Entra en la rotonda y sal hacia {destination}"}}},"roundabout turn":{default:{default:"Sigue {modifier}",name:"Sigue {modifier} en {way_name}",destination:"Sigue {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto en {way_name}",destination:"Continúa recto hacia {destination}"}},"exit roundabout":{default:{default:"Sal la rotonda",name:"Sal la rotonda en {way_name}",destination:"Sal la rotonda hacia {destination}"}},"exit rotary":{default:{default:"Sal la rotonda",name:"Sal la rotonda en {way_name}",destination:"Sal la rotonda hacia {destination}"}},turn:{default:{default:"Sigue {modifier}",name:"Sigue {modifier} en {way_name}",destination:"Sigue {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Ve recto",name:"Ve recto en {way_name}",destination:"Ve recto hacia {destination}"}},"use lane":{no_lanes:{default:"Continúa recto"},default:{default:"{lane_instruction}"}}}}},{}],29:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"pohjoiseen",northeast:"koilliseen",east:"itään",southeast:"kaakkoon",south:"etelään",southwest:"lounaaseen",west:"länteen",northwest:"luoteeseen"},modifier:{left:"vasemmall(e/a)",right:"oikeall(e/a)","sharp left":"jyrkästi vasempaan","sharp right":"jyrkästi oikeaan","slight left":"loivasti vasempaan","slight right":"loivasti oikeaan",straight:"suoraan eteenpäin",uturn:"U-käännös"},lanes:{xo:"Pysy oikealla",ox:"Pysy vasemmalla",xox:"Pysy keskellä",oxo:"Pysy vasemmalla tai oikealla"}},modes:{ferry:{default:"Aja lautalle",name:"Aja lautalle {way_name}",destination:"Aja lautalle, jonka määränpää on {destination}"}},phrase:{"two linked by distance":"{instruction_one}, sitten {distance} päästä, {instruction_two}","two linked":"{instruction_one}, sitten {instruction_two}","one in distance":"{distance} päästä, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"{exit}"},arrive:{default:{default:"Olet saapunut {nth} määränpäähäsi",upcoming:"Saavut {nth} määränpäähäsi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}"},left:{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},right:{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"sharp left":{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},"sharp right":{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"slight right":{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"slight left":{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},straight:{default:"Olet saapunut {nth} määränpäähäsi, joka on suoraan edessäsi",upcoming:"Saavut {nth} määränpäähäsi, suoraan edessä",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on suoraan edessäsi"}},continue:{default:{default:"Käänny {modifier}",name:"Käänny {modifier} pysyäksesi tiellä {way_name}",destination:"Käänny {modifier} suuntana {destination}",exit:"Käänny {modifier} tielle {way_name}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan pysyäksesi tiellä {way_name}",destination:"Jatka suuntana {destination}",distance:"Jatka suoraan {distance}",namedistance:"Jatka tiellä {way_name} {distance}"},"sharp left":{default:"Jatka jyrkästi vasempaan",name:"Jatka jyrkästi vasempaan pysyäksesi tiellä {way_name}",destination:"Jatka jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Jatka jyrkästi oikeaan",name:"Jatka jyrkästi oikeaan pysyäksesi tiellä {way_name}",destination:"Jatka jyrkästi oikeaan suuntana {destination}"},"slight left":{default:"Jatka loivasti vasempaan",name:"Jatka loivasti vasempaan pysyäksesi tiellä {way_name}",destination:"Jatka loivasti vasempaan suuntana {destination}"},"slight right":{default:"Jatka loivasti oikeaan",name:"Jatka loivasti oikeaan pysyäksesi tiellä {way_name}",destination:"Jatka loivasti oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös ja jatka tietä {way_name}",destination:"Tee U-käännös suuntana {destination}"}},depart:{default:{default:"Aja {direction}",name:"Aja tietä {way_name} {direction}",namedistance:"Aja {distance} {direction} tietä {way_name} "}},"end of road":{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan eteenpäin tielle {way_name}",destination:"Jatka suoraan eteenpäin suuntana {destination}"},uturn:{default:"Tien päässä tee U-käännös",name:"Tien päässä tee U-käännös tielle {way_name}",destination:"Tien päässä tee U-käännös suuntana {destination}"}},fork:{default:{default:"Jatka tienhaarassa {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},"slight left":{default:"Pysy vasemmalla tienhaarassa",name:"Pysy vasemmalla tielle {way_name}",destination:"Pysy vasemmalla suuntana {destination}"},"slight right":{default:"Pysy oikealla tienhaarassa",name:"Pysy oikealla tielle {way_name}",destination:"Pysy oikealla suuntana {destination}"},"sharp left":{default:"Käänny tienhaarassa jyrkästi vasempaan",name:"Käänny tienhaarassa jyrkästi vasempaan tielle {way_name}",destination:"Käänny tienhaarassa jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Käänny tienhaarassa jyrkästi oikeaan",name:"Käänny tienhaarassa jyrkästi oikeaan tielle {way_name}",destination:"Käänny tienhaarassa jyrkästi oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},merge:{default:{default:"Liity {modifier}",name:"Liity {modifier}, tielle {way_name}",destination:"Liity {modifier}, suuntana {destination}"},straight:{default:"Liity",name:"Liity tielle {way_name}",destination:"Liity suuntana {destination}"},"slight left":{default:"Liity vasemmalle",name:"Liity vasemmalle, tielle {way_name}",destination:"Liity vasemmalle, suuntana {destination}"},"slight right":{default:"Liity oikealle",name:"Liity oikealle, tielle {way_name}",destination:"Liity oikealle, suuntana {destination}"},"sharp left":{default:"Liity vasemmalle",name:"Liity vasemmalle, tielle {way_name}",destination:"Liity vasemmalle, suuntana {destination}"},"sharp right":{default:"Liity oikealle",name:"Liity oikealle, tielle {way_name}",destination:"Liity oikealle, suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},"new name":{default:{default:"Jatka {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka tielle {way_name}",destination:"Jatka suuntana {destination}"},"sharp left":{default:"Käänny jyrkästi vasempaan",name:"Käänny jyrkästi vasempaan tielle {way_name}",destination:"Käänny jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Käänny jyrkästi oikeaan",name:"Käänny jyrkästi oikeaan tielle {way_name}",destination:"Käänny jyrkästi oikeaan suuntana {destination}"},"slight left":{default:"Jatka loivasti vasempaan",name:"Jatka loivasti vasempaan tielle {way_name}",destination:"Jatka loivasti vasempaan suuntana {destination}"},"slight right":{default:"Jatka loivasti oikeaan",name:"Jatka loivasti oikeaan tielle {way_name}",destination:"Jatka loivasti oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},notification:{default:{default:"Jatka {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},"off ramp":{default:{default:"Aja erkanemiskaistalle",name:"Aja erkanemiskaistaa tielle {way_name}",destination:"Aja erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit}",exit_destination:"Ota poistuminen {exit}, suuntana {destination}"},left:{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},right:{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"},"sharp left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},"sharp right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"},"slight left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},"slight right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"}},"on ramp":{default:{default:"Aja erkanemiskaistalle",name:"Aja erkanemiskaistaa tielle {way_name}",destination:"Aja erkanemiskaistalle suuntana {destination}"},left:{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},right:{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"},"sharp left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},"sharp right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"},"slight left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},"slight right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"}},rotary:{default:{default:{default:"Aja liikenneympyrään",name:"Aja liikenneympyrään ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse erkanemiskaista suuntana {destination}"},name:{default:"Aja liikenneympyrään {rotary_name}",name:"Aja liikenneympyrään {rotary_name} ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään {rotary_name} ja valitse erkanemiskaista suuntana {destination}"},exit:{default:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista suuntana {destination}"},name_exit:{default:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista suuntana {destination}"}}},roundabout:{default:{exit:{default:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista suuntana {destination}"},default:{default:"Aja liikenneympyrään",name:"Aja liikenneympyrään ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse erkanemiskaista suuntana {destination}"}}},"roundabout turn":{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},left:{default:"Käänny vasempaan",name:"Käänny vasempaan tielle {way_name}",destination:"Käänny vasempaan suuntana {destination}"},right:{default:"Käänny oikeaan",name:"Käänny oikeaan tielle {way_name}",destination:"Käänny oikeaan suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan eteenpäin tielle {way_name}",destination:"Jatka suoraan eteenpäin suuntana {destination}"}},"exit roundabout":{default:{default:"Poistu liikenneympyrästä",name:"Poistu liikenneympyrästä tielle {way_name}",destination:"Poistu liikenneympyrästä suuntana {destination}"}},"exit rotary":{default:{default:"Poistu liikenneympyrästä",name:"Poistu liikenneympyrästä tielle {way_name}",destination:"Poistu liikenneympyrästä suuntana {destination}"}},turn:{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},left:{default:"Käänny vasempaan",name:"Käänny vasempaan tielle {way_name}",destination:"Käänny vasempaan suuntana {destination}"},right:{default:"Käänny oikeaan",name:"Käänny oikeaan tielle {way_name}",destination:"Käänny oikeaan suuntana {destination}"},straight:{default:"Aja suoraan eteenpäin",name:"Aja suoraan eteenpäin tielle {way_name}",destination:"Aja suoraan eteenpäin suuntana {destination}"}},"use lane":{no_lanes:{default:"Jatka suoraan eteenpäin"},default:{default:"{lane_instruction}"}}}}},{}],30:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"première",2:"seconde",3:"troisième",4:"quatrième",5:"cinquième",6:"sixième",7:"septième",8:"huitième",9:"neuvième",10:"dixième"},direction:{north:"le nord",northeast:"le nord-est",east:"lâest",southeast:"le sud-est",south:"le sud",southwest:"le sud-ouest",west:"lâouest",northwest:"le nord-ouest"},modifier:{left:"à gauche",right:"à droite","sharp left":"franchement à gauche","sharp right":"franchement à droite","slight left":"légèrement à gauche","slight right":"légèrement à droite",straight:"tout droit",uturn:"demi-tour"},lanes:{xo:"Tenir la droite",ox:"Tenir la gauche",xox:"Rester au milieu",oxo:"Tenir la gauche ou la droite"}},modes:{ferry:{default:"Prendre le ferry",name:"Prendre le ferry {way_name:article}",destination:"Prendre le ferry en direction {destination:preposition}"}},phrase:{"two linked by distance":"{instruction_one}, puis, dans {distance}, {instruction_two}","two linked":"{instruction_one}, puis {instruction_two}","one in distance":"Dans {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"sortie n°{exit}"},arrive:{default:{ 2171default:"Vous êtes arrivé à votre {nth} destination",upcoming:"Vous arriverez à votre {nth} destination",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}"},left:{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},right:{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé à {waypoint_name:arrival}, sur la droite"},"sharp left":{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},"sharp right":{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la droite"},"slight right":{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la droite"},"slight left":{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous êtes arrivé",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},straight:{default:"Vous êtes arrivé à votre {nth} destination, droit devant",upcoming:"Vous arriverez à votre {nth} destination, droit devant",short:"Vous êtes arrivé","short-upcoming":"Vous êtes arrivé",named:"Vous êtes arrivé {waypoint_name:arrival}, droit devant"}},continue:{default:{default:"Tourner {modifier}",name:"Tourner {modifier} pour rester sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}",exit:"Tourner {modifier} sur {way_name:article}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit pour rester sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}",distance:"Continuer tout droit sur {distance}",namedistance:"Continuer sur {way_name:article} sur {distance}"},"sharp left":{default:"Tourner franchement à gauche",name:"Tourner franchement à gauche pour rester sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite",name:"Tourner franchement à droite pour rester sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},"slight left":{default:"Tourner légèrement à gauche",name:"Tourner légèrement à gauche pour rester sur {way_name:article}",destination:"Tourner légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Tourner légèrement à droite",name:"Tourner légèrement à droite pour rester sur {way_name:article}",destination:"Tourner légèrement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour et continuer sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},depart:{default:{default:"Se diriger vers {direction}",name:"Se diriger vers {direction} sur {way_name:article}",namedistance:"Se diriger vers {direction} sur {way_name:article} sur {distance}"}},"end of road":{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"},uturn:{default:"Faire demi-tour à la fin de la route",name:"Faire demi-tour à la fin {way_name:preposition}",destination:"Faire demi-tour à la fin de la route en direction {destination:preposition}"}},fork:{default:{default:"Tenir {modifier} à lâembranchement",name:"Tenir {modifier} sur {way_name:article}",destination:"Tenir {modifier} en direction {destination:preposition}"},"slight left":{default:"Tenir la gauche à lâembranchement",name:"Tenir la gauche sur {way_name:article}",destination:"Tenir la gauche en direction {destination:preposition}"},"slight right":{default:"Tenir la droite à lâembranchement",name:"Tenir la droite sur {way_name:article}",destination:"Tenir la droite en direction {destination:preposition}"},"sharp left":{default:"Tourner franchement à gauche à lâembranchement",name:"Tourner franchement à gauche sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite à lâembranchement",name:"Tourner franchement à droite sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},merge:{default:{default:"Sâinsérer {modifier}",name:"Sâinsérer {modifier} sur {way_name:article}",destination:"Sâinsérer {modifier} en direction {destination:preposition}"},straight:{default:"Sâinsérer",name:"Sâinsérer sur {way_name:article}",destination:"Sâinsérer en direction {destination:preposition}"},"slight left":{default:"Sâinsérer légèrement à gauche",name:"Sâinsérer légèrement à gauche sur {way_name:article}",destination:"Sâinsérer légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Sâinsérer légèrement à droite",name:"Sâinsérer légèrement à droite sur {way_name:article}",destination:"Sâinsérer à droite en direction {destination:preposition}"},"sharp left":{default:"Sâinsérer à gauche",name:"Sâinsérer à gauche sur {way_name:article}",destination:"Sâinsérer à gauche en direction {destination:preposition}"},"sharp right":{default:"Sâinsérer à droite",name:"Sâinsérer à droite sur {way_name:article}",destination:"Sâinsérer à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},"new name":{default:{default:"Continuer {modifier}",name:"Continuer {modifier} sur {way_name:article}",destination:"Continuer {modifier} en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"},"sharp left":{default:"Tourner franchement à gauche",name:"Tourner franchement à gauche sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite",name:"Tourner franchement à droite sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},"slight left":{default:"Continuer légèrement à gauche",name:"Continuer légèrement à gauche sur {way_name:article}",destination:"Continuer légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Continuer légèrement à droite",name:"Continuer légèrement à droite sur {way_name:article}",destination:"Continuer légèrement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},notification:{default:{default:"Continuer {modifier}",name:"Continuer {modifier} sur {way_name:article}",destination:"Continuer {modifier} en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},"off ramp":{default:{default:"Prendre la sortie",name:"Prendre la sortie sur {way_name:article}",destination:"Prendre la sortie en direction {destination:preposition}",exit:"Prendre la sortie {exit}",exit_destination:"Prendre la sortie {exit} en direction {destination:preposition}"},left:{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},right:{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"},"sharp left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},"sharp right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"},"slight left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},"slight right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"}},"on ramp":{default:{default:"Prendre la sortie",name:"Prendre la sortie sur {way_name:article}",destination:"Prendre la sortie en direction {destination:preposition}"},left:{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},right:{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"},"sharp left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},"sharp right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"},"slight left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},"slight right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"}},rotary:{default:{default:{default:"Prendre le rond-point",name:"Prendre le rond-point, puis sortir sur {way_name:article}",destination:"Prendre le rond-point, puis sortir en direction {destination:preposition}"},name:{default:"Prendre {rotary_name:rotary}",name:"Prendre {rotary_name:rotary}, puis sortir par {way_name:article}",destination:"Prendre {rotary_name:rotary}, puis sortir en direction {destination:preposition}"},exit:{default:"Prendre le rond-point, puis la {exit_number} sortie",name:"Prendre le rond-point, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre le rond-point, puis la {exit_number} sortie en direction {destination:preposition}"},name_exit:{default:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie",name:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie en direction {destination:preposition}"}}},roundabout:{default:{exit:{default:"Prendre le rond-point, puis la {exit_number} sortie",name:"Prendre le rond-point, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre le rond-point, puis la {exit_number} sortie en direction {destination:preposition}"},default:{default:"Prendre le rond-point",name:"Prendre le rond-point, puis sortir sur {way_name:article}",destination:"Prendre le rond-point, puis sortir en direction {destination:preposition}"}}},"roundabout turn":{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},left:{default:"Tourner à gauche",name:"Tourner à gauche sur {way_name:article}",destination:"Tourner à gauche en direction {destination:preposition}"},right:{default:"Tourner à droite",name:"Tourner à droite sur {way_name:article}",destination:"Tourner à droite en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"}},"exit roundabout":{default:{default:"Sortir du rond-point",name:"Sortir du rond-point sur {way_name:article}",destination:"Sortir du rond-point en direction {destination:preposition}"}},"exit rotary":{default:{default:"Sortir du rond-point",name:"Sortir du rond-point sur {way_name:article}",destination:"Sortir du rond-point en direction {destination:preposition}"}},turn:{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},left:{default:"Tourner à gauche",name:"Tourner à gauche sur {way_name:article}",destination:"Tourner à gauche en direction {destination:preposition}"},right:{default:"Tourner à droite",name:"Tourner à droite sur {way_name:article}",destination:"Tourner à droite en direction {destination:preposition}"},straight:{default:"Aller tout droit",name:"Aller tout droit sur {way_name:article}",destination:"Aller tout droit en direction {destination:preposition}"}},"use lane":{no_lanes:{default:"Continuer tout droit"},default:{default:"{lane_instruction}"}}}}},{}],31:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"ר×ש×× ×",2:"×©× ××",3:"ש××ש×ת",4:"ר×××¢×ת",5:"×××ש×ת",6:"ש×ש×ת",7:"ש×××¢×ת",8:"ש××× ×ת",9:"תש××¢×ת",10:"עש×ר×ת"},direction:{north:"צפ××",northeast:"צפ×× ××ר×",east:"××ר×",southeast:"×ר×× ××ר×",south:"×ר××",southwest:"×ר×× ×ער×",west:"×ער×",northwest:"צפ×× ×ער×"},modifier:{left:"ש××××",right:"×××× ×","sharp left":"××× ×©××××","sharp right":"××× ×××× ×","slight left":"×§×× ×©××××","slight right":"×§×× ×××× ×",straight:"×שר",uturn:"×¤× ××ת פרס×"},lanes:{xo:"××צ×× ×××××",ox:"××צ×× ×ש×××",xox:"×××©× ×× ×ª×× ×××צע×",oxo:"××צ×× ××××× ×× ×ש×××"}},modes:{ferry:{default:"×¢×× ×¢× ×××¢××רת",name:"×¢×× ×¢× ×××¢××רת {way_name}",destination:"×¢×× ×¢× ×××¢××רת ×××××× {destination}"}},phrase:{"two linked by distance":"{instruction_one}, ×××, ××¢××{distance}, {instruction_two}","two linked":"{instruction_one}, ××× {instruction_two}","one in distance":"××¢×× {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"×צ××× {exit}"},arrive:{default:{default:"××עת ×× ×××¢× ×{nth} ש××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name}"},left:{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},right:{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"sharp left":{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},"sharp right":{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"slight right":{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"slight left":{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},straight:{default:"××עת ×× ×××¢× ×{nth} ש××, ×××ש×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש××, ×××ש×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name}, ×××ש×"}},continue:{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ××× ×××ש×ר ×{way_name}",destination:"×¤× × {modifier} ×××××× {destination}",exit:"×¤× × {modifier} ×¢× {way_name}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ××× ×××ש×ר ×¢× {way_name}",destination:"×××©× ×××××× {destination}",distance:"×××©× ×שר ××××¨× {distance}",namedistance:"×××©× ×¢× {way_name} ××××¨× {distance}"},"sharp left":{default:"×¤× × ××××ת ש××××",name:"×¤× × ××××ת ש×××× ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× ×",name:"×¤× × ××××ת ×××× × ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},"slight left":{default:"×¤× × ×§××ת ש××××",name:"×¤× × ×§××ת ש×××× ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ×§××ת ש×××× ×××××× {destination}"},"slight right":{default:"×¤× × ×§××ת ×××× ×",name:"×¤× × ×§××ת ×××× × ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ×§××ת ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ××××©× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},depart:{default:{default:"×ת×××× × {direction}",name:"×ת×××× × {direction} ×¢× {way_name}",namedistance:"×ת×××× × {direction} ×¢× {way_name} ××××¨× {distance}"}},"end of road":{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×¢× {way_name}",destination:"×××©× ×שר ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת ×¤×¨×¡× ×ס××£ ××ר×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name} ×ס××£ ××ר×",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination} ×ס××£ ××ר×"}},fork:{default:{default:"××צ×× {modifier} ××תפצ××ת",name:"××צ×× {modifier} ×¢× {way_name}",destination:"××צ×× {modifier} ×××××× {destination}"},"slight left":{default:"××צ×× ×ש××× ××תפצ××ת",name:"××צ×× ×ש××× ×¢× {way_name}",destination:"××צ×× ×ש××× ×××××× {destination}"},"slight right":{default:"××צ×× ×××× × ××תפצ××ת",name:"××צ×× ××××× ×¢× {way_name}",destination:"××צ×× ××××× ×××××× {destination}"},"sharp left":{default:"×¤× × ××××ת ש×××× ××תפצ××ת",name:"×¤× × ××××ת ש×××× ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× × ××תפצ××ת",name:"×¤× × ××××ת ×××× × ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},merge:{default:{default:"×שת×× {modifier}",name:"×שת×× {modifier} ×¢× {way_name}",destination:"×שת×× {modifier} ×××××× {destination}"},straight:{default:"×שת××",name:"×שת×× ×¢× {way_name}",destination:"×שת×× ×××××× {destination}"},"slight left":{default:"×שת×× ×©××××",name:"×שת×× ×©×××× ×¢× {way_name}",destination:"×שת×× ×©×××× ×××××× {destination}"},"slight right":{default:"×שת×× ×××× ×",name:"×שת×× ×××× × ×¢× {way_name}",destination:"×שת×× ×××× × ×××××× {destination}"},"sharp left":{default:"×שת×× ×©××××",name:"×שת×× ×©×××× ×¢× {way_name}",destination:"×שת×× ×©×××× ×××××× {destination}"},"sharp right":{default:"×שת×× ×××× ×",name:"×שת×× ×××× × ×¢× {way_name}",destination:"×שת×× ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},"new name":{default:{default:"×××©× {modifier}",name:"×××©× {modifier} ×¢× {way_name}",destination:"×××©× {modifier} ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×¢× {way_name}",destination:"×××©× ×××××× {destination}"},"sharp left":{default:"×¤× × ××××ת ש××××",name:"×¤× × ××××ת ש×××× ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× ×",name:"×¤× × ××××ת ×××× × ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},"slight left":{default:"×××©× ×× ×××× ×§×× ×©××××",name:"×××©× ×× ×××× ×§×× ×©×××× ×¢× {way_name}",destination:"×××©× ×× ×××× ×§×× ×©×××× ×××××× {destination}"},"slight right":{default:"×××©× ×× ×××× ×§×× ×××× ×",name:"×××©× ×× ×××× ×§×× ×××× × ×¢× {way_name}",destination:"×××©× ×× ×××× ×§×× ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},notification:{default:{default:"×××©× {modifier}",name:"×××©× {modifier} ×¢× {way_name}",destination:"×××©× {modifier} ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},"off ramp":{default:{default:"×¦× ××צ×××",name:"×¦× ××צ××× ×¢× {way_name}",destination:"×¦× ××צ××× ×××××× {destination}",exit:"×¦× ××צ××× {exit}",exit_destination:"×¦× ××צ××× {exit} ×××××× {destination}"},left:{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},right:{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"},"sharp left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},"sharp right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"},"slight left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},"slight right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"}},"on ramp":{default:{default:"×¦× ××צ×××",name:"×¦× ××צ××× ×¢× {way_name}",destination:"×¦× ××צ××× ×××××× {destination}"},left:{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},right:{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"},"sharp left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},"sharp right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"},"slight left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},"slight right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"}},rotary:{default:{default:{default:"×שת×× ×××¢×× ××ª× ××¢×",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×¢× {way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×××××× {destination}"},name:{default:"×××× ×¡ ×{rotary_name}",name:"×××× ×¡ ×{rotary_name} ××¦× ×¢× {way_name}",destination:"×××× ×¡ ×{rotary_name} ××¦× ×××××× {destination}"},exit:{default:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number}",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×{way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×××××× {destination}"},name_exit:{default:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number}",name:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number} ×{way_name}",destination:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number} ×××××× {destination}"}}},roundabout:{default:{exit:{default:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number}",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×{way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×××××× {destination}"},default:{default:"×שת×× ×××¢×× ××ª× ××¢×",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×¢× {way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×××××× {destination}"}}},"roundabout turn":{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},left:{default:"×¤× × ×©××××",name:"×¤× × ×©×××× ×{way_name}",destination:"×¤× × ×©×××× ×××××× {destination}"},right:{default:"×¤× × ×××× ×",name:"×¤× × ×××× × ×{way_name}",destination:"×¤× × ×××× × ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×¢× {way_name}",destination:"×××©× ×שר ×××××× {destination}"}},"exit roundabout":{default:{default:"×¦× ×××¢×× ××ª× ××¢×",name:"×¦× ×××¢×× ××ª× ××¢× ×{way_name}",destination:"×¦× ×××¢×× ××ª× ××¢× ×××××× {destination}"}},"exit rotary":{default:{default:"×¦× ×××¢×× ××ª× ××¢×",name:"×¦× ×××¢×× ××ª× ××¢× ×{way_name}",destination:"×¦× ×××¢×× ××ª× ××¢× ×××××× {destination}"}},turn:{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},left:{default:"×¤× × ×©××××",name:"×¤× × ×©×××× ×{way_name}",destination:"×¤× × ×©×××× ×××××× {destination}"},right:{default:"×¤× × ×××× ×",name:"×¤× × ×××× × ×{way_name}",destination:"×¤× × ×××× × ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×{way_name}",destination:"×××©× ×שר ×××××× {destination}"}},"use lane":{no_lanes:{default:"×××©× ×שר"},default:{default:"{lane_instruction}"}}}}},{}],32:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10"},direction:{north:"utara",northeast:"timur laut",east:"timur",southeast:"tenggara",south:"selatan",southwest:"barat daya",west:"barat",northwest:"barat laut"},modifier:{left:"kiri",right:"kanan","sharp left":"tajam kiri","sharp right":"tajam kanan","slight left":"agak ke kiri","slight right":"agak ke kanan",straight:"lurus",uturn:"putar balik"},lanes:{xo:"Tetap di kanan",ox:"Tetap di kiri",xox:"Tetap di tengah",oxo:"Tetap di kiri atau kanan"}},modes:{ferry:{default:"Naik ferry",name:"Naik ferry di {way_name}",destination:"Naik ferry menuju {destination}"}},phrase:{"two linked by distance":"{instruction_one}, then, in {distance}, {instruction_two}","two linked":"{instruction_one}, then {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Anda telah tiba di tujuan ke-{nth}",upcoming:"Anda telah tiba di tujuan ke-{nth}",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}"},left:{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},right:{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"sharp left":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},"sharp right":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"slight right":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"slight left":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},straight:{default:"Anda telah tiba di tujuan ke-{nth}, lurus saja",upcoming:"Anda telah tiba di tujuan ke-{nth}, lurus saja",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, lurus saja"}},continue:{default:{default:"Belok {modifier}",name:"Terus {modifier} ke {way_name}",destination:"Belok {modifier} menuju {destination}",exit:"Belok {modifier} ke {way_name}"},straight:{default:"Lurus terus",name:"Terus ke {way_name}",destination:"Terus menuju {destination}",distance:"Continue straight for {distance}",namedistance:"Continue on {way_name} for {distance}"},"sharp left":{default:"Belok kiri tajam",name:"Make a sharp left to stay on {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan tajam",name:"Make a sharp right to stay on {way_name}",destination:"Belok kanan tajam menuju {destination}"},"slight left":{default:"Tetap agak di kiri",name:"Tetap agak di kiri ke {way_name}",destination:"Tetap agak di kiri menuju {destination}"},"slight right":{default:"Tetap agak di kanan",name:"Tetap agak di kanan ke {way_name}",destination:"Tetap agak di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},depart:{default:{default:"Arah {direction}",name:"Arah {direction} di {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Belok {modifier}",name:"Belok {modifier} ke {way_name}",destination:"Belok {modifier} menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"},uturn:{default:"Putar balik di akhir jalan",name:"Putar balik di {way_name} di akhir jalan",destination:"Putar balik menuju {destination} di akhir jalan"}},fork:{default:{default:"Tetap {modifier} di pertigaan",name:"Tetap {modifier} di pertigaan ke {way_name}",destination:"Tetap {modifier} di pertigaan menuju {destination}"},"slight left":{default:"Tetap di kiri pada pertigaan",name:"Tetap di kiri pada pertigaan ke arah {way_name}",destination:"Tetap di kiri pada pertigaan menuju {destination}"},"slight right":{default:"Tetap di kanan pada pertigaan", 2172name:"Tetap di kanan pada pertigaan ke arah {way_name}",destination:"Tetap di kanan pada pertigaan menuju {destination}"},"sharp left":{default:"Belok kiri pada pertigaan",name:"Belok kiri tajam ke arah {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan pada pertigaan",name:"Belok kanan tajam ke arah {way_name}",destination:"Belok kanan tajam menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},merge:{default:{default:"Bergabung {modifier}",name:"Bergabung {modifier} ke arah {way_name}",destination:"Bergabung {modifier} menuju {destination}"},straight:{default:"Bergabung lurus",name:"Bergabung lurus ke arah {way_name}",destination:"Bergabung lurus menuju {destination}"},"slight left":{default:"Bergabung di kiri",name:"Bergabung di kiri ke arah {way_name}",destination:"Bergabung di kiri menuju {destination}"},"slight right":{default:"Bergabung di kanan",name:"Bergabung di kanan ke arah {way_name}",destination:"Bergabung di kanan menuju {destination}"},"sharp left":{default:"Bergabung di kiri",name:"Bergabung di kiri ke arah {way_name}",destination:"Bergabung di kiri menuju {destination}"},"sharp right":{default:"Bergabung di kanan",name:"Bergabung di kanan ke arah {way_name}",destination:"Bergabung di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},"new name":{default:{default:"Lanjutkan {modifier}",name:"Lanjutkan {modifier} menuju {way_name}",destination:"Lanjutkan {modifier} menuju {destination}"},straight:{default:"Lurus terus",name:"Terus ke {way_name}",destination:"Terus menuju {destination}"},"sharp left":{default:"Belok kiri tajam",name:"Belok kiri tajam ke arah {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan tajam",name:"Belok kanan tajam ke arah {way_name}",destination:"Belok kanan tajam menuju {destination}"},"slight left":{default:"Lanjut dengan agak ke kiri",name:"Lanjut dengan agak di kiri ke {way_name}",destination:"Tetap agak di kiri menuju {destination}"},"slight right":{default:"Tetap agak di kanan",name:"Tetap agak di kanan ke {way_name}",destination:"Tetap agak di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},notification:{default:{default:"Lanjutkan {modifier}",name:"Lanjutkan {modifier} menuju {way_name}",destination:"Lanjutkan {modifier} menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},"off ramp":{default:{default:"Ambil jalan melandai",name:"Ambil jalan melandai ke {way_name}",destination:"Ambil jalan melandai menuju {destination}",exit:"Take exit {exit}",exit_destination:"Take exit {exit} towards {destination}"},left:{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},right:{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"sharp left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"sharp right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"slight left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"slight right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"}},"on ramp":{default:{default:"Ambil jalan melandai",name:"Ambil jalan melandai ke {way_name}",destination:"Ambil jalan melandai menuju {destination}"},left:{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},right:{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"},"sharp left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},"sharp right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"},"slight left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},"slight right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"}},rotary:{default:{default:{default:"Masuk bundaran",name:"Masuk bundaran dan keluar arah {way_name}",destination:"Masuk bundaran dan keluar menuju {destination}"},name:{default:"Masuk {rotary_name}",name:"Masuk {rotary_name} dan keluar arah {way_name}",destination:"Masuk {rotary_name} dan keluar menuju {destination}"},exit:{default:"Masuk bundaran dan ambil jalan keluar {exit_number}",name:"Masuk bundaran dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk bundaran dan ambil jalan keluar {exit_number} menuju {destination}"},name_exit:{default:"Masuk {rotary_name} dan ambil jalan keluar {exit_number}",name:"Masuk {rotary_name} dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk {rotary_name} dan ambil jalan keluar {exit_number} menuju {destination}"}}},roundabout:{default:{exit:{default:"Masuk bundaran dan ambil jalan keluar {exit_number}",name:"Masuk bundaran dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk bundaran dan ambil jalan keluar {exit_number} menuju {destination}"},default:{default:"Masuk bundaran",name:"Masuk bundaran dan keluar arah {way_name}",destination:"Masuk bundaran dan keluar menuju {destination}"}}},"roundabout turn":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"}},"exit roundabout":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"}},"exit rotary":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus",name:"Lurus arah {way_name}",destination:"Lurus menuju {destination}"}},turn:{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus",name:"Lurus arah {way_name}",destination:"Lurus menuju {destination}"}},"use lane":{no_lanes:{default:"Lurus terus"},default:{default:"{lane_instruction}"}}}}},{}],33:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"nord",northeast:"nord-est",east:"est",southeast:"sud-est",south:"sud",southwest:"sud-ovest",west:"ovest",northwest:"nord-ovest"},modifier:{left:"sinistra",right:"destra","sharp left":"sinistra","sharp right":"destra","slight left":"sinistra leggermente","slight right":"destra leggermente",straight:"dritto",uturn:"inversione a U"},lanes:{xo:"Mantieni la destra",ox:"Mantieni la sinistra",xox:"Rimani in mezzo",oxo:"Mantieni la destra o la sinistra"}},modes:{ferry:{default:"Prendi il traghetto",name:"Prendi il traghetto {way_name}",destination:"Prendi il traghetto verso {destination}"}},phrase:{"two linked by distance":"{instruction_one}, poi tra {distance},{instruction_two}","two linked":"{instruction_one}, poi {instruction_two}","one in distance":"tra {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Sei arrivato alla tua {nth} destinazione",upcoming:"Sei arrivato alla tua {nth} destinazione",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"Sei arrivato a {waypoint_name}"},left:{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},right:{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"sharp left":{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},"sharp right":{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"slight right":{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"slight left":{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},straight:{default:"sei arrivato alla tua {nth} destinazione, si trova davanti a te",upcoming:"sei arrivato alla tua {nth} destinazione, si trova davanti a te",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, si trova davanti a te"}},continue:{default:{default:"Gira a {modifier}",name:"Gira a {modifier} per stare su {way_name}",destination:"Gira a {modifier} verso {destination}",exit:"Gira a {modifier} in {way_name}"},straight:{default:"Continua dritto",name:"Continua dritto per stare su {way_name}",destination:"Continua verso {destination}",distance:"Continua dritto per {distance}",namedistance:"Continua su {way_name} per {distance}"},"sharp left":{default:"Svolta a sinistra",name:"Fai una stretta curva a sinistra per stare su {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra",name:"Fau una stretta curva a destra per stare su {way_name}",destination:"Svolta a destra verso {destination}"},"slight left":{default:"Fai una leggera curva a sinistra",name:"Fai una leggera curva a sinistra per stare su {way_name}",destination:"Fai una leggera curva a sinistra verso {destination}"},"slight right":{default:"Fai una leggera curva a destra",name:"Fai una leggera curva a destra per stare su {way_name}",destination:"Fai una leggera curva a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione ad U poi continua su {way_name}",destination:"Fai un'inversione a U verso {destination}"}},depart:{default:{default:"Continua verso {direction}",name:"Continua verso {direction} in {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Gira a {modifier}",name:"Gira a {modifier} in {way_name}",destination:"Gira a {modifier} verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"},uturn:{default:"Fai un'inversione a U alla fine della strada",name:"Fai un'inversione a U in {way_name} alla fine della strada",destination:"Fai un'inversione a U verso {destination} alla fine della strada"}},fork:{default:{default:"Mantieni la {modifier} al bivio",name:"Mantieni la {modifier} al bivio in {way_name}",destination:"Mantieni la {modifier} al bivio verso {destination}"},"slight left":{default:"Mantieni la sinistra al bivio",name:"Mantieni la sinistra al bivio in {way_name}",destination:"Mantieni la sinistra al bivio verso {destination}"},"slight right":{default:"Mantieni la destra al bivio",name:"Mantieni la destra al bivio in {way_name}",destination:"Mantieni la destra al bivio verso {destination}"},"sharp left":{default:"Svolta a sinistra al bivio",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra al bivio",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},merge:{default:{default:"Immettiti a {modifier}",name:"Immettiti {modifier} in {way_name}",destination:"Immettiti {modifier} verso {destination}"},straight:{default:"Immettiti a dritto",name:"Immettiti dritto in {way_name}",destination:"Immettiti dritto verso {destination}"},"slight left":{default:"Immettiti a sinistra",name:"Immettiti a sinistra in {way_name}",destination:"Immettiti a sinistra verso {destination}"},"slight right":{default:"Immettiti a destra",name:"Immettiti a destra in {way_name}",destination:"Immettiti a destra verso {destination}"},"sharp left":{default:"Immettiti a sinistra",name:"Immettiti a sinistra in {way_name}",destination:"Immettiti a sinistra verso {destination}"},"sharp right":{default:"Immettiti a destra",name:"Immettiti a destra in {way_name}",destination:"Immettiti a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},"new name":{default:{default:"Continua a {modifier}",name:"Continua a {modifier} in {way_name}",destination:"Continua a {modifier} verso {destination}"},straight:{default:"Continua dritto",name:"Continua in {way_name}",destination:"Continua verso {destination}"},"sharp left":{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},"slight left":{default:"Continua leggermente a sinistra",name:"Continua leggermente a sinistra in {way_name}",destination:"Continua leggermente a sinistra verso {destination}"},"slight right":{default:"Continua leggermente a destra",name:"Continua leggermente a destra in {way_name} ",destination:"Continua leggermente a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},notification:{default:{default:"Continua a {modifier}",name:"Continua a {modifier} in {way_name}",destination:"Continua a {modifier} verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},"off ramp":{default:{default:"Prendi la rampa",name:"Prendi la rampa in {way_name}",destination:"Prendi la rampa verso {destination}",exit:"Prendi l'uscita {exit}",exit_destination:"Prendi l'uscita {exit} verso {destination}"},left:{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},right:{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"},"sharp left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},"sharp right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"},"slight left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},"slight right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"}},"on ramp":{default:{default:"Prendi la rampa",name:"Prendi la rampa in {way_name}",destination:"Prendi la rampa verso {destination}"},left:{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},right:{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"},"sharp left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},"sharp right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"},"slight left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},"slight right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"}},rotary:{default:{default:{default:"Immettiti nella rotonda",name:"Immettiti nella ritonda ed esci in {way_name}",destination:"Immettiti nella ritonda ed esci verso {destination}"},name:{default:"Immettiti in {rotary_name}",name:"Immettiti in {rotary_name} ed esci su {way_name}",destination:"Immettiti in {rotary_name} ed esci verso {destination}"},exit:{default:"Immettiti nella rotonda e prendi la {exit_number} uscita",name:"Immettiti nella rotonda e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti nella rotonda e prendi la {exit_number} uscita verso {destination}"},name_exit:{default:"Immettiti in {rotary_name} e prendi la {exit_number} uscita",name:"Immettiti in {rotary_name} e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti in {rotary_name} e prendi la {exit_number} uscita verso {destination}"}}},roundabout:{default:{exit:{default:"Immettiti nella rotonda e prendi la {exit_number} uscita",name:"Immettiti nella rotonda e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti nella rotonda e prendi la {exit_number} uscita verso {destination}"},default:{default:"Entra nella rotonda",name:"Entra nella rotonda e prendi l'uscita in {way_name}",destination:"Entra nella rotonda e prendi l'uscita verso {destination}"}}},"roundabout turn":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"}},"exit roundabout":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"}},"exit rotary":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Prosegui dritto",name:"Continua su {way_name}",destination:"Continua verso {destination}"}},turn:{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Prosegui dritto",name:"Continua su {way_name}",destination:"Continua verso {destination}"}},"use lane":{no_lanes:{default:"Continua dritto"},default:{default:"{lane_instruction}"}}}}},{}],34:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"첫ë²ì©¨",2:"ëë²ì§¸",3:"ì¸ë²ì§¸",4:"ë¤ë²ì©¨",5:"ë¤ì¯ë²ì§¸",6:"ì¬ì¯ë²ì§¸",7:"ì¼ê³±ë²ì§¸",8:"ì¬ëë²ì§¸",9:"ìíë²ì§¸",10:"ì´ë²ì§¸"},direction:{north:"ë¶ìª½",northeast:"ë¶ë쪽",east:"ë쪽",southeast:"ë¨ë쪽",south:"ë¨ìª½",southwest:"ë¨ì쪽",west:"ì쪽",northwest:"ë¶ì쪽"},modifier:{left:"ì¢íì ",right:"ì°íì ","sharp left":"ë°ë¡ì¢íì ","sharp right":"ë°ë¡ì°íì ","slight left":"ì¡°ê¸ì¼ìª½","slight right":"ì¡°ê¸ì¤ë¥¸ìª½",straight:"ì§ì§",uturn:"ì í´"},lanes:{xo:"ì°ì¸¡ì°¨ì ì ì§",ox:"ì¢ì¸¡ì°¨ì ì ì§",xox:"ì¤ìì ì§",oxo:"ê³ì ì¢ì¸¡ ëë ì°ì¸¡ ì°¨ì "}},modes:{ferry:{default:"í리를 íìì¤",name:"í리를 íìì¤ {way_name}",destination:"í리를 íê³ {destination}ê¹ì§ ê°ì¸ì."}},phrase:{"two linked by distance":"{instruction_one}, ê·¸ë¦¬ê³ , {distance} ìì, {instruction_two}","two linked":"{instruction_one}, ê·¸ë¦¬ê³ {instruction_two}","one in distance":"{distance} ë´ì, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"{exit}ë²ì¼ë¡ ëê°ì¸ì."},arrive:{default:{default:" {nth}목ì ì§ì ëì°©íììµëë¤.",upcoming:"{nth}목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"ëì°©í ìì ì ëë¤.",named:"ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},left:{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},right:{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"sharp left":{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"sharp right":{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"slight right":{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"slight left":{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},straight:{default:"ë°ë¡ ìì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì§ì§íìë©´ {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì ë©´ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."}},continue:{default:{default:"{modifier} íì ",name:"{modifier} íì íê³ {way_name}ë¡ ì§ì§í´ 주ì¸ì.",destination:"{modifier} íì íê³ {destination}ê¹ì§ ê°ì¸ì.",exit:"{way_name} 쪽ì¼ë¡ {modifier} íì íì¸ì."},straight:{default:"ê³ì ì§ì§í´ 주ì¸ì.",name:"{way_name} ë¡ ê³ì ì§ì§í´ 주ì¸ì.",destination:"{destination}ê¹ì§ ì§ì§í´ 주ì¸ì.",distance:"{distance}ê¹ì§ ì§ì§í´ 주ì¸ì.",namedistance:"{distance}ê¹ì§ {way_name}ë¡ ê°ì£¼ì¸ì."},"sharp left":{default:"ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì íì í {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì íì í {destination}ë¡ ê°ì¸ì."},"sharp right":{default:"ê¸ì°íì íì¸ì.",name:"ê¸ì°íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì íì í {destination}ë¡ ê°ì¸ì."},"slight left":{default:"ì½ê° ì¢íì íì¸ì.",name:"ì½ê° ì¢íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì¢íì íì í {destination}ë¡ ê°ì¸ì."},"slight right":{default:"ì½ê° ì°íì íì¸ì.",name:"ì½ê° ì°íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì°íì íì í {destination}ë¡ ê°ì¸ì."},uturn:{default:"ì í´ íì¸ì",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´íì í {destination}ë¡ ê°ì¸ì."}},depart:{default:{default:"{direction}ë¡ ê°ì¸ì",name:"{direction} ë¡ ê°ì {way_name} 를 ì´ì©íì¸ì. ",namedistance:"{direction}ë¡ ê°ì{way_name} 를 {distance}ê¹ì§ ê°ì¸ì."}},"end of road":{default:{default:"{modifier} íì íì¸ì.",name:"{modifier}íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}íì íì í {destination}ë¡ ê°ì¸ì."},straight:{default:"ê³ì ì§ì§í´ 주ì¸ì.",name:"{way_name}ë¡ ê³ì ì§ì§í´ 주ì¸ì.",destination:"{destination}ê¹ì§ ì§ì§í´ 주ì¸ì."},uturn:{default:"ëë¡ ëê¹ì§ ê°ì ì í´í´ 주ì¸ì.",name:"ëë¡ ëê¹ì§ ê°ì ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ëë¡ ëê¹ì§ ê°ì ì í´í´ì {destination} ê¹ì§ ê°ì¸ì."}},fork:{default:{default:"ê°ë¦¼ê¸¸ìì {modifier} ì¼ë¡ ê°ì¸ì.",name:"{modifier}íê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}íê³ {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ê°ë¦¼ê¸¸ìì ì¢íì íì¸ì.",name:"ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ê°ë¦¼ê¸¸ìì ì°íì íì¸ì.",name:"ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ê°ë¦¼ê¸¸ìì ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ê°ë¦¼ê¸¸ìì ê¸ì°íì íì¸ì.",name:"ê¸ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},merge:{default:{default:"{modifier} í©ë¥",name:"{modifier} í©ë¥íì¬ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} í©ë¥íì¬ {destination}ë¡ ê°ì¸ì."},straight:{default:"í©ë¥",name:"{way_name}ë¡ í©ë¥íì¸ì.",destination:"{destination}ë¡ í©ë¥íì¸ì."},"slight left":{default:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì¢ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì°ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì°ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì°ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì¢ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì°ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì°ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì°ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},"new name":{default:{default:"{modifier} ì ì§íì¸ì.",name:"{modifier} ì ì§í´ì {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} ì ì§í´ì {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§í´ì£¼ì¸ì.",name:"{way_name}ë¡ ê³ì ê°ì¸ì.",destination:"{destination}ê¹ì§ ê³ì ê°ì¸ì."},"sharp left":{default:"ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ê¸ì°íì íì¸ì.",name:"ê¸ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì½ê° ì¢íì í´ì¸ì.",name:"ì½ê° ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì½ê° ì°íì í´ì¸ì.",name:"ì½ê° ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´í´ì£¼ì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},notification:{default:{default:"{modifier} íì¸ì.",name:"{modifier}í´ì {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},"off ramp":{default:{default:"ë¨íë¡ ì§ì¶í´ 주ì¸ì..",name:"ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¶êµ¬ë¡ ëê°ì {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."} 2173},"on ramp":{default:{default:"ë¨íë¡ ì§ì í´ ì£¼ì¸ì..",name:"ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."}},rotary:{default:{default:{default:"ë¡í°ë¦¬ë¡ ì§ì íì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {way_name} ëê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."},name:{default:"{rotary_name}ë¡ ì§ì íì¸ì.",name:"{rotary_name}ë¡ ì§ì í´ì {way_name}ë¡ ëê°ì¸ì.",destination:"{rotary_name}ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."},exit:{default:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê°ì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê° {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê° {destination}ë¡ ê°ì¸ì."},name_exit:{default:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê°ì¸ì.",name:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê° {way_name}ë¡ ê°ì¸ì.",destination:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê° {destination}ë¡ ê°ì¸ì."}}},roundabout:{default:{exit:{default:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì {destination}ë¡ ê°ì¸ì."},default:{default:"ë¡í°ë¦¬ë¡ ì§ì íì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {way_name} ëê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."}}},"roundabout turn":{default:{default:"{modifier} íì¸ì.",name:"{modifier} íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} íìê³ {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¢íì íì¸ì.",name:"ì¢íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì°íì íì¸ì.",name:"ì°íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§ íì¸ì.",name:"ì§ì§íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì§ì§íìê³ {destination}ê¹ì§ ê°ì¸ì."}},"exit roundabout":{default:{default:"ë¡í리ìì ì§ì¶íì¸ì.",name:"ë¡í리ìì ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í리ìì ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì."}},"exit rotary":{default:{default:"ë¡í리ìì ì§ì¶íì¸ì.",name:"ë¡í리ìì ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í리ìì ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì."}},turn:{default:{default:"{modifier} íì¸ì.",name:"{modifier} íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} íìê³ {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¢íì íì¸ì.",name:"ì¢íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì°íì íì¸ì.",name:"ì°íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§ íì¸ì.",name:"ì§ì§íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì§ì§íìê³ {destination}ê¹ì§ ê°ì¸ì."}},"use lane":{no_lanes:{default:"ì§ì§íì¸ì."},default:{default:"{lane_instruction}"}}}}},{}],35:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"ááá",2:"áá¯ááá",3:"áááá",4:"á áá¯áá³",5:"áá¥á¥á",6:"ááá",7:"ááá±á",8:"á¡áá",9:"ááá",10:"ááá"},direction:{north:"á±á»áá¬áá¹á¡ááá¹",northeast:"á¡á±áá½áá±á»áá¬áá¹á¡ááá¹",east:"á¡á±áá½áá¡ááá¹",southeast:"á¡á±áá½áá±áá¬áá¹á¡ááá¹",south:"á±áá¬áá¹á¡ááá¹",southwest:"á¡á±áá¬áá¹á±áá¬áá¹á¡ááá¹",west:"á¡á±áá¬áá¹á¡ááá¹",northwest:"á¡á±áá¬áá¹á±á»áá¬áá¹á¡ááá¹"},modifier:{left:"ááá¹ááá¹",right:"áá¬ááá¹","sharp left":"ááá¹ááá¹ á±áá¬áá¹á·ááºáá³á¸","sharp right":"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸","slight left":"ááá¹ááá¹ á¡ááá¹á¸ááá¹","slight right":"áá¬ááá¹ á¡ááá¹á¸ááá¹",straight:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸",uturn:"á-á±áá¼á"},lanes:{xo:"áá¬ááá¹ááá¯áááá¹áá¼á¬á¸áá«",ox:"ááá¹ááá¹ááá¯áááá¹áá¼á¬á¸áá«",xox:"á¡ááá¹áá¼áá¹ááá¹á±ááá«",oxo:"ááá¹ ááá¯áááá¯áá¹ áá¬ááá¹ááá¯á ááá¹áá¼á¬á¸áá«"}},modes:{ferry:{default:"ááá¹áá® á á®á¸áá¼á¬á¸áá«",name:"{way_name}ááᯠááá¹áá®á á®á¸áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á ááá¹áá®á á®á¸áá¼á¬á¸áá«"}},phrase:{"two linked by distance":"{instruction_one}á»áá®á¸á±áá¬áá¹ {distance}á¡áá¼áá¹á¸ {instruction_two}","two linked":"{instruction_one}á»áá®á¸á±áá¬áá¹ {instruction_two}","one in distance":"{distance}á¡áá¼áá¹á¸ {instruction_one}","name and ref":"{name}( {ref})","exit with number":"{exit}áá½áá¼áá¹áá«"},arrive:{default:{default:"{nth}ááá¹ áá¼á¬á¸ááá¯á±áᬠááá®á¸ááá¹á¸ááá¯áá¹ááá¯áá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬ á±áá¬áá¹áá½áá»áá®"},left:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},right:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"sharp left":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"sharp right":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"slight right":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"slight left":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áá½áá»áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},straight:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá¬áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá¬áá¬áá¹áá½áááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áá½áá»áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹á·ááá¹á·áá¼á¬á¸áᬠá±áá¬áá¹áá½áá»áá®"}},continue:{default:{default:"{modifier}ááá¯áá½áá¹á·áá«",name:"{way_name}ââá±áááá¼áá¹á±áááá¹ {modifier}ááá¯áá½áá¹á·áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá½áá¹ááá«",exit:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá½áá¹á·áá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±áááá¼áá¹á±áááá¹ááá¹ááá¹á·ááá¹áá¼á¬áá«",destination:"{destination}áá®ááá¯áááá¹áá¼á¬á¸áá«",distance:"{distance}á±áá¬áá¹ ááá¹á·ááá¹á· ááá¹áá¼á¬á¸áá«",namedistance:"{way_name}ââá±áááá¼áá¹{distance}á±áá¬áá¹ááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«"},"sharp right":{default:"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«"},"slight left":{default:"ááá¹ááá¹ á¡ááá¹á¸ááá¹á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á¡ááá¹á¸ááá¹á±áá¼ááá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«"},"slight right":{default:"áá¬ááá¹ á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ áá¬ááá¹á¡ááá¹á¸ááá¹á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá¬ááá¹á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼áá±áá¼áá»áá®á¸ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},depart:{default:{default:"{direction}ááá¯á á¥á®á¸ááá¹áá«",name:"{direction}ááᯠ{way_name}á¡á±áááá¼áá¹ á¥á®á¸ááá¹áá«",namedistance:"{direction}ááᯠ{way_name}á¡á±áááá¼áá¹{distance}á±áá¬áá¹ á¥á®á¸ááá¹ááá¹áá¼á¬á¸áá«"}},"end of road":{default:{default:"{modifier}ááá¯ááá½áá¹á·áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá½áá¹á·áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá½áá¹ááá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«"},uturn:{default:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹ á-á±áá¼áá±áá¼ááá«",name:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹ {way_name}ââá±ááááá¯áá-á±áá¼áá±áá¼ááá«",destination:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},fork:{default:{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ {modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},"slight left":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠááá¹áá¼á¬á¸áá«"},"slight right":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹áá¬ááá¹ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ááá¯áá¼á¬á¸áá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"sharp right":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ááá¯áá¼á¬á¸áá«",name:"{way_name}âá±ááááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¯áá-á±áá¼áá±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},merge:{default:{default:"{modifier}ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},straight:{default:"áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯á áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"slight left":{default:"ááá¹ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"slight right":{default:"áá¬ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"sharp right":{default:"áá¬ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá« ",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},"new name":{default:{default:"{modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"sharp right":{default:"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸áá°áá«",name:"{way_name}âá±ááááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"slight left":{default:"ááá¹ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«"},"slight right":{default:"áá¬ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},notification:{default:{default:"{modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},"off ramp":{default:{default:"ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯á {exit} ááá¯áá°áá«"},left:{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},right:{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},"sharp right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"},"slight left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},"slight right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"}},"on ramp":{default:{default:"ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},left:{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},right:{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"sharp right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"slight left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"slight right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"}},rotary:{default:{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¯áááá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«Â ",destination:"{destination}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«"},name:{default:"{rotary_name}ááá¯áááá¹áá«",name:"{rotary_name}á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"{rotary_name}á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{destination}áá®ááá¯ááá¼áá¹áá«"},exit:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬á»ááá¹áá¼áá¹áá«",name:"á¡ááá¯áá¹á¸ááá¹ááá¯áááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"},name_exit:{default:"{rotary_name}ááá¯ááá¹á»áá®á¸ {exit_number}ááá¯áá°áá¬áá¼áá¹áá«",name:"{rotary_name}ááá¯ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"{rotary_name}ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"}}},roundabout:{default:{exit:{default:"{exit_number}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"},default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"{destination}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«"}}},"roundabout turn":{default:{default:"{modifier}ááá¯áá½áá¹á·áá«Â ",name:"{modifier}âá±ááááá¯{way_name}ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{modifier}áá®ááá¯á{destination}ááᯠááá¹áá¼á¬á¸áá«Â "},left:{default:"ááá¹ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ á±áá¼ááá«"},right:{default:"áá¬ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«Â ",destination:"{destination}áá¬ááá¹ááá¯á á±áá¼ááá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«"}},"exit roundabout":{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«{destination}"}},"exit rotary":{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«{destination}"}},turn:{default:{default:"{modifier}ááá¯áá½áá¹á·áá«Â ",name:"{modifier}âá±ááááá¯{way_name}ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{modifier}áá®ááá¯á{destination}ááᯠááá¹áá¼á¬á¸áá«Â "},left:{default:"ááá¹ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{destination}ááá¹ááá¹ááá¯á á±áá¼ááá«"},right:{default:"áá¬ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«Â ",destination:"{destination}áá¬ááá¹ááá¯á á±áá¼ááá«"},straight:{default:"ááá¹áááá¹ááá¼á¬á¸áá«",name:"{way_name}",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá«"}},"use lane":{no_lanes:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«"},default:{default:"{lane_instruction}"}}}}},{}],36:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1e",2:"2e",3:"3e",4:"4e",5:"5e",6:"6e",7:"7e",8:"8e",9:"9e",10:"10e"},direction:{north:"noord",northeast:"noordoost",east:"oost",southeast:"zuidoost",south:"zuid",southwest:"zuidwest",west:"west",northwest:"noordwest"},modifier:{left:"links",right:"rechts","sharp left":"scherpe bocht naar links","sharp right":"scherpe bocht naar rechts","slight left":"iets naar links","slight right":"iets naar rechts",straight:"rechtdoor",uturn:"omkeren"},lanes:{xo:"Rechts aanhouden",ox:"Links aanhouden",xox:"In het midden blijven",oxo:"Links of rechts blijven"}},modes:{ferry:{default:"Neem de veerpont",name:"Neem de veerpont {way_name}",destination:"Neem de veerpont richting {destination}"}},phrase:{"two linked by distance":"{instruction_one}, dan na {distance}, {instruction_two}","two linked":"{instruction_one}, daarna {instruction_two}","one in distance":"Over {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"afslag {exit}"},arrive:{default:{default:"Je bent gearriveerd op de {nth} bestemming.",upcoming:"U arriveert op de {nth} bestemming",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}"},left:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},right:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"sharp left":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},"sharp right":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"slight right":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"slight left":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},straight:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich voor je.",upcoming:"Uw {nth} bestemming is recht voor u",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is recht voor u"}},continue:{default:{default:"Ga {modifier}",name:"Sla {modifier} om op {way_name} te blijven",destination:"Ga {modifier} richting {destination}",exit:"Ga {modifier} naar {way_name}"},straight:{default:"Ga rechtdoor",name:"Blijf rechtdoor gaan op {way_name}",destination:"Ga rechtdoor richting {destination}",distance:"Ga rechtdoor voor {distance}",namedistance:"Ga verder op {way_name} voor {distance}"},"sharp left":{default:"Linksaf",name:"Sla scherp links af om op {way_name} te blijven",destination:"Linksaf richting {destination}"},"sharp right":{default:"Rechtsaf",name:"Sla scherp rechts af om op {way_name} te blijven",destination:"Rechtsaf richting {destination}"},"slight left":{default:"Ga links",name:"Links afbuigen om op {way_name} te blijven",destination:"Rechts afbuigen om op {destination} te blijven"},"slight right":{default:"Rechts afbuigen",name:"Rechts afbuigen om op {way_name} te blijven",destination:"Rechts afbuigen richting {destination}"},uturn:{default:"Keer om",name:"Draai om en ga verder op {way_name}",destination:"Keer om richting {destination}"}},depart:{default:{default:"Vertrek in {direction}elijke richting",name:"Neem {way_name} in {direction}elijke richting",namedistance:"Ga richting {direction} op {way_name} voor {distance}"}},"end of road":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga naar {way_name}",destination:"Ga richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},fork:{default:{default:"Ga {modifier} op de splitsing",name:"Houd {modifier} aan, tot {way_name}",destination:"Houd {modifier}, in de richting van {destination}"},"slight left":{default:"Links aanhouden op de splitsing",name:"Houd links aan, tot {way_name}",destination:"Houd links aan, richting {destination}"},"slight right":{default:"Rechts aanhouden op de splitsing",name:"Houd rechts aan, tot {way_name}",destination:"Houd rechts aan, richting {destination}"},"sharp left":{default:"Neem bij de splitsing, een scherpe bocht, naar links ",name:"Neem een scherpe bocht naar links, tot aan {way_name}",destination:"Neem een scherpe bocht naar links, richting {destination}"},"sharp right":{default:"Neem op de splitsing, een scherpe bocht, naar rechts",name:"Neem een scherpe bocht naar rechts, tot aan {way_name}",destination:"Neem een scherpe bocht naar rechts, richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},merge:{default:{default:"Bij de splitsing {modifier}",name:"Bij de splitsing {modifier} naar {way_name}",destination:"Bij de splitsing {modifier} richting {destination}"},straight:{default:"Samenvoegen",name:"Ga verder op {way_name}",destination:"Ga verder richting {destination}"},"slight left":{default:"Bij de splitsing links aanhouden",name:"Bij de splitsing links aanhouden naar {way_name}",destination:"Bij de splitsing links aanhouden richting {destination}"},"slight right":{default:"Bij de splitsing rechts aanhouden",name:"Bij de splitsing rechts aanhouden naar {way_name}",destination:"Bij de splitsing rechts aanhouden richting {destination}"},"sharp left":{default:"Bij de splitsing linksaf",name:"Bij de splitsing linksaf naar {way_name}",destination:"Bij de splitsing linksaf richting {destination}"},"sharp right":{default:"Bij de splitsing rechtsaf",name:"Bij de splitsing rechtsaf naar {way_name}",destination:"Bij de splitsing rechtsaf richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},"new name":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga rechtdoor naar {way_name}",destination:"Ga rechtdoor richting {destination}"},"sharp left":{default:"Neem een scherpe bocht, naar links",name:"Linksaf naar {way_name}",destination:"Linksaf richting {destination}"},"sharp right":{default:"Neem een scherpe bocht, naar rechts",name:"Rechtsaf naar {way_name}",destination:"Rechtsaf richting {destination}"},"slight left":{default:"Links aanhouden",name:"Links aanhouden naar {way_name}",destination:"Links aanhouden richting {destination}"},"slight right":{default:"Rechts aanhouden",name:"Rechts aanhouden naar {way_name}",destination:"Rechts aanhouden richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},notification:{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},"off ramp":{default:{default:"Neem de afrit",name:"Neem de afrit naar {way_name}",destination:"Neem de afrit richting {destination}",exit:"Neem afslag {exit}",exit_destination:"Neem afslag {exit} richting {destination}"},left:{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},right:{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"},"sharp left":{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},"sharp right":{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"},"slight left":{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},"slight right":{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"}},"on ramp":{default:{default:"Neem de oprit",name:"Neem de oprit naar {way_name}",destination:"Neem de oprit richting {destination}"},left:{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},right:{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"},"sharp left":{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},"sharp right":{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"},"slight left":{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},"slight right":{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"}},rotary:{default:{default:{default:"Betreedt de rotonde",name:"Betreedt rotonde en sla af op {way_name}",destination:"Betreedt rotonde en sla af richting {destination}"},name:{default:"Ga het knooppunt {rotary_name} op",name:"Verlaat het knooppunt {rotary_name} naar {way_name}",destination:"Verlaat het knooppunt {rotary_name} richting {destination}"},exit:{default:"Betreedt rotonde en neem afslag {exit_number}",name:"Betreedt rotonde en neem afslag {exit_number} naar {way_name}",destination:"Betreedt rotonde en neem afslag {exit_number} richting {destination}"},name_exit:{default:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number}",name:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number} naar {way_name}",destination:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number} richting {destination}"}}},roundabout:{default:{exit:{default:"Betreedt rotonde en neem afslag {exit_number}",name:"Betreedt rotonde en neem afslag {exit_number} naar {way_name}",destination:"Betreedt rotonde en neem afslag {exit_number} richting {destination}"},default:{default:"Betreedt de rotonde",name:"Betreedt rotonde en sla af op {way_name}",destination:"Betreedt rotonde en sla af richting {destination}"}}},"roundabout turn":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},left:{default:"Ga linksaf",name:"Ga linksaf naar {way_name}",destination:"Ga linksaf richting {destination}"},right:{default:"Ga rechtsaf",name:"Ga rechtsaf naar {way_name}",destination:"Ga rechtsaf richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga naar {way_name}",destination:"Ga richting {destination}"}},"exit roundabout":{default:{default:"Verlaat de rotonde",name:"Verlaat de rotonde en ga verder op {way_name}",destination:"Verlaat de rotonde richting {destination}"}},"exit rotary":{default:{default:"Verlaat de rotonde",name:"Verlaat de rotonde en ga verder op {way_name}",destination:"Verlaat de rotonde richting {destination}"}},turn:{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},left:{default:"Ga linksaf",name:"Ga linksaf naar {way_name}",destination:"Ga linksaf richting {destination}"},right:{default:"Ga rechtsaf",name:"Ga rechtsaf naar {way_name}",destination:"Ga rechtsaf richting {destination}"},straight:{default:"Ga rechtdoor",name:"Ga rechtdoor naar {way_name}",destination:"Ga rechtdoor richting {destination}"}},"use lane":{no_lanes:{default:"Rechtdoor"},default:{default:"{lane_instruction}"}}}}},{}],37:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"nord",northeast:"nordøst",east:"øst",southeast:"sørøst",south:"sør",southwest:"sørvest",west:"vest",northwest:"nordvest"},modifier:{left:"venstre",right:"høyre","sharp left":"skarp venstre","sharp right":"skarp høyre","slight left":"litt til venstre","slight right":"litt til høyre",straight:"rett frem", 2174uturn:"U-sving"},lanes:{xo:"Hold til høyre",ox:"Hold til venstre",xox:"Hold deg i midten",oxo:"Hold til venstre eller høyre"}},modes:{ferry:{default:"Ta ferja",name:"Ta ferja {way_name}",destination:"Ta ferja til {destination}"}},phrase:{"two linked by distance":"{instruction_one}, deretter {instruction_two} om {distance}","two linked":"{instruction_one}, deretter {instruction_two}","one in distance":"Om {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"avkjørsel {exit}"},arrive:{default:{default:"Du har ankommet din {nth} destinasjon",upcoming:"Du vil ankomme din {nth} destinasjon",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}"},left:{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},right:{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"sharp left":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},"sharp right":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"slight right":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"slight left":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},straight:{default:"Du har ankommet din {nth} destinasjon, rett forut",upcoming:"Du vil ankomme din {nth} destinasjon, rett forut",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, rett forut"}},continue:{default:{default:"Ta til {modifier}",name:"Ta til {modifier} for Ã¥ bli værende pÃ¥ {way_name}",destination:"Ta til {modifier} mot {destination}",exit:"Ta til {modifier} inn pÃ¥ {way_name}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem for Ã¥ bli værende pÃ¥ {way_name}",destination:"Fortsett mot {destination}",distance:"Fortsett rett frem, {distance} ",namedistance:"Fortsett pÃ¥ {way_name}, {distance}"},"sharp left":{default:"Sving skarpt til venstre",name:"Sving skarpt til venstre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre",name:"Sving skarpt til høyre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving skarpt mot {destination}"},"slight left":{default:"Sving svakt til venstre",name:"Sving svakt til venstre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving svakt til venstre mot {destination}"},"slight right":{default:"Sving svakt til høyre",name:"Sving svakt til høyre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving svakt til høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving og fortsett pÃ¥ {way_name}",destination:"Ta en U-sving mot {destination}"}},depart:{default:{default:"Kjør i retning {direction}",name:"Kjør i retning {direction} pÃ¥ {way_name}",namedistance:"Kjør i retning {direction} pÃ¥ {way_name}, {distance}"}},"end of road":{default:{default:"Sving {modifier}",name:"Ta til {modifier} inn pÃ¥ {way_name}",destination:"Sving {modifier} mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem til {way_name}",destination:"Fortsett rett frem mot {destination}"},uturn:{default:"Ta en U-sving i enden av veien",name:"Ta en U-sving til {way_name} i enden av veien",destination:"Ta en U-sving mot {destination} i enden av veien"}},fork:{default:{default:"Hold til {modifier} i veikrysset",name:"Hold til {modifier} inn pÃ¥ {way_name}",destination:"Hold til {modifier} mot {destination}"},"slight left":{default:"Hold til venstre i veikrysset",name:"Hold til venstre inn pÃ¥ {way_name}",destination:"Hold til venstre mot {destination}"},"slight right":{default:"Hold til høyre i veikrysset",name:"Hold til høyre inn pÃ¥ {way_name}",destination:"Hold til høyre mot {destination}"},"sharp left":{default:"Sving skarpt til venstre i veikrysset",name:"Sving skarpt til venstre inn pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre i veikrysset",name:"Sving skarpt til høyre inn pÃ¥ {way_name}",destination:"Svings skarpt til høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},merge:{default:{default:"Hold {modifier} kjørefelt",name:"Hold {modifier} kjørefelt inn pÃ¥ {way_name}",destination:"Hold {modifier} kjørefelt mot {destination}"},straight:{default:"Hold kjørefelt",name:"Hold kjørefelt inn pÃ¥ {way_name}",destination:"Hold kjørefelt mot {destination}"},"slight left":{default:"Hold venstre kjørefelt",name:"Hold venstre kjørefelt inn pÃ¥ {way_name}",destination:"Hold venstre kjørefelt mot {destination}"},"slight right":{default:"Hold høyre kjørefelt",name:"Hold høyre kjørefelt inn pÃ¥ {way_name}",destination:"Hold høyre kjørefelt mot {destination}"},"sharp left":{default:"Hold venstre kjørefelt",name:"Hold venstre kjørefelt inn pÃ¥ {way_name}",destination:"Hold venstre kjørefelt mot {destination}"},"sharp right":{default:"Hold høyre kjørefelt",name:"Hold høyre kjørefelt inn pÃ¥ {way_name}",destination:"Hold høyre kjørefelt mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},"new name":{default:{default:"Fortsett {modifier}",name:"Fortsett {modifier} til {way_name}",destination:"Fortsett {modifier} mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett inn pÃ¥ {way_name}",destination:"Fortsett mot {destination}"},"sharp left":{default:"Sving skarpt til venstre",name:"Sving skarpt til venstre inn pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre",name:"Sving skarpt til høyre inn pÃ¥ {way_name}",destination:"Svings skarpt til høyre mot {destination}"},"slight left":{default:"Fortsett litt mot venstre",name:"Fortsett litt mot venstre til {way_name}",destination:"Fortsett litt mot venstre mot {destination}"},"slight right":{default:"Fortsett litt mot høyre",name:"Fortsett litt mot høyre til {way_name}",destination:"Fortsett litt mot høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},notification:{default:{default:"Fortsett {modifier}",name:"Fortsett {modifier} til {way_name}",destination:"Fortsett {modifier} mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},"off ramp":{default:{default:"Ta avkjørselen",name:"Ta avkjørselen inn pÃ¥ {way_name}",destination:"Ta avkjørselen mot {destination}",exit:"Ta avkjørsel {exit}",exit_destination:"Ta avkjørsel {exit} mot {destination}"},left:{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},right:{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"},"sharp left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},"sharp right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"},"slight left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},"slight right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"}},"on ramp":{default:{default:"Ta avkjørselen",name:"Ta avkjørselen inn pÃ¥ {way_name}",destination:"Ta avkjørselen mot {destination}"},left:{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},right:{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"},"sharp left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},"sharp right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"},"slight left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},"slight right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"}},rotary:{default:{default:{default:"Kjør inn i rundkjøringen",name:"Kjør inn i rundkjøringen og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og deretter ut mot {destination}"},name:{default:"Kjør inn i {rotary_name}",name:"Kjør inn i {rotary_name} og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i {rotary_name} og deretter ut mot {destination}"},exit:{default:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel",name:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut mot {destination} "},name_exit:{default:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel",name:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel inn pÃ¥ {way_name}",destination:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel mot {destination}"}}},roundabout:{default:{exit:{default:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel",name:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel inn pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut mot {destination} "},default:{default:"Kjør inn i rundkjøringen",name:"Kjør inn i rundkjøringen og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og deretter ut mot {destination}"}}},"roundabout turn":{default:{default:"Ta en {modifier}",name:"Ta en {modifier} inn pÃ¥ {way_name}",destination:"Ta en {modifier} mot {destination}"},left:{default:"Sving til venstre",name:"Sving til venstre inn pÃ¥ {way_name}",destination:"Sving til venstre mot {destination}"},right:{default:"Sving til høyre",name:"Sving til høyre inn pÃ¥ {way_name}",destination:"Sving til høyre mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem til {way_name}",destination:"Fortsett rett frem mot {destination}"}},"exit roundabout":{default:{default:"Kjør ut av rundkjøringen",name:"Kjør ut av rundkjøringen og inn pÃ¥ {way_name}",destination:"Kjør ut av rundkjøringen mot {destination}"}},"exit rotary":{default:{default:"Kjør ut av rundkjøringen",name:"Kjør ut av rundkjøringen og inn pÃ¥ {way_name}",destination:"Kjør ut av rundkjøringen mot {destination}"}},turn:{default:{default:"Ta en {modifier}",name:"Ta en {modifier} inn pÃ¥ {way_name}",destination:"Ta en {modifier} mot {destination}"},left:{default:"Sving til venstre",name:"Sving til venstre inn pÃ¥ {way_name}",destination:"Sving til venstre mot {destination}"},right:{default:"Sving til høyre",name:"Sving til høyre inn pÃ¥ {way_name}",destination:"Sving til høyre mot {destination}"},straight:{default:"Kjør rett frem",name:"Kjør rett frem og inn pÃ¥ {way_name}",destination:"Kjør rett frem mot {destination}"}},"use lane":{no_lanes:{default:"Fortsett rett frem"},default:{default:"{lane_instruction}"}}}}},{}],38:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"póÅnoc",northeast:"póÅnocny wschód",east:"wschód",southeast:"poÅudniowy wschód",south:"poÅudnie",southwest:"poÅudniowy zachód",west:"zachód",northwest:"póÅnocny zachód"},modifier:{left:"lewo",right:"prawo","sharp left":"ostro w lewo","sharp right":"ostro w prawo","slight left":"Åagodnie w lewo","slight right":"Åagodnie w prawo",straight:"prosto",uturn:"zawróÄ"},lanes:{xo:"Trzymaj siÄ prawej strony",ox:"Trzymaj siÄ lewej strony",xox:"Trzymaj siÄ Årodka",oxo:"Trzymaj siÄ lewej lub prawej strony"}},modes:{ferry:{default:"Weź prom",name:"Weź prom {way_name}",destination:"Weź prom w kierunku {destination}"}},phrase:{"two linked by distance":"{instruction_one}, nastÄpnie za {distance} {instruction_two}","two linked":"{instruction_one}, nastÄpnie {instruction_two}","one in distance":"Za {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Dojechano do miejsca docelowego {nth}",upcoming:"Dojechano do miejsca docelowego {nth}",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}"},left:{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},right:{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"sharp left":{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},"sharp right":{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"slight right":{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"slight left":{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},straight:{default:"Dojechano do miejsca docelowego {nth} , prosto",upcoming:"Dojechano do miejsca docelowego {nth} , prosto",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, prosto"}},continue:{default:{default:"SkrÄÄ {modifier}",name:"SkrÄÄ w {modifier}, aby pozostaÄ na {way_name}",destination:"SkrÄÄ {modifier} w kierunku {destination}",exit:"SkrÄÄ {modifier} na {way_name}"},straight:{default:"Kontynuuj prosto",name:"Jedź dalej prosto, aby pozostaÄ na {way_name}",destination:"Kontynuuj w kierunku {destination}",distance:"Jedź dalej prosto przez {distance}",namedistance:"Jedź dalej {way_name} przez {distance}"},"sharp left":{default:"SkrÄÄ ostro w lewo",name:"SkrÄÄ w lewo w ostry zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"SkrÄÄ ostro w prawo",name:"SkrÄÄ w prawo w ostry zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},"slight left":{default:"SkrÄÄ w lewo w Åagodny zakrÄt",name:"SkrÄÄ w lewo w Åagodny zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ w lewo w Åagodny zakrÄt na {destination}"},"slight right":{default:"SkrÄÄ w prawo w Åagodny zakrÄt",name:"SkrÄÄ w prawo w Åagodny zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ w prawo w Åagodny zakrÄt na {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä i jedź dalej {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},depart:{default:{default:"Kieruj siÄ {direction}",name:"Kieruj siÄ {direction} na {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"SkrÄÄ {modifier}",name:"SkrÄÄ {modifier} na {way_name}",destination:"SkrÄÄ {modifier} w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"},uturn:{default:"ZawrÃ³Ä na koÅcu ulicy",name:"ZawrÃ³Ä na koÅcu ulicy na {way_name}",destination:"ZawrÃ³Ä na koÅcu ulicy w kierunku {destination}"}},fork:{default:{default:"Na rozwidleniu trzymaj siÄ {modifier}",name:"Na rozwidleniu trzymaj siÄ {modifier} na {way_name}",destination:"Na rozwidleniu trzymaj siÄ {modifier} w kierunku {destination}"},"slight left":{default:"Na rozwidleniu trzymaj siÄ lewej strony",name:"Na rozwidleniu trzymaj siÄ lewej strony w {way_name}",destination:"Na rozwidleniu trzymaj siÄ lewej strony w kierunku {destination}"},"slight right":{default:"Na rozwidleniu trzymaj siÄ prawej strony",name:"Na rozwidleniu trzymaj siÄ prawej strony na {way_name}",destination:"Na rozwidleniu trzymaj siÄ prawej strony w kierunku {destination}"},"sharp left":{default:"Na rozwidleniu skrÄÄ ostro w lewo",name:"SkrÄÄ ostro w lewo w {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"Na rozwidleniu skrÄÄ ostro w prawo",name:"SkrÄÄ ostro w prawo na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},merge:{default:{default:"WÅÄ cz siÄ {modifier}",name:"WÅÄ cz siÄ {modifier} na {way_name}",destination:"WÅÄ cz siÄ {modifier} w kierunku {destination}"},straight:{default:"WÅÄ cz siÄ prosto",name:"WÅÄ cz siÄ prosto na {way_name}",destination:"WÅÄ cz siÄ prosto w kierunku {destination}"},"slight left":{default:"WÅÄ cz siÄ z lewej strony",name:"WÅÄ cz siÄ z lewej strony na {way_name}",destination:"WÅÄ cz siÄ z lewej strony w kierunku {destination}"},"slight right":{default:"WÅÄ cz siÄ z prawej strony",name:"WÅÄ cz siÄ z prawej strony na {way_name}",destination:"WÅÄ cz siÄ z prawej strony w kierunku {destination}"},"sharp left":{default:"WÅÄ cz siÄ z lewej strony",name:"WÅÄ cz siÄ z lewej strony na {way_name}",destination:"WÅÄ cz siÄ z lewej strony w kierunku {destination}"},"sharp right":{default:"WÅÄ cz siÄ z prawej strony",name:"WÅÄ cz siÄ z prawej strony na {way_name}",destination:"WÅÄ cz siÄ z prawej strony w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},"new name":{default:{default:"Kontynuuj {modifier}",name:"Kontynuuj {modifier} na {way_name}",destination:"Kontynuuj {modifier} w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj na {way_name}",destination:"Kontynuuj w kierunku {destination}"},"sharp left":{default:"SkrÄÄ ostro w lewo",name:"SkrÄÄ ostro w lewo w {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"SkrÄÄ ostro w prawo",name:"SkrÄÄ ostro w prawo na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},"slight left":{default:"Kontynuuj Åagodnie w lewo",name:"Kontynuuj Åagodnie w lewo na {way_name}",destination:"Kontynuuj Åagodnie w lewo w kierunku {destination}"},"slight right":{default:"Kontynuuj Åagodnie w prawo",name:"Kontynuuj Åagodnie w prawo na {way_name}",destination:"Kontynuuj Åagodnie w prawo w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},notification:{default:{default:"Kontynuuj {modifier}",name:"Kontynuuj {modifier} na {way_name}",destination:"Kontynuuj {modifier} w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},"off ramp":{default:{default:"Zjedź",name:"Weź zjazd na {way_name}",destination:"Weź zjazd w kierunku {destination}",exit:"Zjedź zjazdem {exit}",exit_destination:"Zjedź zjazdem {exit} na {destination}"},left:{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},right:{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"},"sharp left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},"sharp right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"},"slight left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},"slight right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"}},"on ramp":{default:{default:"Weź zjazd",name:"Weź zjazd na {way_name}",destination:"Weź zjazd w kierunku {destination}"},left:{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},right:{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"},"sharp left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},"sharp right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"},"slight left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},"slight right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"}},rotary:{default:{default:{default:"Wjedź na rondo",name:"Wjedź na rondo i skrÄÄ na {way_name}",destination:"Wjedź na rondo i skrÄÄ w kierunku {destination}"},name:{default:"Wjedź na {rotary_name}",name:"Wjedź na {rotary_name} i skrÄÄ na {way_name}",destination:"Wjedź na {rotary_name} i skrÄÄ w kierunku {destination}"},exit:{default:"Wjedź na rondo i wyjedź {exit_number} zjazdem",name:"Wjedź na rondo i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na rondo i wyjedź {exit_number} zjazdem w kierunku {destination}"},name_exit:{default:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem",name:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem w kierunku {destination}"}}},roundabout:{default:{exit:{default:"Wjedź na rondo i wyjedź {exit_number} zjazdem",name:"Wjedź na rondo i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na rondo i wyjedź {exit_number} zjazdem w kierunku {destination}"},default:{default:"Wjedź na rondo",name:"Wjedź na rondo i wyjedź na {way_name}",destination:"Wjedź na rondo i wyjedź w kierunku {destination}"}}},"roundabout turn":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"}},"exit roundabout":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"}},"exit rotary":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Jedź prosto",name:"Jedź prosto na {way_name}",destination:"Jedź prosto w kierunku {destination}"}},turn:{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Jedź prosto",name:"Jedź prosto na {way_name}",destination:"Jedź prosto w kierunku {destination}"}},"use lane":{no_lanes:{default:"Kontynuuj prosto"},default:{default:"{lane_instruction}"}}}}},{}],39:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1º",2:"2º",3:"3º",4:"4º",5:"5º",6:"6º",7:"7º",8:"8º",9:"9º",10:"10º"},direction:{north:"norte",northeast:"nordeste",east:"leste",southeast:"sudeste",south:"sul",southwest:"sudoeste",west:"oeste",northwest:"noroeste"},modifier:{left:"à esquerda",right:"à direita","sharp left":"fechada à esquerda","sharp right":"fechada à direita","slight left":"suave à esquerda","slight right":"suave à direita",straight:"em frente",uturn:"retorno"},lanes:{xo:"Mantenha-se à direita",ox:"Mantenha-se à esquerda",xox:"Mantenha-se ao centro",oxo:"Mantenha-se à esquerda ou direita"}},modes:{ferry:{default:"Pegue a balsa",name:"Pegue a balsa {way_name}",destination:"Pegue a balsa sentido {destination}"}},phrase:{"two linked by distance":"{instruction_one}, então, em {distance}, {instruction_two}","two linked":"{instruction_one}, então {instruction_two}","one in distance":"Em {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"saÃda {exit}"},arrive:{default:{default:"Você chegou ao seu {nth} destino",upcoming:"Você chegará ao seu {nth} destino",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou a {waypoint_name}"},left:{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},right:{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"sharp left":{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},"sharp right":{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"slight right":{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"slight left":{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},straight:{default:"Você chegou ao seu {nth} destino, em frente",upcoming:"Você vai chegar ao seu {nth} destino, em frente",short:"Você chegou","short-upcoming":"Você vai chegar",named:"You have arrived at {waypoint_name}, straight ahead"}},continue:{default:{default:"Vire {modifier}",name:"Vire {modifier} para manter-se na {way_name}",destination:"Vire {modifier} sentido {destination}",exit:"Vire {modifier} em {way_name}"},straight:{default:"Continue em frente",name:"Continue em frente para manter-se na {way_name}",destination:"Continue em direção à {destination}",distance:"Continue em frente por {distance}",namedistance:"Continue na {way_name} por {distance}"},"sharp left":{default:"Faça uma curva fechada a esquerda",name:"Faça uma curva fechada a esquerda para manter-se na {way_name}",destination:"Faça uma curva fechada a esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada a direita",name:"Faça uma curva fechada a direita para manter-se na {way_name}",destination:"Faça uma curva fechada a direita sentido {destination}"},"slight left":{default:"Faça uma curva suave a esquerda",name:"Faça uma curva suave a esquerda para manter-se na {way_name}",destination:"Faça uma curva suave a esquerda em direção a {destination}"},"slight right":{default:"Faça uma curva suave a direita", 2175name:"Faça uma curva suave a direita para manter-se na {way_name}",destination:"Faça uma curva suave a direita em direção a {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno e continue em {way_name}",destination:"Faça o retorno sentido {destination}"}},depart:{default:{default:"Siga {direction}",name:"Siga {direction} em {way_name}",namedistance:"Siga {direction} na {way_name} por {distance}"}},"end of road":{default:{default:"Vire {modifier}",name:"Vire {modifier} em {way_name}",destination:"Vire {modifier} sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em frente em {way_name}",destination:"Continue em frente sentido {destination}"},uturn:{default:"Faça o retorno no fim da rua",name:"Faça o retorno em {way_name} no fim da rua",destination:"Faça o retorno sentido {destination} no fim da rua"}},fork:{default:{default:"Mantenha-se {modifier} na bifurcação",name:"Mantenha-se {modifier} na bifurcação em {way_name}",destination:"Mantenha-se {modifier} na bifurcação sentido {destination}"},"slight left":{default:"Mantenha-se à esquerda na bifurcação",name:"Mantenha-se à esquerda na bifurcação em {way_name}",destination:"Mantenha-se à esquerda na bifurcação sentido {destination}"},"slight right":{default:"Mantenha-se à direita na bifurcação",name:"Mantenha-se à direita na bifurcação em {way_name}",destination:"Mantenha-se à direita na bifurcação sentido {destination}"},"sharp left":{default:"Faça uma curva fechada à esquerda na bifurcação",name:"Faça uma curva fechada à esquerda em {way_name}",destination:"Faça uma curva fechada à esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada à direita na bifurcação",name:"Faça uma curva fechada à direita em {way_name}",destination:"Faça uma curva fechada à direita sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},merge:{default:{default:"Entre {modifier}",name:"Entre {modifier} na {way_name}",destination:"Entre {modifier} em direção à {destination}"},straight:{default:"Mesclar",name:"Entre reto na {way_name}",destination:"Entre reto em direção à {destination}"},"slight left":{default:"Entre à esquerda",name:"Entre à esquerda na {way_name}",destination:"Entre à esquerda em direção à {destination}"},"slight right":{default:"Entre à direita",name:"Entre à direita na {way_name}",destination:"Entre à direita em direção à {destination}"},"sharp left":{default:"Entre à esquerda",name:"Entre à esquerda na {way_name}",destination:"Entre à esquerda em direção à {destination}"},"sharp right":{default:"Entre à direita",name:"Entre à direita na {way_name}",destination:"Entre à direita em direção à {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} em {way_name}",destination:"Continue {modifier} sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em {way_name}",destination:"Continue em direção à {destination}"},"sharp left":{default:"Faça uma curva fechada à esquerda",name:"Faça uma curva fechada à esquerda em {way_name}",destination:"Faça uma curva fechada à esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada à direita",name:"Faça uma curva fechada à direita em {way_name}",destination:"Faça uma curva fechada à direita sentido {destination}"},"slight left":{default:"Continue ligeiramente à esquerda",name:"Continue ligeiramente à esquerda em {way_name}",destination:"Continue ligeiramente à esquerda sentido {destination}"},"slight right":{default:"Continue ligeiramente à direita",name:"Continue ligeiramente à direita em {way_name}",destination:"Continue ligeiramente à direita sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} em {way_name}",destination:"Continue {modifier} sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},"off ramp":{default:{default:"Pegue a rampa",name:"Pegue a rampa em {way_name}",destination:"Pegue a rampa sentido {destination}",exit:"Pegue a saÃda {exit}",exit_destination:"Pegue a saÃda {exit} em direção à {destination}"},left:{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},right:{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"},"sharp left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},"sharp right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"},"slight left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},"slight right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"}},"on ramp":{default:{default:"Pegue a rampa",name:"Pegue a rampa em {way_name}",destination:"Pegue a rampa sentido {destination}"},left:{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},right:{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentid {destination}"},"sharp left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},"sharp right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}"},"slight left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},"slight right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}"}},rotary:{default:{default:{default:"Entre na rotatória",name:"Entre na rotatória e saia na {way_name}",destination:"Entre na rotatória e saia sentido {destination}"},name:{default:"Entre em {rotary_name}",name:"Entre em {rotary_name} e saia em {way_name}",destination:"Entre em {rotary_name} e saia sentido {destination}"},exit:{default:"Entre na rotatória e pegue a {exit_number} saÃda",name:"Entre na rotatória e pegue a {exit_number} saÃda na {way_name}",destination:"Entre na rotatória e pegue a {exit_number} saÃda sentido {destination}"},name_exit:{default:"Entre em {rotary_name} e saia na {exit_number} saÃda",name:"Entre em {rotary_name} e saia na {exit_number} saÃda em {way_name}",destination:"Entre em {rotary_name} e saia na {exit_number} saÃda sentido {destination}"}}},roundabout:{default:{exit:{default:"Entre na rotatória e pegue a {exit_number} saÃda",name:"Entre na rotatória e pegue a {exit_number} saÃda na {way_name}",destination:"Entre na rotatória e pegue a {exit_number} saÃda sentido {destination}"},default:{default:"Entre na rotatória",name:"Entre na rotatória e saia na {way_name}",destination:"Entre na rotatória e saia sentido {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} em {way_name}",destination:"Siga {modifier} sentido {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda em {way_name}",destination:"Vire à esquerda sentido {destination}"},right:{default:"Vire à direita",name:"Vire à direita em {way_name}",destination:"Vire à direita sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em frente em {way_name}",destination:"Continue em frente sentido {destination}"}},"exit roundabout":{default:{default:"Saia da rotatória",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},"exit rotary":{default:{default:"Saia da rotatória",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},turn:{default:{default:"Siga {modifier}",name:"Siga {modifier} em {way_name}",destination:"Siga {modifier} sentido {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda em {way_name}",destination:"Vire à esquerda sentido {destination}"},right:{default:"Vire à direita",name:"Vire à direita em {way_name}",destination:"Vire à direita sentido {destination}"},straight:{default:"Siga em frente",name:"Siga em frente em {way_name}",destination:"Siga em frente sentido {destination}"}},"use lane":{no_lanes:{default:"Continue em frente"},default:{default:"{lane_instruction}"}}}}},{}],40:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1º",2:"2º",3:"3º",4:"4º",5:"5º",6:"6º",7:"7º",8:"8º",9:"9º",10:"10º"},direction:{north:"norte",northeast:"nordeste",east:"este",southeast:"sudeste",south:"sul",southwest:"sudoeste",west:"oeste",northwest:"noroeste"},modifier:{left:"à esquerda",right:"à direita","sharp left":"acentuadamente à esquerda","sharp right":"acentuadamente à direita","slight left":"ligeiramente à esquerda","slight right":"ligeiramente à direita",straight:"em frente",uturn:"inversão de marcha"},lanes:{xo:"Mantenha-se à direita",ox:"Mantenha-se à esquerda",xox:"Mantenha-se ao meio",oxo:"Mantenha-se à esquerda ou à direita"}},modes:{ferry:{default:"Apanhe o ferry",name:"Apanhe o ferry {way_name}",destination:"Apanhe o ferry para {destination}"}},phrase:{"two linked by distance":"{instruction_one}, depois, a {distance}, {instruction_two}","two linked":"{instruction_one}, depois {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"saÃda {exit}"},arrive:{default:{default:"Chegou ao seu {nth} destino",upcoming:"Está a chegar ao seu {nth} destino",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}"},left:{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},right:{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"sharp left":{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},"sharp right":{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"slight right":{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"slight left":{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},straight:{default:"Chegou ao seu {nth} destino, em frente",upcoming:"Está a chegar ao seu {nth} destino, em frente",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, em frente"}},continue:{default:{default:"Vire {modifier}",name:"Vire {modifier} para se manter em {way_name}",destination:"Vire {modifier} em direção a {destination}",exit:"Vire {modifier} para {way_name}"},straight:{default:"Continue em frente",name:"Continue em frente para se manter em {way_name}",destination:"Continue em direção a {destination}",distance:"Continue em frente por {distance}",namedistance:"Continue em {way_name} por {distance}"},"sharp left":{default:"Vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para se manter em {way_name}",destination:"Vire acentuadamente à esquerda em direção a {destination}"},"sharp right":{default:"Vire acentuadamente à direita",name:"Vire acentuadamente à direita para se manter em {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},"slight left":{default:"Vire ligeiramente à esquerda",name:"Vire ligeiramente à esquerda para se manter em {way_name}",destination:"Vire ligeiramente à esquerda em direção a {destination}"},"slight right":{default:"Vire ligeiramente à direita",name:"Vire ligeiramente à direita para se manter em {way_name}",destination:"Vire ligeiramente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha e continue em {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},depart:{default:{default:"Dirija-se para {direction}",name:"Dirija-se para {direction} em {way_name}",namedistance:"Dirija-se para {direction} em {way_name} por {distance}"}},"end of road":{default:{default:"Vire {modifier}",name:"Vire {modifier} para {way_name}",destination:"Vire {modifier} em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue em frente para {way_name}",destination:"Continue em frente em direção a {destination}"},uturn:{default:"No final da estrada faça uma inversão de marcha",name:"No final da estrada faça uma inversão de marcha para {way_name} ",destination:"No final da estrada faça uma inversão de marcha em direção a {destination}"}},fork:{default:{default:"Na bifurcação mantenha-se {modifier}",name:"Mantenha-se {modifier} para {way_name}",destination:"Mantenha-se {modifier} em direção a {destination}"},"slight left":{default:"Na bifurcação mantenha-se à esquerda",name:"Mantenha-se à esquerda para {way_name}",destination:"Mantenha-se à esquerda em direção a {destination}"},"slight right":{default:"Na bifurcação mantenha-se à direita",name:"Mantenha-se à direita para {way_name}",destination:"Mantenha-se à direita em direção a {destination}"},"sharp left":{default:"Na bifurcação vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para {way_name}",destination:"Vire acentuadamente à esquerda em direção a {destination}"},"sharp right":{default:"Na bifurcação vire acentuadamente à direita",name:"Vire acentuadamente à direita para {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},merge:{default:{default:"Una-se ao tráfego {modifier}",name:"Una-se ao tráfego {modifier} para {way_name}",destination:"Una-se ao tráfego {modifier} em direção a {destination}"},straight:{default:"Una-se ao tráfego",name:" Una-se ao tráfego para {way_name}",destination:"Una-se ao tráfego em direção a {destination}"},"slight left":{default:"Una-se ao tráfego à esquerda",name:"Una-se ao tráfego à esquerda para {way_name}",destination:"Una-se ao tráfego à esquerda em direção a {destination}"},"slight right":{default:"Una-se ao tráfego à direita",name:"Una-se ao tráfego à direita para {way_name}",destination:"Una-se ao tráfego à direita em direção a {destination}"},"sharp left":{default:"Una-se ao tráfego à esquerda",name:"Una-se ao tráfego à esquerda para {way_name}",destination:"Una-se ao tráfego à esquerda em direção a {destination}"},"sharp right":{default:"Una-se ao tráfego à direita",name:"Una-se ao tráfego à direita para {way_name}",destination:"Una-se ao tráfego à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} para {way_name}",destination:"Continue {modifier} em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue para {way_name}",destination:"Continue em direção a {destination}"},"sharp left":{default:"Vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para {way_name}",destination:"Vire acentuadamente à esquerda em direção a{destination}"},"sharp right":{default:"Vire acentuadamente à direita",name:"Vire acentuadamente à direita para {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},"slight left":{default:"Continue ligeiramente à esquerda",name:"Continue ligeiramente à esquerda para {way_name}",destination:"Continue ligeiramente à esquerda em direção a {destination}"},"slight right":{default:"Continue ligeiramente à direita",name:"Continue ligeiramente à direita para {way_name}",destination:"Continue ligeiramente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} para {way_name}",destination:"Continue {modifier} em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},"off ramp":{default:{default:"Saia na saÃda",name:"Saia na saÃda para {way_name}",destination:"Saia na saÃda em direção a {destination}",exit:"Saia na saÃda {exit}",exit_destination:"Saia na saÃda {exit} em direção a {destination}"},left:{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},right:{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"},"sharp left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},"sharp right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"},"slight left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},"slight right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"}},"on ramp":{default:{default:"Saia na saÃda",name:"Saia na saÃda para {way_name}",destination:"Saia na saÃda em direção a {destination}"},left:{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},right:{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"},"sharp left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},"sharp right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"},"slight left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},"slight right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"}},rotary:{default:{default:{default:"Entre na rotunda",name:"Entre na rotunda e saia para {way_name}",destination:"Entre na rotunda e saia em direção a {destination}"},name:{default:"Entre em {rotary_name}",name:"Entre em {rotary_name} e saia para {way_name}",destination:"Entre em {rotary_name} e saia em direção a {destination}"},exit:{default:"Entre na rotunda e saia na saÃda {exit_number}",name:"Entre na rotunda e saia na saÃda {exit_number} para {way_name}",destination:"Entre na rotunda e saia na saÃda {exit_number} em direção a {destination}"},name_exit:{default:"Entre em {rotary_name} e saia na saÃda {exit_number}",name:"Entre em {rotary_name} e saia na saÃda {exit_number} para {way_name}",destination:"Entre em{rotary_name} e saia na saÃda {exit_number} em direção a {destination}"}}},roundabout:{default:{exit:{default:"Entre na rotunda e saia na saÃda {exit_number}",name:"Entre na rotunda e saia na saÃda {exit_number} para {way_name}",destination:"Entre na rotunda e saia na saÃda {exit_number} em direção a {destination}"},default:{default:"Entre na rotunda",name:"Entre na rotunda e saia para {way_name}",destination:"Entre na rotunda e saia em direção a {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} para {way_name}",destination:"Siga {modifier} em direção a {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda para {way_name}",destination:"Vire à esquerda em direção a {destination}"},right:{default:"Vire à direita",name:"Vire à direita para {way_name}",destination:"Vire à direita em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue em frente para {way_name}",destination:"Continue em frente em direção a {destination}"}},"exit roundabout":{default:{default:"Saia da rotunda",name:"Saia da rotunda para {way_name}",destination:"Saia da rotunda em direção a {destination}"}},"exit rotary":{default:{default:"Saia da rotunda",name:"Saia da rotunda para {way_name}",destination:"Saia da rotunda em direção a {destination}"}},turn:{default:{default:"Siga {modifier}",name:"Siga {modifier} para{way_name}",destination:"Siga {modifier} em direção a {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda para {way_name}",destination:"Vire à esquerda em direção a {destination}"},right:{default:"Vire à direita",name:"Vire à direita para {way_name}",destination:"Vire à direita em direção a {destination}"},straight:{default:"Vá em frente",name:"Vá em frente para {way_name}",destination:"Vá em frente em direção a {destination}"}},"use lane":{no_lanes:{default:"Continue em frente"},default:{default:"{lane_instruction}"}}}}},{}],41:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"prima",2:"a doua",3:"a treia",4:"a patra",5:"a cincea",6:"a Èasea",7:"a Èaptea",8:"a opta",9:"a noua",10:"a zecea"},direction:{north:"nord",northeast:"nord-est",east:"est",southeast:"sud-est",south:"sud",southwest:"sud-vest",west:"vest",northwest:"nord-vest"},modifier:{left:"stânga",right:"dreapta","sharp left":"puternic stânga","sharp right":"puternic dreapta","slight left":"uÈor stânga","slight right":"uÈor dreapta",straight:"înainte",uturn:"întoarcere"},lanes:{xo:"ÈineÈi stânga",ox:"ÈineÈi dreapta",xox:"ÈineÈi pe mijloc",oxo:"ÈineÈi pe laterale"}},modes:{ferry:{default:"LuaÈi feribotul",name:"LuaÈi feribotul {way_name}",destination:"LuaÈi feribotul spre {destination}"}},phrase:{"two linked by distance":"{instruction_one}, apoi în {distance}, {instruction_two}","two linked":"{instruction_one} apoi {instruction_two}","one in distance":"Ãn {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"ieÈirea {exit}"},arrive:{default:{default:"AÈi ajuns la {nth} destinaÈie",upcoming:"AÈi ajuns la {nth} destinaÈie",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}"},left:{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},right:{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"sharp left":{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},"sharp right":{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"slight right":{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"slight left":{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},straight:{default:"AÈi ajuns la {nth} destinaÈie, în faÈÄ",upcoming:"AÈi ajuns la {nth} destinaÈie, în faÈÄ",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, în faÈÄ"}},continue:{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}",exit:"ViraÈi {modifier} pe {way_name}"},straight:{default:"MergeÈi înainte",name:"MergeÈi înainte pe {way_name}",destination:"ContinuaÈi spre {destination}",distance:"MergeÈi înainte pentru {distance}",namedistance:"ContinuaÈi pe {way_name} pentru {distance}"},"sharp left":{default:"ViraÈi puternic la stânga",name:"ViraÈi puternic la stânga pe {way_name}",destination:"ViraÈi puternic la stânga spre {destination}"},"sharp right":{default:"ViraÈi puternic la dreapta",name:"ViraÈi puternic la dreapta pe {way_name}",destination:"ViraÈi puternic la dreapta spre {destination}"},"slight left":{default:"ViraÈi uÈor la stânga",name:"ViraÈi uÈor la stânga pe {way_name}",destination:"ViraÈi uÈor la stânga spre {destination}"},"slight right":{default:"ViraÈi uÈor la dreapta",name:"ViraÈi uÈor la dreapta pe {way_name}",destination:"ViraÈi uÈor la dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ Èi continuaÈi pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},depart:{default:{default:"MergeÈi spre {direction}",name:"MergeÈi spre {direction} pe {way_name}",namedistance:"MergeÈi spre {direction} pe {way_name} pentru {distance}"}},"end of road":{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}"},straight:{default:"ContinuaÈi înainte",name:"ContinuaÈi înainte pe {way_name}",destination:"ContinuaÈi înainte spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ la sfârÈitul drumului",name:"ÃntoarceÈi-vÄ pe {way_name} la sfârÈitul drumului",destination:"ÃntoarceÈi-vÄ spre {destination} la sfârÈitul drumului"}},fork:{default:{default:"ÈineÈi {modifier} la bifurcaÈie",name:"ÈineÈi {modifier} la bifurcaÈie pe {way_name}",destination:"ÈineÈi {modifier} la bifurcaÈie spre {destination}"},"slight left":{default:"ÈineÈi pe stânga la bifurcaÈie",name:"ÈineÈi pe stânga la bifurcaÈie pe {way_name}",destination:"ÈineÈi pe stânga la bifurcaÈie spre {destination}"},"slight right":{default:"ÈineÈi pe dreapta la bifurcaÈie",name:"ÈineÈi pe dreapta la bifurcaÈie pe {way_name}",destination:"ÈineÈi pe dreapta la bifurcaÈie spre {destination}"},"sharp left":{default:"ViraÈi puternic stânga la bifurcaÈie",name:"ViraÈi puternic stânga la bifurcaÈie pe {way_name}",destination:"ViraÈi puternic stânga la bifurcaÈie spre {destination}"},"sharp right":{default:"ViraÈi puternic dreapta la bifurcaÈie",name:"ViraÈi puternic dreapta la bifurcaÈie pe {way_name}",destination:"ViraÈi puternic dreapta la bifurcaÈie spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},merge:{default:{default:"IntraÈi în {modifier}",name:"IntraÈi în {modifier} pe {way_name}",destination:"IntraÈi în {modifier} spre {destination}"},straight:{default:"IntraÈi",name:"IntraÈi pe {way_name}",destination:"IntraÈi spre {destination}"},"slight left":{default:"IntraÈi în stânga",name:"IntraÈi în stânga pe {way_name}",destination:"IntraÈi în stânga spre {destination}"},"slight right":{default:"IntraÈi în dreapta",name:"IntraÈi în dreapta pe {way_name}",destination:"IntraÈi în dreapta spre {destination}"},"sharp left":{default:"IntraÈi în stânga",name:"IntraÈi în stânga pe {way_name}",destination:"IntraÈi în stânga spre {destination}"},"sharp right":{default:"IntraÈi în dreapta",name:"IntraÈi în dreapta pe {way_name}",destination:"IntraÈi în dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},"new name":{default:{default:"ContinuaÈi {modifier}",name:"ContinuaÈi {modifier} pe {way_name}",destination:"ContinuaÈi {modifier} spre {destination}"},straight:{default:"ContinuaÈi înainte",name:"ContinuaÈi pe {way_name}",destination:"ContinuaÈi spre {destination}"},"sharp left":{default:"ViraÈi puternic la stânga",name:"ViraÈi puternic la stânga pe {way_name}",destination:"ViraÈi puternic la stânga spre {destination}"},"sharp right":{default:"ViraÈi puternic la dreapta",name:"ViraÈi puternic la dreapta pe {way_name}",destination:"ViraÈi puternic la dreapta spre {destination}"},"slight left":{default:"ContinuaÈi uÈor la stânga",name:"ContinuaÈi uÈor la stânga pe {way_name}",destination:"ContinuaÈi uÈor la stânga spre {destination}"},"slight right":{default:"ContinuaÈi uÈor la dreapta",name:"ContinuaÈi uÈor la dreapta pe {way_name}",destination:"ContinuaÈi uÈor la dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},notification:{default:{default:"ContinuaÈi {modifier}",name:"ContinuaÈi {modifier} pe {way_name}",destination:"ContinuaÈi {modifier} spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},"off ramp":{default:{default:"UrmaÈi breteaua",name:"UrmaÈi breteaua pe {way_name}",destination:"UrmaÈi breteaua spre {destination}",exit:"UrmaÈi ieÈirea {exit}",exit_destination:"UrmaÈi ieÈirea {exit} spre {destination}"},left:{default:"UrmaÈi breteaua din stânga", 2176name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},right:{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"},"sharp left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},"sharp right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"},"slight left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},"slight right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"}},"on ramp":{default:{default:"UrmaÈi breteaua de intrare",name:"UrmaÈi breteaua pe {way_name}",destination:"UrmaÈi breteaua spre {destination}"},left:{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},right:{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"},"sharp left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},"sharp right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"},"slight left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},"slight right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"}},rotary:{default:{default:{default:"IntraÈi în sensul giratoriu",name:"IntraÈi în sensul giratoriu Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi ieÈiÈi spre {destination}"},name:{default:"IntraÈi în {rotary_name}",name:"IntraÈi în {rotary_name} Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în {rotary_name} Èi ieÈiÈi spre {destination}"},exit:{default:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire spre {destination}"},name_exit:{default:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire spre {destination}"}}},roundabout:{default:{exit:{default:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire spre {destination}"},default:{default:"IntraÈi în sensul giratoriu",name:"IntraÈi în sensul giratoriu Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi ieÈiÈi spre {destination}"}}},"roundabout turn":{default:{default:"La sensul giratoriu viraÈi {modifier}",name:"La sensul giratoriu viraÈi {modifier} pe {way_name}",destination:"La sensul giratoriu viraÈi {modifier} spre {destination}"},left:{default:"La sensul giratoriu viraÈi la stânga",name:"La sensul giratoriu viraÈi la stânga pe {way_name}",destination:"La sensul giratoriu viraÈi la stânga spre {destination}"},right:{default:"La sensul giratoriu viraÈi la dreapta",name:"La sensul giratoriu viraÈi la dreapta pe {way_name}",destination:"La sensul giratoriu viraÈi la dreapta spre {destination}"},straight:{default:"La sensul giratoriu continuaÈi înainte",name:"La sensul giratoriu continuaÈi înainte pe {way_name}",destination:"La sensul giratoriu continuaÈi înainte spre {destination}"}},"exit roundabout":{default:{default:"IeÈiÈi din sensul giratoriu",name:"IeÈiÈi din sensul giratoriu pe {way_name}",destination:"IeÈiÈi din sensul giratoriu spre {destination}"}},"exit rotary":{default:{default:"IeÈiÈi din sensul giratoriu",name:"IeÈiÈi din sensul giratoriu pe {way_name}",destination:"IeÈiÈi din sensul giratoriu spre {destination}"}},turn:{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}"},left:{default:"ViraÈi la stânga",name:"ViraÈi la stânga pe {way_name}",destination:"ViraÈi la stânga spre {destination}"},right:{default:"ViraÈi la dreapta",name:"ViraÈi la dreapta pe {way_name}",destination:"ViraÈi la dreapta spre {destination}"},straight:{default:"MergeÈi înainte",name:"MergeÈi înainte pe {way_name}",destination:"MergeÈi înainte spre {destination}"}},"use lane":{no_lanes:{default:"MergeÈi înainte"},default:{default:"{lane_instruction}"}}}}},{}],42:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"пеÑвÑй",2:"вÑоÑой",3:"ÑÑеÑий",4:"ÑеÑвÑÑÑÑй",5:"пÑÑÑй",6:"ÑеÑÑой",7:"ÑедÑмой",8:"воÑÑмой",9:"девÑÑÑй",10:"деÑÑÑÑй"},direction:{north:"ÑевеÑном",northeast:"ÑевеÑо-воÑÑоÑном",east:"воÑÑоÑном",southeast:"Ñго-воÑÑоÑном",south:"Ñжном",southwest:"Ñго-западном",west:"западном",northwest:"ÑевеÑо-западном"},modifier:{left:"налево",right:"напÑаво","sharp left":"налево","sharp right":"напÑаво","slight left":"левее","slight right":"пÑавее",straight:"пÑÑмо",uturn:"на ÑазвоÑоÑ"},lanes:{xo:"ÐеÑжиÑеÑÑ Ð¿Ñавее",ox:"ÐеÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ",xox:"ÐеÑжиÑеÑÑ Ð¿Ð¾ÑеÑедине",oxo:"ÐеÑжиÑеÑÑ Ñлева или ÑпÑава"}},modes:{ferry:{default:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом",name:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом {way_name}",destination:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом в напÑавлении {destination}"}},phrase:{"two linked by distance":"{instruction_one}, заÑем ÑеÑез {distance} {instruction_two}","two linked":"{instruction_one}, заÑем {instruction_two}","one in distance":"ЧеÑез {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"ÑÑезд {exit}"},arrive:{default:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}"},left:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева"},right:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава"},"sharp left":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева Ñзади",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева Ñзади",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева Ñзади"},"sharp right":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава Ñзади",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава Ñзади",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава Ñзади"},"slight right":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава впеÑеди",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава впеÑеди",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава впеÑеди"},"slight left":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева впеÑеди",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева впеÑеди",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева впеÑеди"},straight:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿ÐµÑед Ðами",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ð¿ÐµÑед Ðами",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿ÐµÑед Ðами"}},continue:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} по {way_name:dative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}",exit:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}",distance:"ÐвигайÑеÑÑ Ð¿ÑÑмо {distance}",namedistance:"ÐвигайÑеÑÑ Ð¿ÑÑмо {distance} по {way_name:dative}"},"sharp left":{default:"Резко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево в напÑавлении {destination}"},"sharp right":{default:"Резко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво в напÑавлении {destination}"},"slight left":{default:"Ðлавно повеÑниÑе налево",name:"Ðлавно повеÑниÑе налево на {way_name:accusative}",destination:"Ðлавно повеÑниÑе налево в напÑавлении {destination}"},"slight right":{default:"Ðлавно повеÑниÑе напÑаво",name:"Ðлавно повеÑниÑе напÑаво на {way_name:accusative}",destination:"Ðлавно повеÑниÑе напÑаво в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение по {way_name:dative}",destination:"РазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},depart:{default:{default:"ÐвигайÑеÑÑ Ð² {direction} напÑавлении",name:"ÐвигайÑеÑÑ Ð² {direction} напÑавлении по {way_name:dative}",namedistance:"ÐвигайÑеÑÑ {distance} в {direction} напÑавлении по {way_name:dative}"}},"end of road":{default:{default:"ÐовеÑниÑе {modifier}",name:"ÐовеÑниÑе {modifier} на {way_name:accusative}",destination:"ÐовеÑниÑе {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿ÑÑмо по {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð¿ÑÑмо в напÑавлении {destination}"},uturn:{default:"РконÑе доÑоги ÑазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð² конÑе {way_name:genitive}",destination:"РконÑе доÑоги ÑазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},fork:{default:{default:"Ðа Ñазвилке двигайÑеÑÑ {modifier}",name:"Ðа Ñазвилке двигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"Ðа Ñазвилке двигайÑеÑÑ {modifier} в напÑавлении {destination}"},"slight left":{default:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ и пÑодолжиÑе движение в напÑавлении {destination}"},"slight right":{default:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее",name:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp left":{default:"Ðа Ñазвилке Ñезко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp right":{default:"Ðа Ñазвилке Ñезко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво и пÑодолжиÑе движение в напÑавлении {destination}"},uturn:{default:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ",name:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},merge:{default:{default:"ÐеÑеÑÑÑойÑеÑÑ {modifier}",name:"ÐеÑеÑÑÑойÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ в напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее в напÑавлении {destination}"},"sharp left":{default:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ в напÑавлении {destination}"},"sharp right":{default:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее",name:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},"new name":{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}"},"sharp left":{default:"Резко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp right":{default:"Резко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво и пÑодолжиÑе движение в напÑавлении {destination}"},"slight left":{default:"Ðлавно повеÑниÑе налево",name:"Ðлавно повеÑниÑе налево на {way_name:accusative}",destination:"Ðлавно повеÑниÑе налево в напÑавлении {destination}"},"slight right":{default:"Ðлавно повеÑниÑе напÑаво",name:"Ðлавно повеÑниÑе напÑаво на {way_name:accusative}",destination:"Ðлавно повеÑниÑе напÑаво в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},notification:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} по {way_name:dative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},"off ramp":{default:{default:"СвеÑниÑе на ÑÑезд",name:"СвеÑниÑе на ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit}",exit_destination:"СвеÑниÑе на ÑÑезд {exit} в напÑавлении {destination}"},left:{default:"СвеÑниÑе на левÑй ÑÑезд",name:"СвеÑниÑе на левÑй ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на левÑй ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit} Ñлева",exit_destination:"СвеÑниÑе на ÑÑезд {exit} Ñлева в напÑавлении {destination}"},right:{default:"СвеÑниÑе на пÑавÑй ÑÑезд",name:"СвеÑниÑе на пÑавÑй ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на пÑавÑй ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit} ÑпÑава",exit_destination:"СвеÑниÑе на ÑÑезд {exit} ÑпÑава в напÑавлении {destination}"},"sharp left":{default:"ÐовеÑниÑе налево на ÑÑезд",name:"ÐовеÑниÑе налево на ÑÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе налево на ÑÑезд в напÑавлении {destination}",exit:"ÐовеÑниÑе налево на ÑÑезд {exit}",exit_destination:"ÐовеÑниÑе налево на ÑÑезд {exit} в напÑавлении {destination}"},"sharp right":{default:"ÐовеÑниÑе напÑаво на ÑÑезд",name:"ÐовеÑниÑе напÑаво на ÑÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе напÑаво на ÑÑезд в напÑавлении {destination}",exit:"ÐовеÑниÑе напÑаво на ÑÑезд {exit}",exit_destination:"ÐовеÑниÑе напÑаво на ÑÑезд {exit} в напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд в напÑавлении {destination}",exit:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {exit}",exit_destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд {exit} в напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд в напÑавлении {destination}",exit:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд {exit}",exit_destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд {exit} в напÑавлении {destination}"}},"on ramp":{default:{default:"СвеÑниÑе на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},left:{default:"СвеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на левÑй вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},right:{default:"СвеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на пÑавÑй вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"sharp left":{default:"ÐовеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑалÑ",name:"ÐовеÑниÑе на левÑй вÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"sharp right":{default:"ÐовеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑалÑ",name:"ÐовеÑниÑе на пÑавÑй вÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на вÑезд на авÑомагиÑÑÑалÑ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на вÑезд на авÑомагиÑÑÑалÑ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"}},rotary:{default:{default:{default:"ÐÑодолжиÑе движение по кÑÑговой ÑазвÑзке",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе в напÑавлении {destination}"},name:{default:"ÐÑодолжиÑе движение по {rotary_name:dative}",name:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа {rotary_name:prepositional} ÑвеÑниÑе в напÑавлении {destination}"},exit:{default:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"},name_exit:{default:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"}}},roundabout:{default:{exit:{default:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"},default:{default:"ÐÑодолжиÑе движение по кÑÑговой ÑазвÑзке",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе в напÑавлении {destination}"}}},"roundabout turn":{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},left:{default:"СвеÑниÑе налево",name:"СвеÑниÑе налево на {way_name:accusative}",destination:"СвеÑниÑе налево в напÑавлении {destination}"},right:{default:"СвеÑниÑе напÑаво",name:"СвеÑниÑе напÑаво на {way_name:accusative}",destination:"СвеÑниÑе напÑаво в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿ÑÑмо по {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð¿ÑÑмо в напÑавлении {destination}"}},"exit roundabout":{default:{default:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки",name:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки на {way_name:accusative}",destination:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки в напÑавлении {destination}"}},"exit rotary":{default:{default:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки",name:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки на {way_name:accusative}",destination:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки в напÑавлении {destination}"}},turn:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},left:{default:"ÐовеÑниÑе налево",name:"ÐовеÑниÑе налево на {way_name:accusative}",destination:"ÐовеÑниÑе налево в напÑавлении {destination}"},right:{default:"ÐовеÑниÑе напÑаво",name:"ÐовеÑниÑе напÑаво на {way_name:accusative}",destination:"ÐовеÑниÑе напÑаво в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿Ð¾ {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð² напÑавлении {destination}"}},"use lane":{no_lanes:{default:"ÐÑодолжайÑе движение пÑÑмо"},default:{default:"{lane_instruction}"}}}}},{}],43:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1:a",2:"2:a",3:"3:e",4:"4:e",5:"5:e",6:"6:e",7:"7:e",8:"8:e",9:"9:e",10:"10:e"},direction:{north:"norr",northeast:"nordost",east:"öster",southeast:"sydost",south:"söder",southwest:"sydväst",west:"väster",northwest:"nordväst"},modifier:{left:"vänster",right:"höger","sharp left":"vänster","sharp right":"höger","slight left":"vänster","slight right":"höger",straight:"rakt fram",uturn:"U-sväng"},lanes:{xo:"HÃ¥ll till höger",ox:"HÃ¥ll till vänster",xox:"HÃ¥ll till mitten",oxo:"HÃ¥ll till vänster eller höger"}},modes:{ferry:{default:"Ta färjan",name:"Ta färjan pÃ¥ {way_name}",destination:"Ta färjan mot {destination}"}},phrase:{"two linked by distance":"{instruction_one}, sedan efter {distance}, {instruction_two}","two linked":"{instruction_one}, sedan {instruction_two}","one in distance":"Om {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Du är framme vid din {nth} destination",upcoming:"Du är snart framme vid din {nth} destination",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}"},left:{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},right:{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"sharp left":{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},"sharp right":{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"slight right":{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"slight left":{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},straight:{default:"Du är framme vid din {nth} destination, rakt fram",upcoming:"Du är snart framme vid din {nth} destination, rakt fram",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, rakt fram"}},continue:{default:{default:"Sväng {modifier}",name:"Sväng {modifier} och fortsätt pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}",exit:"Sväng {modifier} in pÃ¥ {way_name}"},straight:{default:"Fortsätt rakt fram",name:"Kör rakt fram och fortsätt pÃ¥ {way_name}",destination:"Fortsätt mot {destination}",distance:"Fortsätt rakt fram i {distance}",namedistance:"Fortsätt pÃ¥ {way_name} i {distance}"},"sharp left":{default:"Sväng vänster",name:"Sväng vänster och fortsätt pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"sharp right":{default:"Sväng höger",name:"Sväng höger och fortsätt pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},"slight left":{default:"Sväng vänster",name:"Sväng vänster och fortsätt pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"slight right":{default:"Sväng höger",name:"Sväng höger och fortsätt pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng och fortsätt pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},depart:{default:{default:"Kör Ã¥t {direction}",name:"Kör Ã¥t {direction} pÃ¥ {way_name}",namedistance:"Kör {distance} Ã¥t {direction} pÃ¥ {way_name}"}},"end of road":{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt rakt fram in pÃ¥ {way_name}",destination:"Fortsätt rakt fram mot {destination}"},uturn:{default:"Gör en U-sväng i slutet av vägen",name:"Gör en U-sväng in pÃ¥ {way_name} i slutet av vägen",destination:"Gör en U-sväng mot {destination} i slutet av vägen"}},fork:{default:{default:"HÃ¥ll till {modifier} där vägen delar sig",name:"HÃ¥ll till {modifier} in pÃ¥ {way_name}",destination:"HÃ¥ll till {modifier} mot {destination}"},"slight left":{default:"HÃ¥ll till vänster där vägen delar sig",name:"HÃ¥ll till vänster in pÃ¥ {way_name}",destination:"HÃ¥ll till vänster mot {destination}"},"slight right":{default:"HÃ¥ll till höger där vägen delar sig",name:"HÃ¥ll till höger in pÃ¥ {way_name}",destination:"HÃ¥ll till höger mot {destination}"},"sharp left":{default:"Sväng vänster där vägen delar sig",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"sharp right":{default:"Sväng höger där vägen delar sig",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},merge:{default:{default:"Byt till {modifier} körfält",name:"Byt till {modifier} körfält, in pÃ¥ {way_name}",destination:"Byt till {modifier} körfält, mot {destination}"},straight:{default:"Fortsätt",name:"Kör in pÃ¥ {way_name}",destination:"Kör mot {destination}"},"slight left":{default:"Byt till vänstra körfältet",name:"Byt till vänstra körfältet, in pÃ¥ {way_name}",destination:"Byt till vänstra körfältet, mot {destination}"},"slight right":{default:"Byt till högra körfältet",name:"Byt till högra körfältet, in pÃ¥ {way_name}",destination:"Byt till högra körfältet, mot {destination}"},"sharp left":{default:"Byt till vänstra körfältet",name:"Byt till vänstra körfältet, in pÃ¥ {way_name}",destination:"Byt till vänstra körfältet, mot {destination}"},"sharp right":{default:"Byt till högra körfältet",name:"Byt till högra körfältet, in pÃ¥ {way_name}",destination:"Byt till högra körfältet, mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},"new name":{default:{default:"Fortsätt {modifier}",name:"Fortsätt {modifier} pÃ¥ {way_name}",destination:"Fortsätt {modifier} mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt in pÃ¥ {way_name}",destination:"Fortsätt mot {destination}"},"sharp left":{default:"Gör en skarp vänstersväng",name:"Gör en skarp vänstersväng in pÃ¥ {way_name}",destination:"Gör en skarp vänstersväng mot {destination}"},"sharp right":{default:"Gör en skarp högersväng",name:"Gör en skarp högersväng in pÃ¥ {way_name}",destination:"Gör en skarp högersväng mot {destination}"},"slight left":{default:"Fortsätt med lätt vänstersväng",name:"Fortsätt med lätt vänstersväng in pÃ¥ {way_name}",destination:"Fortsätt med lätt vänstersväng mot {destination}"},"slight right":{default:"Fortsätt med lätt högersväng",name:"Fortsätt med lätt högersväng in pÃ¥ {way_name}",destination:"Fortsätt med lätt högersväng mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},notification:{default:{default:"Fortsätt {modifier}",name:"Fortsätt {modifier} pÃ¥ {way_name}",destination:"Fortsätt {modifier} mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},"off ramp":{default:{default:"Ta avfarten",name:"Ta avfarten in pÃ¥ {way_name}",destination:"Ta avfarten mot {destination}",exit:"Ta avfart {exit} ",exit_destination:"Ta avfart {exit} mot {destination}"},left:{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart {exit} till vänster mot {destination}"},right:{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"},"sharp left":{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart {exit} till vänster mot {destination}"},"sharp right":{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"},"slight left":{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart{exit} till vänster mot {destination}"},"slight right":{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"}},"on ramp":{default:{default:"Ta pÃ¥farten",name:"Ta pÃ¥farten in pÃ¥ {way_name}",destination:"Ta pÃ¥farten mot {destination}"},left:{default:"Ta pÃ¥farten till vänster",name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},right:{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"},"sharp left":{default:"Ta pÃ¥farten till vänster",name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},"sharp right":{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"},"slight left":{default:"Ta pÃ¥farten till vänster", 2177name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},"slight right":{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"}},rotary:{default:{default:{default:"Kör in i rondellen",name:"I rondellen, ta avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta av mot {destination}"},name:{default:"Kör in i {rotary_name}",name:"I {rotary_name}, ta av in pÃ¥ {way_name}",destination:"I {rotary_name}, ta av mot {destination}"},exit:{default:"I rondellen, ta {exit_number} avfarten",name:"I rondellen, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta {exit_number} avfarten mot {destination}"},name_exit:{default:"I {rotary_name}, ta {exit_number} avfarten",name:"I {rotary_name}, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I {rotary_name}, ta {exit_number} avfarten mot {destination}"}}},roundabout:{default:{exit:{default:"I rondellen, ta {exit_number} avfarten",name:"I rondellen, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta {exit_number} avfarten mot {destination}"},default:{default:"Kör in i rondellen",name:"I rondellen, ta avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta av mot {destination}"}}},"roundabout turn":{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},left:{default:"Sväng vänster",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},right:{default:"Sväng höger",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt rakt fram in pÃ¥ {way_name}",destination:"Fortsätt rakt fram mot {destination}"}},"exit roundabout":{default:{default:"Kör ut ur rondellen",name:"Kör ut ur rondellen in pÃ¥ {way_name}",destination:"Kör ut ur rondellen mot {destination}"}},"exit rotary":{default:{default:"Kör ut ur rondellen",name:"Kör ut ur rondellen in pÃ¥ {way_name}",destination:"Kör ut ur rondellen mot {destination}"}},turn:{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},left:{default:"Sväng vänster",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},right:{default:"Sväng höger",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},straight:{default:"Kör rakt fram",name:"Kör rakt fram in pÃ¥ {way_name}",destination:"Kör rakt fram mot {destination}"}},"use lane":{no_lanes:{default:"Fortsätt rakt fram"},default:{default:"{lane_instruction}"}}}}},{}],44:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"birinci",2:"ikinci",3:"üçüncü",4:"dördüncü",5:"beÅinci",6:"altıncı",7:"yedinci",8:"sekizinci",9:"dokuzuncu",10:"onuncu"},direction:{north:"kuzey",northeast:"kuzeydoÄu",east:"doÄu",southeast:"güneydoÄu",south:"güney",southwest:"güneybatı",west:"batı",northwest:"kuzeybatı"},modifier:{left:"sol",right:"saÄ","sharp left":"keskin sol","sharp right":"keskin saÄ","slight left":"hafif sol","slight right":"hafif saÄ",straight:"düz",uturn:"U dönüÅü"},lanes:{xo:"SaÄda kalın",ox:"Solda kalın",xox:"Ortada kalın",oxo:"Solda veya saÄda kalın"}},modes:{ferry:{default:"Vapur kullan",name:"{way_name} vapurunu kullan",destination:"{destination} istikametine giden vapuru kullan"}},phrase:{"two linked by distance":"{instruction_one} ve {distance} sonra {instruction_two}","two linked":"{instruction_one} ve sonra {instruction_two}","one in distance":"{distance} sonra, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"{nth} hedefinize ulaÅtınız",upcoming:"{nth} hedefinize ulaÅtınız",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız"},left:{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},right:{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"sharp left":{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},"sharp right":{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"slight right":{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"slight left":{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},straight:{default:"{nth} hedefinize ulaÅtınız, hedefiniz karÅınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz karÅınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz karÅınızdadır"}},continue:{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde kalmak için {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön",exit:"{way_name} üzerinde {modifier} yöne dön"},straight:{default:"Düz devam edin",name:"{way_name} üzerinde kalmak için düz devam et",destination:"{destination} istikametinde devam et",distance:"{distance} boyunca düz devam et",namedistance:"{distance} boyunca {way_name} üzerinde devam et"},"sharp left":{default:"Sola keskin dönüŠyap",name:"{way_name} üzerinde kalmak için sola keskin dönüŠyap",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"SaÄa keskin dönüŠyap",name:"{way_name} üzerinde kalmak için saÄa keskin dönüŠyap",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},"slight left":{default:"Sola hafif dönüŠyap",name:"{way_name} üzerinde kalmak için sola hafif dönüŠyap",destination:"{destination} istikametinde sola hafif dönüŠyap"},"slight right":{default:"SaÄa hafif dönüŠyap",name:"{way_name} üzerinde kalmak için saÄa hafif dönüŠyap",destination:"{destination} istikametinde saÄa hafif dönüŠyap"},uturn:{default:"U dönüÅü yapın",name:"Bir U-dönüÅü yap ve {way_name} devam et",destination:"{destination} istikametinde bir U-dönüÅü yap"}},depart:{default:{default:"{direction} tarafına yönelin",name:"{way_name} üzerinde {direction} yöne git",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"{modifier} tarafa dönün",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},straight:{default:"Düz devam edin",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"},uturn:{default:"Yolun sonunda U dönüÅü yapın",name:"Yolun sonunda {way_name} üzerinde bir U-dönüÅü yap",destination:"Yolun sonunda {destination} istikametinde bir U-dönüÅü yap"}},fork:{default:{default:"Yol ayrımında {modifier} yönde kal",name:"{way_name} üzerindeki yol ayrımında {modifier} yönde kal",destination:"{destination} istikametindeki yol ayrımında {modifier} yönde kal"},"slight left":{default:"Ãatalın solundan devam edin",name:"Ãatalın solundan {way_name} yoluna doÄru ",destination:"{destination} istikametindeki yol ayrımında solda kal"},"slight right":{default:"Ãatalın saÄından devam edin",name:"{way_name} üzerindeki yol ayrımında saÄda kal",destination:"{destination} istikametindeki yol ayrımında saÄda kal"},"sharp left":{default:"Ãatalda keskin sola dönün",name:"{way_name} yoluna doÄru sola keskin dönüŠyapın",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"Ãatalda keskin saÄa dönün",name:"{way_name} yoluna doÄru saÄa keskin dönüŠyapın",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},merge:{default:{default:"{modifier} yöne gir",name:"{way_name} üzerinde {modifier} yöne gir",destination:"{destination} istikametinde {modifier} yöne gir"},straight:{default:"düz yöne gir",name:"{way_name} üzerinde düz yöne gir",destination:"{destination} istikametinde düz yöne gir"},"slight left":{default:"Sola gir",name:"{way_name} üzerinde sola gir",destination:"{destination} istikametinde sola gir"},"slight right":{default:"SaÄa gir",name:"{way_name} üzerinde saÄa gir",destination:"{destination} istikametinde saÄa gir"},"sharp left":{default:"Sola gir",name:"{way_name} üzerinde sola gir",destination:"{destination} istikametinde sola gir"},"sharp right":{default:"SaÄa gir",name:"{way_name} üzerinde saÄa gir",destination:"{destination} istikametinde saÄa gir"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},"new name":{default:{default:"{modifier} yönde devam et",name:"{way_name} üzerinde {modifier} yönde devam et",destination:"{destination} istikametinde {modifier} yönde devam et"},straight:{default:"Düz devam et",name:"{way_name} üzerinde devam et",destination:"{destination} istikametinde devam et"},"sharp left":{default:"Sola keskin dönüŠyapın",name:"{way_name} yoluna doÄru sola keskin dönüŠyapın",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"SaÄa keskin dönüŠyapın",name:"{way_name} yoluna doÄru saÄa keskin dönüŠyapın",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},"slight left":{default:"Hafif soldan devam edin",name:"{way_name} üzerinde hafif solda devam et",destination:"{destination} istikametinde hafif solda devam et"},"slight right":{default:"Hafif saÄdan devam edin",name:"{way_name} üzerinde hafif saÄda devam et",destination:"{destination} istikametinde hafif saÄda devam et"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},notification:{default:{default:"{modifier} yönde devam et",name:"{way_name} üzerinde {modifier} yönde devam et",destination:"{destination} istikametinde {modifier} yönde devam et"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},"off ramp":{default:{default:"BaÄlantı yoluna geç",name:"{way_name} üzerindeki baÄlantı yoluna geç",destination:"{destination} istikametine giden baÄlantı yoluna geç",exit:"{exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} çıkıŠyoluna geç"},left:{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},right:{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"},"sharp left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},"sharp right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"},"slight left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},"slight right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"}},"on ramp":{default:{default:"BaÄlantı yoluna geç",name:"{way_name} üzerindeki baÄlantı yoluna geç",destination:"{destination} istikametine giden baÄlantı yoluna geç"},left:{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},right:{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"},"sharp left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},"sharp right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"},"slight left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},"slight right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"}},rotary:{default:{default:{default:"Dönel kavÅaÄa gir",name:"Dönel kavÅaÄa gir ve {way_name} üzerinde çık",destination:"Dönel kavÅaÄa gir ve {destination} istikametinde çık"},name:{default:"{rotary_name} dönel kavÅaÄa gir",name:"{rotary_name} dönel kavÅaÄa gir ve {way_name} üzerinde çık",destination:"{rotary_name} dönel kavÅaÄa gir ve {destination} istikametinde çık"},exit:{default:"Dönel kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"Dönel kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"Dönel kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"},name_exit:{default:"{rotary_name} dönel kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"{rotary_name} dönel kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"{rotary_name} dönel kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"}}},roundabout:{default:{exit:{default:"Göbekli kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"Göbekli kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"Göbekli kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"},default:{default:"Göbekli kavÅaÄa gir",name:"Göbekli kavÅaÄa gir ve {way_name} üzerinde çık",destination:"Göbekli kavÅaÄa gir ve {destination} istikametinde çık"}}},"roundabout turn":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},"exit roundabout":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},"exit rotary":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},turn:{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dönün",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dönün",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz git",name:"{way_name} üzerinde düz git",destination:"{destination} istikametinde düz git"}},"use lane":{no_lanes:{default:"Düz devam edin"},default:{default:"{lane_instruction}"}}}}},{}],45:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1й",2:"2й",3:"3й",4:"4й",5:"5й",6:"6й",7:"7й",8:"8й",9:"9й",10:"10й"},direction:{north:"пÑвнÑÑ",northeast:"пÑвнÑÑний ÑÑ Ñд",east:"ÑÑ Ñд",southeast:"пÑвденний ÑÑ Ñд",south:"пÑвденÑ",southwest:"пÑвденний Ð·Ð°Ñ Ñд",west:"Ð·Ð°Ñ Ñд",northwest:"пÑвнÑÑний Ð·Ð°Ñ Ñд"},modifier:{left:"лÑвоÑÑÑ",right:"пÑавоÑÑÑ","sharp left":"ÑÑзко лÑвоÑÑÑ","sharp right":"ÑÑзко пÑавоÑÑÑ","slight left":"плавно лÑвоÑÑÑ","slight right":"плавно пÑавоÑÑÑ",straight:"пÑÑмо",uturn:"ÑозвоÑоÑ"},lanes:{xo:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ",ox:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ",xox:"ТÑимайÑеÑÑ Ð² ÑеÑединÑ",oxo:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ð°Ð±Ð¾ лÑвоÑÑÑ"}},modes:{ferry:{default:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом",name:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом {way_name}",destination:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},phrase:{"two linked by distance":"{instruction_one}, поÑÑм, ÑеÑез {distance}, {instruction_two}","two linked":"{instruction_one}, поÑÑм {instruction_two}","one in distance":"ЧеÑез {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"з'Ñзд {exit}"},arrive:{default:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name}"},left:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},right:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"sharp left":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},"sharp right":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"slight right":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"slight left":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},straight:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑÑмо пеÑед вами",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑÑмо пеÑед вами",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑÑмо пеÑед вами"}},continue:{default:{default:"ÐовеÑнÑÑÑ {modifier}",name:"ÐовеÑнÑÑÑ{modifier} залиÑаÑÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐовеÑнÑÑÑ {modifier} на {way_name}"},straight:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо залиÑаÑÑиÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",distance:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо {distance}",namedistance:"ÐÑодовжÑйÑе ÑÑÑ Ð¿Ð¾ {way_name} {distance}"},"sharp left":{default:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñа ÑÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},depart:{default:{default:"ÐÑÑмÑйÑе на {direction}",name:"ÐÑÑмÑйÑе на {direction} по {way_name}",namedistance:"ÐÑÑмÑйÑе на {direction} по {way_name} {distance}"}},"end of road":{default:{default:"ÐовеÑнÑÑÑ {modifier}",name:"ÐовеÑнÑÑÑ {modifier} на {way_name}",destination:"ÐовеÑнÑÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо до {way_name}",destination:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð² кÑнÑÑ Ð´Ð¾Ñоги",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name} в кÑнÑÑ Ð´Ð¾Ñоги",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination} в кÑнÑÑ Ð´Ð¾Ñоги"}},fork:{default:{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ {modifier}",name:"ТÑимайÑеÑÑ {modifier} Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ Ð»ÑвоÑÑÑ",name:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ Ð¿ÑавоÑÑÑ",name:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑзко повеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑзко повеÑнÑÑÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},merge:{default:{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier}",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier} на {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑокÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"new name":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},notification:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"off ramp":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit}",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},left:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"on ramp":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},left:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},rotary:{default:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ колÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð´Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð² напÑÑÐ¼ÐºÑ {destination}"},name:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑенÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},name_exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд в напÑÑÐ¼ÐºÑ {destination}"}}},roundabout:{default:{exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑенÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ колÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð´Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð² напÑÑÐ¼ÐºÑ {destination}"}}},"roundabout turn":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},left:{default:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо до {way_name}",destination:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"exit roundabout":{default:{default:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾",name:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ на {way_name} зʼÑздÑ",destination:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ в напÑÑÐ¼ÐºÑ {destination}"}},"exit rotary":{default:{default:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾",name:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ на {way_name} зʼÑздÑ",destination:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ в напÑÑÐ¼ÐºÑ {destination}"}},turn:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},left:{default:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ", 2178name:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо по {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"use lane":{no_lanes:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо"},default:{default:"{lane_instruction}"}}}}},{}],46:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"Äầu tiên",2:"thứ 2",3:"thứ 3",4:"thứ 4",5:"thứ 5",6:"thú 6",7:"thứ 7",8:"thứ 8",9:"thứ 9",10:"thứ 10"},direction:{north:"bắc",northeast:"Äông bắc",east:"Äông",southeast:"Äông nam",south:"nam",southwest:"tây nam",west:"tây",northwest:"tây bắc"},modifier:{left:"trái",right:"phải","sharp left":"trái gắt","sharp right":"phải gắt","slight left":"trái nghiêng","slight right":"phải nghiêng",straight:"thẳng",uturn:"ngược"},lanes:{xo:"Äi bên phải",ox:"Äi bên trái",xox:"Äi và o giữa",oxo:"Äi bên trái hay bên phải"}},modes:{ferry:{default:"Lên phà ",name:"Lên phà {way_name}",destination:"Lên phà Äi {destination}"}},phrase:{"two linked by distance":"{instruction_one}, rá»i {distance} nữa thì {instruction_two}","two linked":"{instruction_one}, rá»i {instruction_two}","one in distance":"{distance} nữa thì {instruction_one}","name and ref":"{name} ({ref})","exit with number":"lá»i ra {exit}"},arrive:{default:{default:"Äến nÆ¡i {nth}",upcoming:"Äến nÆ¡i {nth}",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name}"},left:{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},right:{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"sharp left":{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},"sharp right":{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"slight right":{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"slight left":{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},straight:{default:"Äến nÆ¡i {nth} á» trưá»c mặt",upcoming:"Äến nÆ¡i {nth} á» trưá»c mặt",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» trưá»c mặt"}},continue:{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} Äá» chạy tiếp trên {way_name}",destination:"Quẹo {modifier} vá» {destination}",exit:"Quẹo {modifier} và o {way_name}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}",distance:"Chạy thẳng cho {distance}",namedistance:"Chạy tiếp trên {way_name} cho {distance}"},"sharp left":{default:"Quẹo gắt bên trái",name:"Quẹo gắt bên trái Äá» chạy tiếp trên {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải",name:"Quẹo gắt bên phải Äá» chạy tiếp trên {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái",name:"Nghiêng vá» bên trái Äá» chạy tiếp trên {way_name}",destination:"Nghiêng vá» bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải",name:"Nghiêng vá» bên phải Äá» chạy tiếp trên {way_name}",destination:"Nghiêng vá» bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại trên {way_name}",destination:"Quẹo ngược vá» {destination}"}},depart:{default:{default:"Äi vá» hưá»ng {direction}",name:"Äi vá» hưá»ng {direction} trên {way_name}",namedistance:"Äi vá» hưá»ng {direction} trên {way_name} cho {distance}"}},"end of road":{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"},uturn:{default:"Quẹo ngược lại tại cuá»i ÄÆ°á»ng",name:"Quẹo ngược và o {way_name} tại cuá»i ÄÆ°á»ng",destination:"Quẹo ngược vá» {destination} tại cuá»i ÄÆ°á»ng"}},fork:{default:{default:"Äi bên {modifier} á» ngã ba",name:"Giữ bên {modifier} và o {way_name}",destination:"Giữ bên {modifier} vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái á» ngã ba",name:"Giữ bên trái và o {way_name}",destination:"Giữ bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải á» ngã ba",name:"Giữ bên phải và o {way_name}",destination:"Giữ bên phải vá» {destination}"},"sharp left":{default:"Quẹo gắt bên trái á» ngã ba",name:"Quẹo gắt bên trái và o {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải á» ngã ba",name:"Quẹo gắt bên phải và o {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},merge:{default:{default:"Nháºp sang {modifier}",name:"Nháºp sang {modifier} và o {way_name}",destination:"Nháºp sang {modifier} vá» {destination}"},straight:{default:"Nháºp ÄÆ°á»ng",name:"Nháºp và o {way_name}",destination:"Nháºp ÄÆ°á»ng vá» {destination}"},"slight left":{default:"Nháºp sang trái",name:"Nháºp sang trái và o {way_name}",destination:"Nháºp sang trái vá» {destination}"},"slight right":{default:"Nháºp sang phải",name:"Nháºp sang phải và o {way_name}",destination:"Nháºp sang phải vá» {destination}"},"sharp left":{default:"Nháºp sang trái",name:"Nháºp sang trái và o {way_name}",destination:"Nháºp sang trái vá» {destination}"},"sharp right":{default:"Nháºp sang phải",name:"Nháºp sang phải và o {way_name}",destination:"Nháºp sang phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},"new name":{default:{default:"Chạy tiếp bên {modifier}",name:"Chạy tiếp bên {modifier} trên {way_name}",destination:"Chạy tiếp bên {modifier} vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"},"sharp left":{default:"Quẹo gắt bên trái",name:"Quẹo gắt bên trái và o {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải",name:"Quẹo gắt bên phải và o {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái",name:"Nghiêng vá» bên trái và o {way_name}",destination:"Nghiêng vá» bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải",name:"Nghiêng vá» bên phải và o {way_name}",destination:"Nghiêng vá» bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},notification:{default:{default:"Chạy tiếp bên {modifier}",name:"Chạy tiếp bên {modifier} trên {way_name}",destination:"Chạy tiếp bên {modifier} vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},"off ramp":{default:{default:"Äi ÄÆ°á»ng nhánh",name:"Äi ÄÆ°á»ng nhánh {way_name}",destination:"Äi ÄÆ°á»ng nhánh vá» {destination}",exit:"Äi theo lá»i ra {exit}",exit_destination:"Äi theo lá»i ra {exit} vá» {destination}"},left:{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},right:{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"},"sharp left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},"sharp right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"},"slight left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},"slight right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"}},"on ramp":{default:{default:"Äi ÄÆ°á»ng nhánh",name:"Äi ÄÆ°á»ng nhánh {way_name}",destination:"Äi ÄÆ°á»ng nhánh vá» {destination}"},left:{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},right:{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"},"sharp left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},"sharp right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"},"slight left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},"slight right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"}},rotary:{default:{default:{default:"Äi và o bùng binh",name:"Äi và o bùng binh và ra tại {way_name}",destination:"Äi và o bùng binh và ra vá» {destination}"},name:{default:"Äi và o {rotary_name}",name:"Äi và o {rotary_name} và ra tại {way_name}",destination:"Äi và {rotary_name} và ra vá» {destination}"},exit:{default:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"},name_exit:{default:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"}}},roundabout:{default:{exit:{default:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"},default:{default:"Äi và o bùng binh",name:"Äi và o bùng binh và ra tại {way_name}",destination:"Äi và o bùng binh và ra vá» {destination}"}}},"roundabout turn":{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},left:{default:"Quẹo trái",name:"Quẹo trái và o {way_name}",destination:"Quẹo trái vá» {destination}"},right:{default:"Quẹo phải",name:"Quẹo phải và o {way_name}",destination:"Quẹo phải vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"}},"exit roundabout":{default:{default:"Ra bùng binh",name:"Ra bùng binh và o {way_name}",destination:"Ra bùng binh vá» {destination}"}},"exit rotary":{default:{default:"Ra bùng binh",name:"Ra bùng binh và o {way_name}",destination:"Ra bùng binh vá» {destination}"}},turn:{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},left:{default:"Quẹo trái",name:"Quẹo trái và o {way_name}",destination:"Quẹo trái vá» {destination}"},right:{default:"Quẹo phải",name:"Quẹo phải và o {way_name}",destination:"Quẹo phải vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy thẳng và o {way_name}",destination:"Chạy thẳng vá» {destination}"}},"use lane":{no_lanes:{default:"Chạy thẳng"},default:{default:"{lane_instruction}"}}}}},{}],47:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"第ä¸",2:"第äº",3:"第ä¸",4:"第å",5:"第äº",6:"第å ",7:"第ä¸",8:"ç¬¬å «",9:"第ä¹",10:"第å"},direction:{north:"å",northeast:"ä¸å",east:"ä¸",southeast:"ä¸å",south:"å",southwest:"西å",west:"西",northwest:"西å"},modifier:{left:"åå·¦",right:"åå³","sharp left":"æ¥åå·¦","sharp right":"æ¥åå³","slight left":"ç¨åå·¦","slight right":"ç¨åå³",straight:"ç´è¡",uturn:"è°å¤´"},lanes:{xo:"é å³è¡é©¶",ox:"é å·¦è¡é©¶",xox:"ä¿æå¨éè·¯ä¸é´è¡é©¶",oxo:"ä¿æå¨é路左侧æå³ä¾§è¡é©¶"}},modes:{ferry:{default:"ä¹å轮渡",name:"ä¹å{way_name}轮渡",destination:"ä¹åå¼å¾{destination}ç轮渡"}},phrase:{"two linked by distance":"{instruction_one}ï¼{distance}å{instruction_two}","two linked":"{instruction_one}ï¼éå{instruction_two}","one in distance":"{distance}å{instruction_one}","name and ref":"{name}ï¼{ref}ï¼","exit with number":"åºå£{exit}"},arrive:{default:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}"},left:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},right:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"sharp left":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},"sharp right":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"slight right":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"slight left":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},straight:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨æ¨æ£åæ¹",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨æ¨æ£åæ¹",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨åæ¹ã"}},continue:{default:{default:"{modifier}è¡é©¶",name:"å¨{way_name}ä¸ç»§ç»{modifier}è¡é©¶",destination:"{modifier}è¡é©¶ï¼{destination}æ¹å",exit:"{modifier}è¡é©¶ï¼é©¶å ¥{way_name}"},straight:{default:"ç»§ç»ç´è¡",name:"å¨{way_name}ä¸ç»§ç»ç´è¡",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}",distance:"ç»§ç»ç´è¡{distance}",namedistance:"ç»§ç»å¨{way_name}ä¸ç´è¡{distance}"},"sharp left":{default:"忹左æ¥è½¬å¼¯",name:"忹左æ¥è½¬å¼¯ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"忹峿¥è½¬å¼¯",name:"忹峿¥è½¬å¼¯ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"峿¥è½¬å¼¯ï¼åå¾{destination}"},"slight left":{default:"åæ¹ç¨å左转",name:"åæ¹ç¨å左转ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"ç¨å左转ï¼åå¾{destination}"},"slight right":{default:"åæ¹ç¨åå³è½¬",name:"åæ¹ç¨åå³è½¬ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"åæ¹ç¨åå³è½¬ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},depart:{default:{default:"åºåå{direction}",name:"åºåå{direction}ï¼é©¶å ¥{way_name}",namedistance:"åºåå{direction}ï¼å¨{way_name}ä¸ç»§ç»è¡é©¶{distance}"}},"end of road":{default:{default:"{modifier}è¡é©¶",name:"{modifier}è¡é©¶ï¼é©¶å ¥{way_name}",destination:"{modifier}è¡é©¶ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"},uturn:{default:"å¨é路尽头è°å¤´",name:"å¨é路尽头è°å¤´é©¶å ¥{way_name}",destination:"å¨é路尽头è°å¤´ï¼åå¾{destination}"}},fork:{default:{default:"å¨å²éä¿æ{modifier}",name:"å¨å²éå£ä¿æ{modifier}ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æ{modifier}ï¼åå¾{destination}"},"slight left":{default:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶",name:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶ï¼åå¾{destination}"},"slight right":{default:"å¨å²éå£ä¿æå³ä¾§è¡é©¶",name:"å¨å²éå£ä¿æå³ä¾§è¡é©¶ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æå³ä¾§è¡é©¶ï¼åå¾{destination}"},"sharp left":{default:"å¨å²éå£å·¦æ¥è½¬å¼¯",name:"å¨å²éå£å·¦æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"å¨å²éå£å³æ¥è½¬å¼¯",name:"å¨å²éå£å³æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£å³æ¥è½¬å¼¯ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},merge:{default:{default:"{modifier}å¹¶é",name:"{modifier}å¹¶éï¼é©¶å ¥{way_name}",destination:"{modifier}å¹¶éï¼åå¾{destination}"},straight:{default:"ç´è¡å¹¶é",name:"ç´è¡å¹¶éï¼é©¶å ¥{way_name}",destination:"ç´è¡å¹¶éï¼åå¾{destination}"},"slight left":{default:"ç¨å左并é",name:"ç¨å左并éï¼é©¶å ¥{way_name}",destination:"ç¨å左并éï¼åå¾{destination}"},"slight right":{default:"ç¨åå³å¹¶é",name:"ç¨åå³å¹¶éï¼é©¶å ¥{way_name}",destination:"ç¨åå³å¹¶éï¼åå¾{destination}"},"sharp left":{default:"æ¥å左并é",name:"æ¥å左并éï¼é©¶å ¥{way_name}",destination:"æ¥å左并éï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³å¹¶é",name:"æ¥åå³å¹¶éï¼é©¶å ¥{way_name}",destination:"æ¥åå³å¹¶éï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},"new name":{default:{default:"ç»§ç»{modifier}",name:"ç»§ç»{modifier}ï¼é©¶å ¥{way_name}",destination:"ç»§ç»{modifier}ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»å¨{way_name}ä¸ç´è¡",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"},"sharp left":{default:"忹左æ¥è½¬å¼¯",name:"忹左æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"忹峿¥è½¬å¼¯",name:"忹峿¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"峿¥è½¬å¼¯ï¼åå¾{destination}"},"slight left":{default:"ç»§ç»ç¨åå·¦",name:"ç»§ç»ç¨åå·¦ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç¨åå·¦ï¼åå¾{destination}"},"slight right":{default:"ç»§ç»ç¨åå³",name:"ç»§ç»ç¨åå³ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç¨åå³ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼ä¸{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},notification:{default:{default:"ç»§ç»{modifier}",name:"ç»§ç»{modifier}ï¼é©¶å ¥{way_name}",destination:"ç»§ç»{modifier}ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},"off ramp":{default:{default:"ä¸åé",name:"ä¸åéï¼é©¶å ¥{way_name}",destination:"ä¸åéï¼åå¾{destination}",exit:"ä»{exit}åºå£é©¶åº",exit_destination:"ä»{exit}åºå£é©¶åºï¼åå¾{destination}"},left:{default:"ä¸å·¦ä¾§åé",name:"ä¸å·¦ä¾§åéï¼ä¸{way_name}",destination:"ä¸å·¦ä¾§åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},right:{default:"ä¸å³ä¾§åé",name:"ä¸å³ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å³ä¾§åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"sharp left":{default:"æ¥åå·¦ä¸åé",name:"æ¥åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå·¦ä¸åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³ä¸åé",name:"æ¥åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå³ä¸åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"slight left":{default:"ç¨åå·¦ä¸åé",name:"ç¨åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå·¦ä¸åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"slight right":{default:"ç¨åå³ä¸åé",name:"ç¨åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå³ä¸åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"}},"on ramp":{default:{default:"ä¸åé",name:"ä¸åéï¼é©¶å ¥{way_name}",destination:"ä¸åéï¼åå¾{destination}"},left:{default:"ä¸å·¦ä¾§åé",name:"ä¸å·¦ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å·¦ä¾§åéï¼åå¾{destination}"},right:{default:"ä¸å³ä¾§åé",name:"ä¸å³ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å³ä¾§åéï¼åå¾{destination}"},"sharp left":{default:"æ¥åå·¦ä¸åé",name:"æ¥åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå·¦ä¸åéï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³ä¸åé",name:"æ¥åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå³ä¸åéï¼åå¾{destination}"},"slight left":{default:"ç¨åå·¦ä¸åé",name:"ç¨åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå·¦ä¸åéï¼åå¾{destination}"},"slight right":{default:"ç¨åå³ä¸åé",name:"ç¨åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå³ä¸åéï¼åå¾{destination}"}},rotary:{default:{default:{default:"è¿å ¥ç¯å²",name:"éè¿ç¯å²åé©¶å ¥{way_name}",destination:"éè¿ç¯å²ååå¾{destination}"},name:{default:"è¿å ¥{rotary_name}ç¯å²",name:"éè¿{rotary_name}ç¯å²åé©¶å ¥{way_name}",destination:"éè¿{rotary_name}ç¯å²ååå¾{destination}"},exit:{default:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"},name_exit:{default:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"}}},roundabout:{default:{exit:{default:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"},default:{default:"è¿å ¥ç¯å²",name:"éè¿ç¯å²åé©¶å ¥{way_name}",destination:"éè¿ç¯å²ååå¾{destination}"}}},"roundabout turn":{default:{default:"{modifier}转弯",name:"{modifier}转弯ï¼é©¶å ¥{way_name}",destination:"{modifier}转弯ï¼åå¾{destination}"},left:{default:"左转",name:"左转ï¼é©¶å ¥{way_name}",destination:"左转ï¼åå¾{destination}"},right:{default:"å³è½¬",name:"å³è½¬ï¼é©¶å ¥{way_name}",destination:"å³è½¬ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"}},"exit roundabout":{default:{default:"驶离ç¯å²",name:"驶离ç¯å²ï¼é©¶å ¥{way_name}",destination:"驶离ç¯å²ï¼åå¾{destination}"}},"exit rotary":{default:{default:"驶离ç¯å²",name:"驶离ç¯å²ï¼é©¶å ¥{way_name}",destination:"驶离ç¯å²ï¼åå¾{destination}"}},turn:{default:{default:"{modifier}转弯",name:"{modifier}转弯ï¼é©¶å ¥{way_name}",destination:"{modifier}转弯ï¼åå¾{destination}"},left:{default:"左转",name:"左转ï¼é©¶å ¥{way_name}",destination:"左转ï¼åå¾{destination}"},right:{default:"å³è½¬",name:"å³è½¬ï¼é©¶å ¥{way_name}",destination:"å³è½¬ï¼åå¾{destination}"},straight:{default:"ç´è¡",name:"ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç´è¡ï¼åå¾{destination}"}},"use lane":{no_lanes:{default:"ç»§ç»ç´è¡"},default:{default:"{lane_instruction}"}}}}},{}],48:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{timeout:500,blurTimeout:100,noResultsMessage:"No results found."},initialize:function(elem,callback,context,options){L.setOptions(this,options);this._elem=elem;this._resultFn=options.resultFn?L.Util.bind(options.resultFn,options.resultContext):null;this._autocomplete=options.autocompleteFn?L.Util.bind(options.autocompleteFn,options.autocompleteContext):null;this._selectFn=L.Util.bind(callback,context);this._container=L.DomUtil.create("div","leaflet-routing-geocoder-result");this._resultTable=L.DomUtil.create("table","",this._container);L.DomEvent.addListener(this._elem,"input",this._keyPressed,this);L.DomEvent.addListener(this._elem,"keypress",this._keyPressed,this);L.DomEvent.addListener(this._elem,"keydown",this._keyDown,this);L.DomEvent.addListener(this._elem,"blur",function(){if(this._isOpen){this.close()}},this)},close:function(){L.DomUtil.removeClass(this._container,"leaflet-routing-geocoder-result-open");this._isOpen=false},_open:function(){var rect=this._elem.getBoundingClientRect();if(!this._container.parentElement){var scrollX=window.pageXOffset!==undefined?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft;var scrollY=window.pageYOffset!==undefined?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;this._container.style.left=rect.left+scrollX+"px";this._container.style.top=rect.bottom+scrollY+"px";this._container.style.width=rect.right-rect.left+"px";document.body.appendChild(this._container)}L.DomUtil.addClass(this._container,"leaflet-routing-geocoder-result-open");this._isOpen=true},_setResults:function(results){var i,tr,td,text;delete this._selection;this._results=results;while(this._resultTable.firstChild){this._resultTable.removeChild(this._resultTable.firstChild)}for(i=0;i<results.length;i++){tr=L.DomUtil.create("tr","",this._resultTable);tr.setAttribute("data-result-index",i);td=L.DomUtil.create("td","",tr);text=document.createTextNode(results[i].name);td.appendChild(text);L.DomEvent.addListener(td,"mousedown",L.DomEvent.preventDefault);L.DomEvent.addListener(td,"click",this._createClickListener(results[i]))}if(!i){tr=L.DomUtil.create("tr","",this._resultTable);td=L.DomUtil.create("td","leaflet-routing-geocoder-no-results",tr);td.innerHTML=this.options.noResultsMessage}this._open();if(results.length>0){this._select(1)}},_createClickListener:function(r){var resultSelected=this._resultSelected(r);return L.bind(function(){this._elem.blur();resultSelected()},this)},_resultSelected:function(r){return L.bind(function(){this.close();this._elem.value=r.name;this._lastCompletedText=r.name;this._selectFn(r)},this)},_keyPressed:function(e){var index;if(this._isOpen&&e.keyCode===13&&this._selection){index=parseInt(this._selection.getAttribute("data-result-index"),10);this._resultSelected(this._results[index])();L.DomEvent.preventDefault(e);return}if(e.keyCode===13){L.DomEvent.preventDefault(e);this._complete(this._resultFn,true);return}if(this._autocomplete&&document.activeElement===this._elem){if(this._timer){clearTimeout(this._timer)}this._timer=setTimeout(L.Util.bind(function(){this._complete(this._autocomplete)},this),this.options.timeout);return}this._unselect()},_select:function(dir){var sel=this._selection;if(sel){L.DomUtil.removeClass(sel.firstChild,"leaflet-routing-geocoder-selected");sel=sel[dir>0?"nextSibling":"previousSibling"]}if(!sel){sel=this._resultTable[dir>0?"firstChild":"lastChild"]}if(sel){L.DomUtil.addClass(sel.firstChild,"leaflet-routing-geocoder-selected");this._selection=sel}},_unselect:function(){if(this._selection){L.DomUtil.removeClass(this._selection.firstChild,"leaflet-routing-geocoder-selected")}delete this._selection},_keyDown:function(e){if(this._isOpen){switch(e.keyCode){case 27:this.close();L.DomEvent.preventDefault(e);return;case 38:this._select(-1);L.DomEvent.preventDefault(e);return;case 40:this._select(1);L.DomEvent.preventDefault(e);return}}},_complete:function(completeFn,trySelect){var v=this._elem.value;function completeResults(results){this._lastCompletedText=v;if(trySelect&&results.length===1){this._resultSelected(results[0])()}else{this._setResults(results)}}if(!v){return}if(v!==this._lastCompletedText){completeFn(v,completeResults,this)}else if(trySelect){completeResults.call(this,this._results)}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],49:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Itinerary=_dereq_("./itinerary");var Line=_dereq_("./line");var Plan=_dereq_("./plan");var OSRMv1=_dereq_("./osrm-v1");module.exports=Itinerary.extend({options:{fitSelectedRoutes:"smart",routeLine:function(route,options){return new Line(route,options)},autoRoute:true,routeWhileDragging:false,routeDragInterval:500,waypointMode:"connect",showAlternatives:false,defaultErrorHandler:function(e){console.error("Routing error:",e.error)}},initialize:function(options){L.Util.setOptions(this,options);this._router=this.options.router||new OSRMv1(options);this._plan=this.options.plan||new Plan(this.options.waypoints,options);this._requestCount=0;Itinerary.prototype.initialize.call(this,options);this.on("routeselected",this._routeSelected,this);if(this.options.defaultErrorHandler){this.on("routingerror",this.options.defaultErrorHandler)}this._plan.on("waypointschanged",this._onWaypointsChanged,this);if(options.routeWhileDragging){this._setupRouteDragging()}},_onZoomEnd:function(){if(!this._selectedRoute||!this._router.requiresMoreDetail){return}var map=this._map;if(this._router.requiresMoreDetail(this._selectedRoute,map.getZoom(),map.getBounds())){this.route({callback:L.bind(function(err,routes){var i;if(!err){for(i=0;i<routes.length;i++){this._routes[i].properties=routes[i].properties}this._updateLineCallback(err,routes)}},this),simplifyGeometry:false,geometryOnly:true})}},onAdd:function(map){if(this.options.autoRoute){this.route()}var container=Itinerary.prototype.onAdd.call(this,map);this._map=map;this._map.addLayer(this._plan);this._map.on("zoomend",this._onZoomEnd,this);if(this._plan.options.geocoder){container.insertBefore(this._plan.createGeocoders(),container.firstChild)}return container},onRemove:function(map){map.off("zoomend",this._onZoomEnd,this);if(this._line){map.removeLayer(this._line)}map.removeLayer(this._plan);if(this._alternatives&&this._alternatives.length>0){for(var i=0,len=this._alternatives.length;i<len;i++){map.removeLayer(this._alternatives[i])}}return Itinerary.prototype.onRemove.call(this,map)},getWaypoints:function(){return this._plan.getWaypoints()},setWaypoints:function(waypoints){this._plan.setWaypoints(waypoints);return this},spliceWaypoints:function(){var removed=this._plan.spliceWaypoints.apply(this._plan,arguments);return removed},getPlan:function(){return this._plan},getRouter:function(){return this._router},_routeSelected:function(e){var route=this._selectedRoute=e.route,alternatives=this.options.showAlternatives&&e.alternatives,fitMode=this.options.fitSelectedRoutes,fitBounds=fitMode==="smart"&&!this._waypointsVisible()||fitMode!=="smart"&&fitMode;this._updateLines({route:route,alternatives:alternatives});if(fitBounds){this._map.fitBounds(this._line.getBounds())}if(this.options.waypointMode==="snap"){this._plan.off("waypointschanged",this._onWaypointsChanged,this);this.setWaypoints(route.waypoints);this._plan.on("waypointschanged",this._onWaypointsChanged,this)}},_waypointsVisible:function(){var wps=this.getWaypoints(),mapSize,bounds,boundsSize,i,p;try{mapSize=this._map.getSize();for(i=0;i<wps.length;i++){p=this._map.latLngToLayerPoint(wps[i].latLng);if(bounds){bounds.extend(p)}else{bounds=L.bounds([p])}}boundsSize=bounds.getSize();return(boundsSize.x>mapSize.x/5||boundsSize.y>mapSize.y/5)&&this._waypointsInViewport()}catch(e){return false}},_waypointsInViewport:function(){var wps=this.getWaypoints(),mapBounds,i;try{mapBounds=this._map.getBounds()}catch(e){return false}for(i=0;i<wps.length;i++){if(mapBounds.contains(wps[i].latLng)){return true}}return false},_updateLines:function(routes){var addWaypoints=this.options.addWaypoints!==undefined?this.options.addWaypoints:true;this._clearLines();this._alternatives=[];if(routes.alternatives)routes.alternatives.forEach(function(alt,i){this._alternatives[i]=this.options.routeLine(alt,L.extend({isAlternative:true},this.options.altLineOptions||this.options.lineOptions));this._alternatives[i].addTo(this._map);this._hookAltEvents(this._alternatives[i])},this);this._line=this.options.routeLine(routes.route,L.extend({addWaypoints:addWaypoints,extendToWaypoints:this.options.waypointMode==="connect"},this.options.lineOptions));this._line.addTo(this._map);this._hookEvents(this._line)},_hookEvents:function(l){l.on("linetouched",function(e){this._plan.dragNewWaypoint(e)},this)},_hookAltEvents:function(l){l.on("linetouched",function(e){var alts=this._routes.slice();var selected=alts.splice(e.target._route.routesIndex,1)[0];this.fire("routeselected",{route:selected,alternatives:alts})},this)},_onWaypointsChanged:function(e){if(this.options.autoRoute){this.route({})}if(!this._plan.isReady()){this._clearLines();this._clearAlts()}this.fire("waypointschanged",{waypoints:e.waypoints})},_setupRouteDragging:function(){var timer=0,waypoints;this._plan.on("waypointdrag",L.bind(function(e){waypoints=e.waypoints;if(!timer){timer=setTimeout(L.bind(function(){this.route({waypoints:waypoints,geometryOnly:true,callback:L.bind(this._updateLineCallback,this)});timer=undefined},this),this.options.routeDragInterval)}},this));this._plan.on("waypointdragend",function(){if(timer){clearTimeout(timer);timer=undefined}this.route()},this)},_updateLineCallback:function(err,routes){if(!err){routes=routes.slice();var selected=routes.splice(this._selectedRoute.routesIndex,1)[0];this._updateLines({route:selected,alternatives:this.options.showAlternatives?routes:[]})}else if(err.type!=="abort"){this._clearLines()}},route:function(options){var ts=++this._requestCount,wps;if(this._pendingRequest&&this._pendingRequest.abort){this._pendingRequest.abort();this._pendingRequest=null}options=options||{};if(this._plan.isReady()){if(this.options.useZoomParameter){options.z=this._map&&this._map.getZoom()}wps=options&&options.waypoints||this._plan.getWaypoints();this.fire("routingstart",{waypoints:wps}) 2179;this._pendingRequest=this._router.route(wps,function(err,routes){this._pendingRequest=null;if(options.callback){return options.callback.call(this,err,routes)}if(ts===this._requestCount){this._clearLines();this._clearAlts();if(err&&err.type!=="abort"){this.fire("routingerror",{error:err});return}routes.forEach(function(route,i){route.routesIndex=i});if(!options.geometryOnly){this.fire("routesfound",{waypoints:wps,routes:routes});this.setAlternatives(routes)}else{var selectedRoute=routes.splice(0,1)[0];this._routeSelected({route:selectedRoute,alternatives:routes})}}},this,options)}},_clearLines:function(){if(this._line){this._map.removeLayer(this._line);delete this._line}if(this._alternatives&&this._alternatives.length){for(var i in this._alternatives){this._map.removeLayer(this._alternatives[i])}this._alternatives=[]}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./itinerary":55,"./line":56,"./osrm-v1":59,"./plan":60}],50:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Control.extend({options:{header:"Routing error",formatMessage:function(error){if(error.status<0){return"Calculating the route caused an error. Technical description follows: <code><pre>"+error.message+"</pre></code"}else{return"The route could not be calculated. "+error.message}}},initialize:function(routingControl,options){L.Control.prototype.initialize.call(this,options);routingControl.on("routingerror",L.bind(function(e){if(this._element){this._element.children[1].innerHTML=this.options.formatMessage(e.error);this._element.style.visibility="visible"}},this)).on("routingstart",L.bind(function(){if(this._element){this._element.style.visibility="hidden"}},this))},onAdd:function(){var header,message;this._element=L.DomUtil.create("div","leaflet-bar leaflet-routing-error");this._element.style.visibility="hidden";header=L.DomUtil.create("h3",null,this._element);message=L.DomUtil.create("span",null,this._element);header.innerHTML=this.options.header;return this._element},onRemove:function(){delete this._element}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],51:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Localization=_dereq_("./localization");module.exports=L.Class.extend({options:{units:"metric",unitNames:null,language:"en",roundingSensitivity:1,distanceTemplate:"{value} {unit}"},initialize:function(options){L.setOptions(this,options);var langs=L.Util.isArray(this.options.language)?this.options.language:[this.options.language,"en"];this._localization=new Localization(langs)},formatDistance:function(d,sensitivity){var un=this.options.unitNames||this._localization.localize("units"),simpleRounding=sensitivity<=0,round=simpleRounding?function(v){return v}:L.bind(this._round,this),v,yards,data,pow10;if(this.options.units==="imperial"){yards=d/.9144;if(yards>=1e3){data={value:round(d/1609.344,sensitivity),unit:un.miles}}else{data={value:round(yards,sensitivity),unit:un.yards}}}else{v=round(d,sensitivity);data={value:v>=1e3?v/1e3:v,unit:v>=1e3?un.kilometers:un.meters}}if(simpleRounding){data.value=data.value.toFixed(-sensitivity)}return L.Util.template(this.options.distanceTemplate,data)},_round:function(d,sensitivity){var s=sensitivity||this.options.roundingSensitivity,pow10=Math.pow(10,(Math.floor(d/s)+"").length-1),r=Math.floor(d/pow10),p=r>5?pow10:pow10/2;return Math.round(d/p)*p},formatTime:function(t){var un=this.options.unitNames||this._localization.localize("units");t=Math.round(t/30)*30;if(t>86400){return Math.round(t/3600)+" "+un.hours}else if(t>3600){return Math.floor(t/3600)+" "+un.hours+" "+Math.round(t%3600/60)+" "+un.minutes}else if(t>300){return Math.round(t/60)+" "+un.minutes}else if(t>60){return Math.floor(t/60)+" "+un.minutes+(t%60!==0?" "+t%60+" "+un.seconds:"")}else{return t+" "+un.seconds}},formatInstruction:function(instr,i){if(instr.text===undefined){return this.capitalize(L.Util.template(this._getInstructionTemplate(instr,i),L.extend({},instr,{exitStr:instr.exit?this._localization.localize("formatOrder")(instr.exit):"",dir:this._localization.localize(["directions",instr.direction]),modifier:this._localization.localize(["directions",instr.modifier])})))}else{return instr.text}},getIconName:function(instr,i){switch(instr.type){case"Head":if(i===0){return"depart"}break;case"WaypointReached":return"via";case"Roundabout":return"enter-roundabout";case"DestinationReached":return"arrive"}switch(instr.modifier){case"Straight":return"continue";case"SlightRight":return"bear-right";case"Right":return"turn-right";case"SharpRight":return"sharp-right";case"TurnAround":case"Uturn":return"u-turn";case"SharpLeft":return"sharp-left";case"Left":return"turn-left";case"SlightLeft":return"bear-left"}},capitalize:function(s){return s.charAt(0).toUpperCase()+s.substring(1)},_getInstructionTemplate:function(instr,i){var type=instr.type==="Straight"?i===0?"Head":"Continue":instr.type,strings=this._localization.localize(["instructions",type]);if(!strings){strings=[this._localization.localize(["directions",type])," "+this._localization.localize(["instructions","Onto"])]}return strings[0]+(strings.length>1&&instr.road?strings[1]:"")}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./localization":57}],52:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Autocomplete=_dereq_("./autocomplete");var Localization=_dereq_("./localization");function selectInputText(input){if(input.setSelectionRange){input.setSelectionRange(0,9999)}else{input.select()}}module.exports=L.Class.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{createGeocoder:function(i,nWps,options){var container=L.DomUtil.create("div","leaflet-routing-geocoder"),input=L.DomUtil.create("input","",container),remove=options.addWaypoints?L.DomUtil.create("span","leaflet-routing-remove-waypoint",container):undefined;input.disabled=!options.addWaypoints;return{container:container,input:input,closeButton:remove}},geocoderPlaceholder:function(i,numberWaypoints,geocoderElement){var l=new Localization(geocoderElement.options.language).localize("ui");return i===0?l.startPlaceholder:i<numberWaypoints-1?L.Util.template(l.viaPlaceholder,{viaNumber:i}):l.endPlaceholder},geocoderClass:function(){return""},waypointNameFallback:function(latLng){var ns=latLng.lat<0?"S":"N",ew=latLng.lng<0?"W":"E",lat=(Math.round(Math.abs(latLng.lat)*1e4)/1e4).toString(),lng=(Math.round(Math.abs(latLng.lng)*1e4)/1e4).toString();return ns+lat+", "+ew+lng},maxGeocoderTolerance:200,autocompleteOptions:{},language:"en"},initialize:function(wp,i,nWps,options){L.setOptions(this,options);var g=this.options.createGeocoder(i,nWps,this.options),closeButton=g.closeButton,geocoderInput=g.input;geocoderInput.setAttribute("placeholder",this.options.geocoderPlaceholder(i,nWps,this));geocoderInput.className=this.options.geocoderClass(i,nWps);this._element=g;this._waypoint=wp;this.update();geocoderInput.value=wp.name;L.DomEvent.addListener(geocoderInput,"click",function(){selectInputText(this)},geocoderInput);if(closeButton){L.DomEvent.addListener(closeButton,"click",function(){this.fire("delete",{waypoint:this._waypoint})},this)}new Autocomplete(geocoderInput,function(r){geocoderInput.value=r.name;wp.name=r.name;wp.latLng=r.center;this.fire("geocoded",{waypoint:wp,value:r})},this,L.extend({resultFn:this.options.geocoder.geocode,resultContext:this.options.geocoder,autocompleteFn:this.options.geocoder.suggest,autocompleteContext:this.options.geocoder},this.options.autocompleteOptions))},getContainer:function(){return this._element.container},setValue:function(v){this._element.input.value=v},update:function(force){var wp=this._waypoint,wpCoords;wp.name=wp.name||"";if(wp.latLng&&(force||!wp.name)){wpCoords=this.options.waypointNameFallback(wp.latLng);if(this.options.geocoder&&this.options.geocoder.reverse){this.options.geocoder.reverse(wp.latLng,67108864,function(rs){if(rs.length>0&&rs[0].center.distanceTo(wp.latLng)<this.options.maxGeocoderTolerance){wp.name=rs[0].name}else{wp.name=wpCoords}this._update()},this)}else{wp.name=wpCoords;this._update()}}},focus:function(){var input=this._element.input;input.focus();selectInputText(input)},_update:function(){var wp=this._waypoint,value=wp&&wp.name?wp.name:"";this.setValue(value);this.fire("reversegeocoded",{waypoint:wp,value:value})}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./autocomplete":48,"./localization":57}],53:[function(_dereq_,module,exports){(function(global){var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null,Control=_dereq_("./control"),Itinerary=_dereq_("./itinerary"),Line=_dereq_("./line"),OSRMv1=_dereq_("./osrm-v1"),Plan=_dereq_("./plan"),Waypoint=_dereq_("./waypoint"),Autocomplete=_dereq_("./autocomplete"),Formatter=_dereq_("./formatter"),GeocoderElement=_dereq_("./geocoder-element"),Localization=_dereq_("./localization"),ItineraryBuilder=_dereq_("./itinerary-builder"),Mapbox=_dereq_("./mapbox"),ErrorControl=_dereq_("./error-control");L.routing={control:function(options){return new Control(options)},itinerary:function(options){return Itinerary(options)},line:function(route,options){return new Line(route,options)},plan:function(waypoints,options){return new Plan(waypoints,options)},waypoint:function(latLng,name,options){return new Waypoint(latLng,name,options)},osrmv1:function(options){return new OSRMv1(options)},localization:function(options){return new Localization(options)},formatter:function(options){return new Formatter(options)},geocoderElement:function(wp,i,nWps,plan){return new L.Routing.GeocoderElement(wp,i,nWps,plan)},itineraryBuilder:function(options){return new ItineraryBuilder(options)},mapbox:function(accessToken,options){return new Mapbox(accessToken,options)},errorControl:function(routingControl,options){return new ErrorControl(routingControl,options)},autocomplete:function(elem,callback,context,options){return new Autocomplete(elem,callback,context,options)}};module.exports=L.Routing={Control:Control,Itinerary:Itinerary,Line:Line,OSRMv1:OSRMv1,Plan:Plan,Waypoint:Waypoint,Autocomplete:Autocomplete,Formatter:Formatter,GeocoderElement:GeocoderElement,Localization:Localization,Formatter:Formatter,ItineraryBuilder:ItineraryBuilder,control:L.routing.control,itinerary:L.routing.itinerary,line:L.routing.line,plan:L.routing.plan,waypoint:L.routing.waypoint,osrmv1:L.routing.osrmv1,geocoderElement:L.routing.geocoderElement,mapbox:L.routing.mapbox,errorControl:L.routing.errorControl}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./autocomplete":48,"./control":49,"./error-control":50,"./formatter":51,"./geocoder-element":52,"./itinerary":55,"./itinerary-builder":54,"./line":56,"./localization":57,"./mapbox":58,"./osrm-v1":59,"./plan":60,"./waypoint":61}],54:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{containerClassName:""},initialize:function(options){L.setOptions(this,options)},createContainer:function(className){var table=L.DomUtil.create("table",(className||"")+" "+this.options.containerClassName),colgroup=L.DomUtil.create("colgroup","",table);L.DomUtil.create("col","leaflet-routing-instruction-icon",colgroup);L.DomUtil.create("col","leaflet-routing-instruction-text",colgroup);L.DomUtil.create("col","leaflet-routing-instruction-distance",colgroup);return table},createStepsContainer:function(){return L.DomUtil.create("tbody","")},createStep:function(text,distance,icon,steps){var row=L.DomUtil.create("tr","",steps),span,td;td=L.DomUtil.create("td","",row);span=L.DomUtil.create("span","leaflet-routing-icon leaflet-routing-icon-"+icon,td);td.appendChild(span);td=L.DomUtil.create("td","",row);td.appendChild(document.createTextNode(text));td=L.DomUtil.create("td","",row);td.appendChild(document.createTextNode(distance));return row}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],55:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Formatter=_dereq_("./formatter");var ItineraryBuilder=_dereq_("./itinerary-builder");module.exports=L.Control.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{pointMarkerStyle:{radius:5,color:"#03f",fillColor:"white",opacity:1,fillOpacity:.7},summaryTemplate:"<h2>{name}</h2><h3>{distance}, {time}</h3>",timeTemplate:"{time}",containerClassName:"",alternativeClassName:"",minimizedClassName:"",itineraryClassName:"",totalDistanceRoundingSensitivity:-1,show:true,collapsible:undefined,collapseBtn:function(itinerary){var collapseBtn=L.DomUtil.create("span",itinerary.options.collapseBtnClass);L.DomEvent.on(collapseBtn,"click",itinerary._toggle,itinerary);itinerary._container.insertBefore(collapseBtn,itinerary._container.firstChild)},collapseBtnClass:"leaflet-routing-collapse-btn"},initialize:function(options){L.setOptions(this,options);this._formatter=this.options.formatter||new Formatter(this.options);this._itineraryBuilder=this.options.itineraryBuilder||new ItineraryBuilder({containerClassName:this.options.itineraryClassName})},onAdd:function(map){var collapsible=this.options.collapsible;collapsible=collapsible||collapsible===undefined&&map.getSize().x<=640;this._container=L.DomUtil.create("div","leaflet-routing-container leaflet-bar "+(!this.options.show?"leaflet-routing-container-hide ":"")+(collapsible?"leaflet-routing-collapsible ":"")+this.options.containerClassName);this._altContainer=this.createAlternativesContainer();this._container.appendChild(this._altContainer);L.DomEvent.disableClickPropagation(this._container);L.DomEvent.addListener(this._container,"mousewheel",function(e){L.DomEvent.stopPropagation(e)});if(collapsible){this.options.collapseBtn(this)}return this._container},onRemove:function(){},createAlternativesContainer:function(){return L.DomUtil.create("div","leaflet-routing-alternatives-container")},setAlternatives:function(routes){var i,alt,altDiv;this._clearAlts();this._routes=routes;for(i=0;i<this._routes.length;i++){alt=this._routes[i];altDiv=this._createAlternative(alt,i);this._altContainer.appendChild(altDiv);this._altElements.push(altDiv)}this._selectRoute({route:this._routes[0],alternatives:this._routes.slice(1)});return this},show:function(){L.DomUtil.removeClass(this._container,"leaflet-routing-container-hide")},hide:function(){L.DomUtil.addClass(this._container,"leaflet-routing-container-hide")},_toggle:function(){var collapsed=L.DomUtil.hasClass(this._container,"leaflet-routing-container-hide");this[collapsed?"show":"hide"]()},_createAlternative:function(alt,i){var altDiv=L.DomUtil.create("div","leaflet-routing-alt "+this.options.alternativeClassName+(i>0?" leaflet-routing-alt-minimized "+this.options.minimizedClassName:"")),template=this.options.summaryTemplate,data=L.extend({name:alt.name,distance:this._formatter.formatDistance(alt.summary.totalDistance,this.options.totalDistanceRoundingSensitivity),time:this._formatter.formatTime(alt.summary.totalTime)},alt);altDiv.innerHTML=typeof template==="function"?template(data):L.Util.template(template,data);L.DomEvent.addListener(altDiv,"click",this._onAltClicked,this);this.on("routeselected",this._selectAlt,this);altDiv.appendChild(this._createItineraryContainer(alt));return altDiv},_clearAlts:function(){var el=this._altContainer;while(el&&el.firstChild){el.removeChild(el.firstChild)}this._altElements=[]},_createItineraryContainer:function(r){var container=this._itineraryBuilder.createContainer(),steps=this._itineraryBuilder.createStepsContainer(),i,instr,step,distance,text,icon;container.appendChild(steps);for(i=0;i<r.instructions.length;i++){instr=r.instructions[i];text=this._formatter.formatInstruction(instr,i);distance=this._formatter.formatDistance(instr.distance);icon=this._formatter.getIconName(instr,i);step=this._itineraryBuilder.createStep(text,distance,icon,steps);if(instr.index){this._addRowListeners(step,r.coordinates[instr.index])}}return container},_addRowListeners:function(row,coordinate){L.DomEvent.addListener(row,"mouseover",function(){this._marker=L.circleMarker(coordinate,this.options.pointMarkerStyle).addTo(this._map)},this);L.DomEvent.addListener(row,"mouseout",function(){if(this._marker){this._map.removeLayer(this._marker);delete this._marker}},this);L.DomEvent.addListener(row,"click",function(e){this._map.panTo(coordinate);L.DomEvent.stopPropagation(e)},this)},_onAltClicked:function(e){var altElem=e.target||window.event.srcElement;while(!L.DomUtil.hasClass(altElem,"leaflet-routing-alt")){altElem=altElem.parentElement}var j=this._altElements.indexOf(altElem);var alts=this._routes.slice();var route=alts.splice(j,1)[0];this.fire("routeselected",{route:route,alternatives:alts})},_selectAlt:function(e){var altElem,j,n,classFn;altElem=this._altElements[e.route.routesIndex];if(L.DomUtil.hasClass(altElem,"leaflet-routing-alt-minimized")){for(j=0;j<this._altElements.length;j++){n=this._altElements[j];classFn=j===e.route.routesIndex?"removeClass":"addClass";L.DomUtil[classFn](n,"leaflet-routing-alt-minimized");if(this.options.minimizedClassName){L.DomUtil[classFn](n,this.options.minimizedClassName)}if(j!==e.route.routesIndex)n.scrollTop=0}}L.DomEvent.stop(e)},_selectRoute:function(routes){if(this._marker){this._map.removeLayer(this._marker);delete this._marker}this.fire("routeselected",routes)}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./formatter":51,"./itinerary-builder":54}],56:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.LayerGroup.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{styles:[{color:"black",opacity:.15,weight:9},{color:"white",opacity:.8,weight:6},{color:"red",opacity:1,weight:2}],missingRouteStyles:[{color:"black",opacity:.15,weight:7},{color:"white",opacity:.6,weight:4},{color:"gray",opacity:.8,weight:2,dashArray:"7,12"}],addWaypoints:true,extendToWaypoints:true,missingRouteTolerance:10},initialize:function(route,options){L.setOptions(this,options);L.LayerGroup.prototype.initialize.call(this,options);this._route=route;if(this.options.extendToWaypoints){this._extendToWaypoints()}this._addSegment(route.coordinates,this.options.styles,this.options.addWaypoints)},getBounds:function(){return L.latLngBounds(this._route.coordinates)},_findWaypointIndices:function(){var wps=this._route.inputWaypoints,indices=[],i;for(i=0;i<wps.length;i++){indices.push(this._findClosestRoutePoint(wps[i].latLng))}return indices},_findClosestRoutePoint:function(latlng){var minDist=Number.MAX_VALUE,minIndex,i,d;for(i=this._route.coordinates.length-1;i>=0;i--){d=latlng.distanceTo(this._route.coordinates[i]);if(d<minDist){minIndex=i;minDist=d}}return minIndex},_extendToWaypoints:function(){var wps=this._route.inputWaypoints,wpIndices=this._getWaypointIndices(),i,wpLatLng,routeCoord;for(i=0;i<wps.length;i++){wpLatLng=wps[i].latLng;routeCoord=L.latLng(this._route.coordinates[wpIndices[i]]);if(wpLatLng.distanceTo(routeCoord)>this.options.missingRouteTolerance){this._addSegment([wpLatLng,routeCoord],this.options.missingRouteStyles)}}},_addSegment:function(coords,styles,mouselistener){var i,pl;for(i=0;i<styles.length;i++){pl=L.polyline(coords,styles[i]);this.addLayer(pl);if(mouselistener){pl.on("mousedown",this._onLineTouched,this)}}},_findNearestWpBefore:function(i){var wpIndices=this._getWaypointIndices(),j=wpIndices.length-1;while(j>=0&&wpIndices[j]>i){j--}return j},_onLineTouched:function(e){var afterIndex=this._findNearestWpBefore(this._findClosestRoutePoint(e.latlng));this.fire("linetouched",{afterIndex:afterIndex,latlng:e.latlng});L.DomEvent.stop(e)},_getWaypointIndices:function(){if(!this._wpIndices){this._wpIndices=this._route.waypointIndices||this._findWaypointIndices()}return this._wpIndices}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],57:[function(_dereq_,module,exports){(function(){"use strict";var spanish={directions:{N:"norte",NE:"noreste",E:"este",SE:"sureste",S:"sur",SW:"suroeste",W:"oeste",NW:"noroeste",SlightRight:"leve giro a la derecha",Right:"derecha",SharpRight:"giro pronunciado a la derecha",SlightLeft:"leve giro a la izquierda",Left:"izquierda",SharpLeft:"giro pronunciado a la izquierda",Uturn:"media vuelta"},instructions:{Head:["Derecho {dir}"," sobre {road}"],Continue:["Continuar {dir}"," en {road}"],TurnAround:["Dar vuelta"],WaypointReached:["Llegó a un punto del camino"],Roundabout:["Tomar {exitStr} salida en la rotonda"," en {road}"],DestinationReached:["Llegada a destino"],Fork:["En el cruce gira a {modifier}"," hacia {road}"],Merge:["Incorpórate {modifier}"," hacia {road}"],OnRamp:["Gira {modifier} en la salida"," hacia {road}"],OffRamp:["Toma la salida {modifier}"," hacia {road}"],EndOfRoad:["Gira {modifier} al final de la carretera"," hacia {road}"],Onto:"hacia {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Inicio",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Destino"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}};L.Routing=L.Routing||{};var Localization=L.Class.extend({initialize:function(langs){this._langs=L.Util.isArray(langs)?langs.slice():[langs,"en"];for(var i=0,l=this._langs.length;i<l;i++){var generalizedCode=/([A-Za-z]+)/.exec(this._langs[i])[1];if(!Localization[this._langs[i]]){if(Localization[generalizedCode]){this._langs[i]=generalizedCode}else{throw new Error('No localization for language "'+this._langs[i]+'".')}}}},localize:function(keys){var dict,key,value;keys=L.Util.isArray(keys)?keys:[keys];for(var i=0,l=this._langs.length;i<l;i++){dict=Localization[this._langs[i]];for(var j=0,nKeys=keys.length;dict&&j<nKeys;j++){key=keys[j];value=dict[key];dict=value}if(value){return value}}}});module.exports=L.extend(Localization,{en:{directions:{N:"north",NE:"northeast",E:"east",SE:"southeast",S:"south",SW:"southwest",W:"west",NW:"northwest",SlightRight:"slight right",Right:"right",SharpRight:"sharp right",SlightLeft:"slight left",Left:"left",SharpLeft:"sharp left",Uturn:"Turn around"},instructions:{Head:["Head {dir}"," on {road}"],Continue:["Continue {dir}"],TurnAround:["Turn around"],WaypointReached:["Waypoint reached"],Roundabout:["Take the {exitStr} exit in the roundabout"," onto {road}"],DestinationReached:["Destination reached"],Fork:["At the fork, turn {modifier}"," onto {road}"],Merge:["Merge {modifier}"," onto {road}"],OnRamp:["Turn {modifier} on the ramp"," onto {road}"],OffRamp:["Take the ramp on the {modifier}"," onto {road}"],EndOfRoad:["Turn {modifier} at the end of the road"," onto {road}"],Onto:"onto {road}"},formatOrder:function(n){var i=n%10-1,suffix=["st","nd","rd"];return suffix[i]?n+suffix[i]:n+"th"},ui:{startPlaceholder:"Start",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"End"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}},de:{directions:{N:"Norden",NE:"Nordosten",E:"Osten",SE:"Südosten",S:"Süden",SW:"Südwesten",W:"Westen",NW:"Nordwesten",SlightRight:"leicht rechts",Right:"rechts",SharpRight:"scharf rechts",SlightLeft:"leicht links",Left:"links",SharpLeft:"scharf links",Uturn:"Wenden"},instructions:{Head:["Richtung {dir}"," auf {road}"],Continue:["Geradeaus Richtung {dir}"," auf {road}"],SlightRight:["Leicht rechts abbiegen"," auf {road}"],Right:["Rechts abbiegen"," auf {road}"],SharpRight:["Scharf rechts abbiegen"," auf {road}"],TurnAround:["Wenden"],SharpLeft:["Scharf links abbiegen"," auf {road}"],Left:["Links abbiegen"," auf {road}"],SlightLeft:["Leicht links abbiegen"," auf {road}"],WaypointReached:["Zwischenhalt erreicht"],Roundabout:["Nehmen Sie die {exitStr} Ausfahrt im Kreisverkehr"," auf {road}"],DestinationReached:["Sie haben ihr Ziel erreicht"],Fork:["An der Kreuzung {modifier}"," auf {road}"],Merge:["Fahren Sie {modifier} weiter"," auf {road}"],OnRamp:["Fahren Sie {modifier} auf die Auffahrt"," auf {road}"],OffRamp:["Nehmen Sie die Ausfahrt {modifier}"," auf {road}"],EndOfRoad:["Fahren Sie {modifier} am Ende der StraÃe"," auf {road}"],Onto:"auf {road}"},formatOrder:function(n){return n+"."},ui:{startPlaceholder:"Start",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Ziel"}},sv:{directions:{N:"norr",NE:"nordost",E:"öst",SE:"sydost",S:"syd",SW:"sydväst",W:"väst",NW:"nordväst",SlightRight:"svagt höger",Right:"höger",SharpRight:"skarpt höger",SlightLeft:"svagt vänster",Left:"vänster",SharpLeft:"skarpt vänster",Uturn:"Vänd"},instructions:{Head:["à k Ã¥t {dir}"," till {road}"],Continue:["Fortsätt {dir}"],SlightRight:["Svagt höger"," till {road}"],Right:["Sväng höger"," till {road}"],SharpRight:["Skarpt höger"," till {road}"],TurnAround:["Vänd"],SharpLeft:["Skarpt vänster"," till {road}"],Left:["Sväng vänster"," till {road}"],SlightLeft:["Svagt vänster"," till {road}"],WaypointReached:["Viapunkt nÃ¥dd"],Roundabout:["Tag {exitStr} avfarten i rondellen"," till {road}"],DestinationReached:["Framme vid resans mÃ¥l"],Fork:["Tag av {modifier}"," till {road}"],Merge:["Anslut {modifier} "," till {road}"],OnRamp:["Tag pÃ¥farten {modifier}"," till {road}"],OffRamp:["Tag avfarten {modifier}"," till {road}"],EndOfRoad:["Sväng {modifier} vid vägens slut"," till {road}"],Onto:"till {road}"},formatOrder:function(n){return["första","andra","tredje","fjärde","femte","sjätte","sjunde","Ã¥ttonde","nionde","tionde"][n-1]},ui:{startPlaceholder:"FrÃ¥n",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Till"}},es:spanish,sp:spanish,nl:{directions:{N:"noordelijke",NE:"noordoostelijke",E:"oostelijke",SE:"zuidoostelijke",S:"zuidelijke",SW:"zuidewestelijke",W:"westelijke",NW:"noordwestelijke"},instructions:{Head:["Vertrek in {dir} richting"," de {road} op"],Continue:["Ga in {dir} richting"," de {road} op"],SlightRight:["Volg de weg naar rechts"," de {road} op"],Right:["Ga rechtsaf"," de {road} op"],SharpRight:["Ga scherpe bocht naar rechts"," de {road} op"],TurnAround:["Keer om"],SharpLeft:["Ga scherpe bocht naar links"," de {road} op"],Left:["Ga linksaf"," de {road} op"],SlightLeft:["Volg de weg naar links"," de {road} op"],WaypointReached:["Aangekomen bij tussenpunt"],Roundabout:["Neem de {exitStr} afslag op de rotonde"," de {road} op"],DestinationReached:["Aangekomen op eindpunt"]},formatOrder:function(n){if(n===1||n>=20){return n+"ste"}else{return n+"de"}},ui:{startPlaceholder:"Vertrekpunt",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Bestemming"}},fr:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-ouest",W:"ouest",NW:"nord-ouest"},instructions:{Head:["Tout droit au {dir}"," sur {road}"],Continue:["Continuer au {dir}"," sur {road}"],SlightRight:["Légèrement à droite"," sur {road}"],Right:["A droite"," sur {road}"],SharpRight:["Complètement à droite"," sur {road}"],TurnAround:["Faire demi-tour"],SharpLeft:["Complètement à gauche"," sur {road}"],Left:["A gauche"," sur {road}"],SlightLeft:["Légèrement à gauche"," sur {road}"],WaypointReached:["Point d'étape atteint"],Roundabout:["Au rond-point, prenez la {exitStr} sortie"," sur {road}"],DestinationReached:["Destination atteinte"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Départ",viaPlaceholder:"Intermédiaire {viaNumber}",endPlaceholder:"Arrivée"}},it:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-ovest",W:"ovest",NW:"nord-ovest"},instructions:{Head:["Dritto verso {dir}"," su {road}"],Continue:["Continuare verso {dir}"," su {road}"],SlightRight:["Mantenere la destra"," su {road}"],Right:["A destra"," su {road}"],SharpRight:["Strettamente a destra"," su {road}"],TurnAround:["Fare inversione di marcia"],SharpLeft:["Strettamente a sinistra"," su {road}"],Left:["A sinistra"," sur {road}"],SlightLeft:["Mantenere la sinistra"," su {road}"],WaypointReached:["Punto di passaggio raggiunto"],Roundabout:["Alla rotonda, prendere la {exitStr} uscita"],DestinationReached:["Destinazione raggiunta"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Partenza",viaPlaceholder:"Intermedia {viaNumber}",endPlaceholder:"Destinazione"}},pt:{directions:{N:"norte",NE:"nordeste",E:"leste",SE:"sudeste",S:"sul",SW:"sudoeste",W:"oeste",NW:"noroeste",SlightRight:"curva ligeira a direita",Right:"direita",SharpRight:"curva fechada a direita",SlightLeft:"ligeira a esquerda",Left:"esquerda",SharpLeft:"curva fechada a esquerda",Uturn:"Meia volta"},instructions:{Head:["Siga {dir}"," na {road}"],Continue:["Continue {dir}"," na {road}"],SlightRight:["Curva ligeira a direita"," na {road}"],Right:["Curva a direita"," na {road}"],SharpRight:["Curva fechada a direita"," na {road}"],TurnAround:["Retorne"],SharpLeft:["Curva fechada a esquerda"," na {road}"],Left:["Curva a esquerda"," na {road}"],SlightLeft:["Curva ligueira a esquerda"," na {road}"],WaypointReached:["Ponto de interesse atingido"],Roundabout:["Pegue a {exitStr} saÃda na rotatória"," na {road}"],DestinationReached:["Destino atingido"],Fork:["Na encruzilhada, vire a {modifier}"," na {road}"],Merge:["Entre à {modifier}"," na {road}"],OnRamp:["Vire {modifier} na rampa"," na {road}"],OffRamp:["Entre na rampa na {modifier}"," na {road}"],EndOfRoad:["Vire {modifier} no fim da rua"," na {road}"],Onto:"na {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Origem",viaPlaceholder:"Intermédio {viaNumber}",endPlaceholder:"Destino"}},sk:{directions:{N:"sever",NE:"serverovýchod",E:"východ",SE:"juhovýchod",S:"juh",SW:"juhozápad",W:"západ",NW:"serverozápad"},instructions:{Head:["Mierte na {dir}"," na {road}"],Continue:["PokraÄujte na {dir}"," na {road}"],SlightRight:["Mierne doprava"," na {road}"],Right:["Doprava"," na {road}"],SharpRight:["Prudko doprava"," na {road}"],TurnAround:["OtoÄte sa"],SharpLeft:["Prudko doľava"," na {road}"],Left:["Doľava"," na {road}"],SlightLeft:["Mierne doľava"," na {road}"],WaypointReached:["Ste v prejazdovom bode."],Roundabout:["OdboÄte na {exitStr} výjazde"," na {road}"],DestinationReached:["PriÅ¡li ste do cieľa."]},formatOrder:function(n){var i=n%10-1,suffix=[".",".","."];return suffix[i]?n+suffix[i]:n+"."},ui:{startPlaceholder:"ZaÄiatok",viaPlaceholder:"Cez {viaNumber}",endPlaceholder:"Koniec"}},el:{directions:{N:"βÏÏεια",NE:"βοÏειοαναÏολικά",E:"αναÏολικά",SE:"νοÏιοαναÏολικά",S:"νÏÏια",SW:"νοÏÎ¹Î¿Î´Ï Ïικά",W:"Î´Ï Ïικά",NW:"βοÏÎµÎ¹Î¿Î´Ï Ïικά"},instructions:{Head:["ÎαÏÎµÏ Î¸Ï Î½Î¸ÎµÎ¯Ïε {dir}"," ÏÏην {road}"],Continue:["Î£Ï Î½ÎµÏίÏÏε {dir}"," ÏÏην {road}"],SlightRight:["ÎλαÏÏÏÏ Î´ÎµÎ¾Î¹Î¬"," ÏÏην {road}"],Right:["Îεξιά"," ÏÏην {road}"],SharpRight:["ÎÏÏÏομη δεξιά ÏÏÏοÏή"," ÏÏην {road}"],TurnAround:["ÎάνÏε αναÏÏÏοÏή"],SharpLeft:["ÎÏÏÏομη αÏιÏÏεÏή ÏÏÏοÏή"," ÏÏην {road}"],Left:["ÎÏιÏÏεÏά"," ÏÏην {road}"],SlightLeft:["ÎλαÏÏÏÏ Î±ÏιÏÏεÏά"," ÏÏην {road}"],WaypointReached:["ΦÏάÏαÏε ÏÏο Ïημείο αναÏοÏάÏ"],Roundabout:["ÎÎºÎ¿Î»Î¿Ï Î¸Î®ÏÏε Ïην {exitStr} Îξοδο ÏÏο ÎºÏ ÎºÎ»Î¹ÎºÏ ÎºÏμβο"," ÏÏην {road}"],DestinationReached:["ΦÏάÏαÏε ÏÏον ÏÏοοÏιÏÎ¼Ï ÏαÏ"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"ÎÏεÏηÏία",viaPlaceholder:"μÎÏÏ {viaNumber}",endPlaceholder:"Î ÏοοÏιÏμÏÏ"}},ca:{ 2180directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-oest",W:"oest",NW:"nord-oest",SlightRight:"lleu gir a la dreta",Right:"dreta",SharpRight:"gir pronunciat a la dreta",SlightLeft:"gir pronunciat a l'esquerra",Left:"esquerra",SharpLeft:"lleu gir a l'esquerra",Uturn:"mitja volta"},instructions:{Head:["Recte {dir}"," sobre {road}"],Continue:["Continuar {dir}"],TurnAround:["Donar la volta"],WaypointReached:["Ha arribat a un punt del camÃ"],Roundabout:["Agafar {exitStr} sortida a la rotonda"," a {road}"],DestinationReached:["Arribada al destÃ"],Fork:["A la cruïlla gira a la {modifier}"," cap a {road}"],Merge:["Incorpora't {modifier}"," a {road}"],OnRamp:["Gira {modifier} a la sortida"," cap a {road}"],OffRamp:["Pren la sortida {modifier}"," cap a {road}"],EndOfRoad:["Gira {modifier} al final de la carretera"," cap a {road}"],Onto:"cap a {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Origen",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"DestÃ"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}},ru:{directions:{N:"ÑевеÑ",NE:"ÑевеÑовоÑÑок",E:"воÑÑок",SE:"ÑговоÑÑок",S:"Ñг",SW:"Ñгозапад",W:"запад",NW:"ÑевеÑозапад",SlightRight:"плавно напÑаво",Right:"напÑаво",SharpRight:"Ñезко напÑаво",SlightLeft:"плавно налево",Left:"налево",SharpLeft:"Ñезко налево",Uturn:"ÑазвеÑнÑÑÑÑÑ"},instructions:{Head:["ÐаÑаÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ðµ на {dir}"," по {road}"],Continue:["ÐÑодолжаÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ðµ на {dir}"," по {road}"],SlightRight:["ÐлавнÑй повоÑÐ¾Ñ Ð½Ð°Ð¿Ñаво"," на {road}"],Right:["ÐапÑаво"," на {road}"],SharpRight:["Резкий повоÑÐ¾Ñ Ð½Ð°Ð¿Ñаво"," на {road}"],TurnAround:["РазвеÑнÑÑÑÑÑ"],SharpLeft:["Резкий повоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],Left:["ÐовоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],SlightLeft:["ÐлавнÑй повоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],WaypointReached:["ТоÑка доÑÑигнÑÑа"],Roundabout:["{exitStr} ÑÑезд Ñ ÐºÐ¾Ð»ÑÑа"," на {road}"],DestinationReached:["ÐконÑание маÑÑÑÑÑа"],Fork:["Ðа Ñазвилке повеÑниÑе {modifier}"," на {road}"],Merge:["ÐеÑеÑÑÑойÑеÑÑ {modifier}"," на {road}"],OnRamp:["ÐовеÑниÑе {modifier} на ÑÑезд"," на {road}"],OffRamp:["СÑезжайÑе на {modifier}"," на {road}"],EndOfRoad:["ÐовеÑниÑе {modifier} в конÑе доÑоги"," на {road}"],Onto:"на {road}"},formatOrder:function(n){return n+"-й"},ui:{startPlaceholder:"ÐаÑало",viaPlaceholder:"ЧеÑез {viaNumber}",endPlaceholder:"ÐонеÑ"},units:{meters:"м",kilometers:"км",yards:"ÑÑд",miles:"ми",hours:"Ñ",minutes:"м",seconds:"Ñ"}},pl:{directions:{N:"póÅnoc",NE:"póÅnocny wschód",E:"wschód",SE:"poÅudniowy wschód",S:"poÅudnie",SW:"poÅudniowy zachód",W:"zachód",NW:"póÅnocny zachód",SlightRight:"lekko w prawo",Right:"w prawo",SharpRight:"ostro w prawo",SlightLeft:"lekko w lewo",Left:"w lewo",SharpLeft:"ostro w lewo",Uturn:"zawróÄ"},instructions:{Head:["Kieruj siÄ na {dir}"," na {road}"],Continue:["Jedź dalej przez {dir}"],TurnAround:["ZawróÄ"],WaypointReached:["Punkt poÅredni"],Roundabout:["Wyjedź {exitStr} zjazdem na rondzie"," na {road}"],DestinationReached:["Dojechano do miejsca docelowego"],Fork:["Na rozwidleniu {modifier}"," na {road}"],Merge:["Zjedź {modifier}"," na {road}"],OnRamp:["Wjazd {modifier}"," na {road}"],OffRamp:["Zjazd {modifier}"," na {road}"],EndOfRoad:["SkrÄÄ {modifier} na koÅcu drogi"," na {road}"],Onto:"na {road}"},formatOrder:function(n){return n+"."},ui:{startPlaceholder:"PoczÄ tek",viaPlaceholder:"Przez {viaNumber}",endPlaceholder:"Koniec"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"godz",minutes:"min",seconds:"s"}}})})()},{}],58:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var OSRMv1=_dereq_("./osrm-v1");module.exports=OSRMv1.extend({options:{serviceUrl:"https://api.mapbox.com/directions/v5",profile:"mapbox/driving",useHints:false},initialize:function(accessToken,options){L.Routing.OSRMv1.prototype.initialize.call(this,options);this.options.requestParameters=this.options.requestParameters||{};this.options.requestParameters.access_token=accessToken}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./osrm-v1":59}],59:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null,corslite=_dereq_("@mapbox/corslite"),polyline=_dereq_("@mapbox/polyline"),osrmTextInstructions=_dereq_("osrm-text-instructions")("v5");var Waypoint=_dereq_("./waypoint");module.exports=L.Class.extend({options:{serviceUrl:"https://router.project-osrm.org/route/v1",profile:"driving",timeout:30*1e3,routingOptions:{alternatives:true,steps:true},polylinePrecision:5,useHints:true,suppressDemoServerWarning:false,language:"en"},initialize:function(options){L.Util.setOptions(this,options);this._hints={locations:{}};if(!this.options.suppressDemoServerWarning&&this.options.serviceUrl.indexOf("//router.project-osrm.org")>=0){console.warn("You are using OSRM's demo server. "+"Please note that it is **NOT SUITABLE FOR PRODUCTION USE**.\n"+"Refer to the demo server's usage policy: "+"https://github.com/Project-OSRM/osrm-backend/wiki/Api-usage-policy\n\n"+"To change, set the serviceUrl option.\n\n"+"Please do not report issues with this server to neither "+"Leaflet Routing Machine or OSRM - it's for\n"+"demo only, and will sometimes not be available, or work in "+"unexpected ways.\n\n"+"Please set up your own OSRM server, or use a paid service "+"provider for production.")}},route:function(waypoints,callback,context,options){var timedOut=false,wps=[],url,timer,wp,i,xhr;options=L.extend({},this.options.routingOptions,options);url=this.buildRouteUrl(waypoints,options);if(this.options.requestParameters){url+=L.Util.getParamString(this.options.requestParameters,url)}timer=setTimeout(function(){timedOut=true;callback.call(context||callback,{status:-1,message:"OSRM request timed out."})},this.options.timeout);for(i=0;i<waypoints.length;i++){wp=waypoints[i];wps.push(new Waypoint(wp.latLng,wp.name,wp.options))}return xhr=corslite(url,L.bind(function(err,resp){var data,error={};clearTimeout(timer);if(!timedOut){if(!err){try{data=JSON.parse(resp.responseText);try{return this._routeDone(data,wps,options,callback,context)}catch(ex){error.status=-3;error.message=ex.toString()}}catch(ex){error.status=-2;error.message="Error parsing OSRM response: "+ex.toString()}}else{error.message="HTTP request failed: "+err.type+(err.target&&err.target.status?" HTTP "+err.target.status+": "+err.target.statusText:"");error.url=url;error.status=-1;error.target=err}callback.call(context||callback,error)}else{xhr.abort()}},this))},requiresMoreDetail:function(route,zoom,bounds){if(!route.properties.isSimplified){return false}var waypoints=route.inputWaypoints,i;for(i=0;i<waypoints.length;++i){if(!bounds.contains(waypoints[i].latLng)){return true}}return false},_routeDone:function(response,inputWaypoints,options,callback,context){var alts=[],actualWaypoints,i,route;context=context||callback;if(response.code!=="Ok"){callback.call(context,{status:response.code});return}actualWaypoints=this._toWaypoints(inputWaypoints,response.waypoints);for(i=0;i<response.routes.length;i++){route=this._convertRoute(response.routes[i]);route.inputWaypoints=inputWaypoints;route.waypoints=actualWaypoints;route.properties={isSimplified:!options||!options.geometryOnly||options.simplifyGeometry};alts.push(route)}this._saveHintData(response.waypoints,inputWaypoints);callback.call(context,null,alts)},_convertRoute:function(responseRoute){var result={name:"",coordinates:[],instructions:[],summary:{totalDistance:responseRoute.distance,totalTime:responseRoute.duration}},legNames=[],waypointIndices=[],index=0,legCount=responseRoute.legs.length,hasSteps=responseRoute.legs[0].steps.length>0,i,j,leg,step,geometry,type,modifier,text,stepToText;if(this.options.stepToText){stepToText=this.options.stepToText}else{stepToText=L.bind(osrmTextInstructions.compile,osrmTextInstructions,this.options.language)}for(i=0;i<legCount;i++){leg=responseRoute.legs[i];legNames.push(leg.summary&&leg.summary.charAt(0).toUpperCase()+leg.summary.substring(1));for(j=0;j<leg.steps.length;j++){step=leg.steps[j];geometry=this._decodePolyline(step.geometry);result.coordinates.push.apply(result.coordinates,geometry);type=this._maneuverToInstructionType(step.maneuver,i===legCount-1);modifier=this._maneuverToModifier(step.maneuver);text=stepToText(step,{legCount:legCount,legIndex:i});if(type){if(i==0&&step.maneuver.type=="depart"||step.maneuver.type=="arrive"){waypointIndices.push(index)}result.instructions.push({type:type,distance:step.distance,time:step.duration,road:step.name,direction:this._bearingToDirection(step.maneuver.bearing_after),exit:step.maneuver.exit,index:index,mode:step.mode,modifier:modifier,text:text})}index+=geometry.length}}result.name=legNames.join(", ");if(!hasSteps){result.coordinates=this._decodePolyline(responseRoute.geometry)}else{result.waypointIndices=waypointIndices}return result},_bearingToDirection:function(bearing){var oct=Math.round(bearing/45)%8;return["N","NE","E","SE","S","SW","W","NW"][oct]},_maneuverToInstructionType:function(maneuver,lastLeg){switch(maneuver.type){case"new name":return"Continue";case"depart":return"Head";case"arrive":return lastLeg?"DestinationReached":"WaypointReached";case"roundabout":case"rotary":return"Roundabout";case"merge":case"fork":case"on ramp":case"off ramp":case"end of road":return this._camelCase(maneuver.type);default:return this._camelCase(maneuver.modifier)}},_maneuverToModifier:function(maneuver){var modifier=maneuver.modifier;switch(maneuver.type){case"merge":case"fork":case"on ramp":case"off ramp":case"end of road":modifier=this._leftOrRight(modifier)}return modifier&&this._camelCase(modifier)},_camelCase:function(s){var words=s.split(" "),result="";for(var i=0,l=words.length;i<l;i++){result+=words[i].charAt(0).toUpperCase()+words[i].substring(1)}return result},_leftOrRight:function(d){return d.indexOf("left")>=0?"Left":"Right"},_decodePolyline:function(routeGeometry){var cs=polyline.decode(routeGeometry,this.options.polylinePrecision),result=new Array(cs.length),i;for(i=cs.length-1;i>=0;i--){result[i]=L.latLng(cs[i])}return result},_toWaypoints:function(inputWaypoints,vias){var wps=[],i,viaLoc;for(i=0;i<vias.length;i++){viaLoc=vias[i].location;wps.push(new Waypoint(L.latLng(viaLoc[1],viaLoc[0]),inputWaypoints[i].name,inputWaypoints[i].options))}return wps},buildRouteUrl:function(waypoints,options){var locs=[],hints=[],wp,latLng,computeInstructions,computeAlternative=true;for(var i=0;i<waypoints.length;i++){wp=waypoints[i];latLng=wp.latLng;locs.push(latLng.lng+","+latLng.lat);hints.push(this._hints.locations[this._locationKey(latLng)]||"")}computeInstructions=true;return this.options.serviceUrl+"/"+this.options.profile+"/"+locs.join(";")+"?"+(options.geometryOnly?options.simplifyGeometry?"":"overview=full":"overview=false")+"&alternatives="+computeAlternative.toString()+"&steps="+computeInstructions.toString()+(this.options.useHints?"&hints="+hints.join(";"):"")+(options.allowUTurns?"&continue_straight="+!options.allowUTurns:"")},_locationKey:function(location){return location.lat+","+location.lng},_saveHintData:function(actualWaypoints,waypoints){var loc;this._hints={locations:{}};for(var i=actualWaypoints.length-1;i>=0;i--){loc=waypoints[i].latLng;this._hints.locations[this._locationKey(loc)]=actualWaypoints[i].hint}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./waypoint":61,"@mapbox/corslite":1,"@mapbox/polyline":2,"osrm-text-instructions":3}],60:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var GeocoderElement=_dereq_("./geocoder-element");var Waypoint=_dereq_("./waypoint");module.exports=(L.Layer||L.Class).extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{dragStyles:[{color:"black",opacity:.15,weight:9},{color:"white",opacity:.8,weight:6},{color:"red",opacity:1,weight:2,dashArray:"7,12"}],draggableWaypoints:true,routeWhileDragging:false,addWaypoints:true,reverseWaypoints:false,addButtonClassName:"",language:"en",createGeocoderElement:function(wp,i,nWps,plan){return new GeocoderElement(wp,i,nWps,plan)},createMarker:function(i,wp){var options={draggable:this.draggableWaypoints},marker=L.marker(wp.latLng,options);return marker},geocodersClassName:""},initialize:function(waypoints,options){L.Util.setOptions(this,options);this._waypoints=[];this.setWaypoints(waypoints)},isReady:function(){var i;for(i=0;i<this._waypoints.length;i++){if(!this._waypoints[i].latLng){return false}}return true},getWaypoints:function(){var i,wps=[];for(i=0;i<this._waypoints.length;i++){wps.push(this._waypoints[i])}return wps},setWaypoints:function(waypoints){var args=[0,this._waypoints.length].concat(waypoints);this.spliceWaypoints.apply(this,args);return this},spliceWaypoints:function(){var args=[arguments[0],arguments[1]],i;for(i=2;i<arguments.length;i++){args.push(arguments[i]&&arguments[i].hasOwnProperty("latLng")?arguments[i]:new Waypoint(arguments[i]))}[].splice.apply(this._waypoints,args);while(this._waypoints.length<2){this.spliceWaypoints(this._waypoints.length,0,null)}this._updateMarkers();this._fireChanged.apply(this,args)},onAdd:function(map){this._map=map;this._updateMarkers()},onRemove:function(){var i;this._removeMarkers();if(this._newWp){for(i=0;i<this._newWp.lines.length;i++){this._map.removeLayer(this._newWp.lines[i])}}delete this._map},createGeocoders:function(){var container=L.DomUtil.create("div","leaflet-routing-geocoders "+this.options.geocodersClassName),waypoints=this._waypoints,addWpBtn,reverseBtn;this._geocoderContainer=container;this._geocoderElems=[];if(this.options.addWaypoints){addWpBtn=L.DomUtil.create("button","leaflet-routing-add-waypoint "+this.options.addButtonClassName,container);addWpBtn.setAttribute("type","button");L.DomEvent.addListener(addWpBtn,"click",function(){this.spliceWaypoints(waypoints.length,0,null)},this)}if(this.options.reverseWaypoints){reverseBtn=L.DomUtil.create("button","leaflet-routing-reverse-waypoints",container);reverseBtn.setAttribute("type","button");L.DomEvent.addListener(reverseBtn,"click",function(){this._waypoints.reverse();this.setWaypoints(this._waypoints)},this)}this._updateGeocoders();this.on("waypointsspliced",this._updateGeocoders);return container},_createGeocoder:function(i){var geocoder=this.options.createGeocoderElement(this._waypoints[i],i,this._waypoints.length,this.options);geocoder.on("delete",function(){if(i>0||this._waypoints.length>2){this.spliceWaypoints(i,1)}else{this.spliceWaypoints(i,1,new Waypoint)}},this).on("geocoded",function(e){this._updateMarkers();this._fireChanged();this._focusGeocoder(i+1);this.fire("waypointgeocoded",{waypointIndex:i,waypoint:e.waypoint})},this).on("reversegeocoded",function(e){this.fire("waypointgeocoded",{waypointIndex:i,waypoint:e.waypoint})},this);return geocoder},_updateGeocoders:function(){var elems=[],i,geocoderElem;for(i=0;i<this._geocoderElems.length;i++){this._geocoderContainer.removeChild(this._geocoderElems[i].getContainer())}for(i=this._waypoints.length-1;i>=0;i--){geocoderElem=this._createGeocoder(i);this._geocoderContainer.insertBefore(geocoderElem.getContainer(),this._geocoderContainer.firstChild);elems.push(geocoderElem)}this._geocoderElems=elems.reverse()},_removeMarkers:function(){var i;if(this._markers){for(i=0;i<this._markers.length;i++){if(this._markers[i]){this._map.removeLayer(this._markers[i])}}}this._markers=[]},_updateMarkers:function(){var i,m;if(!this._map){return}this._removeMarkers();for(i=0;i<this._waypoints.length;i++){if(this._waypoints[i].latLng){m=this.options.createMarker(i,this._waypoints[i],this._waypoints.length);if(m){m.addTo(this._map);if(this.options.draggableWaypoints){this._hookWaypointEvents(m,i)}}}else{m=null}this._markers.push(m)}},_fireChanged:function(){this.fire("waypointschanged",{waypoints:this.getWaypoints()});if(arguments.length>=2){this.fire("waypointsspliced",{index:Array.prototype.shift.call(arguments),nRemoved:Array.prototype.shift.call(arguments),added:arguments})}},_hookWaypointEvents:function(m,i,trackMouseMove){var eventLatLng=function(e){return trackMouseMove?e.latlng:e.target.getLatLng()},dragStart=L.bind(function(e){this.fire("waypointdragstart",{index:i,latlng:eventLatLng(e)})},this),drag=L.bind(function(e){this._waypoints[i].latLng=eventLatLng(e);this.fire("waypointdrag",{index:i,latlng:eventLatLng(e)})},this),dragEnd=L.bind(function(e){this._waypoints[i].latLng=eventLatLng(e);this._waypoints[i].name="";if(this._geocoderElems){this._geocoderElems[i].update(true)}this.fire("waypointdragend",{index:i,latlng:eventLatLng(e)});this._fireChanged()},this),mouseMove,mouseUp;if(trackMouseMove){mouseMove=L.bind(function(e){this._markers[i].setLatLng(e.latlng);drag(e)},this);mouseUp=L.bind(function(e){this._map.dragging.enable();this._map.off("mouseup",mouseUp);this._map.off("mousemove",mouseMove);dragEnd(e)},this);this._map.dragging.disable();this._map.on("mousemove",mouseMove);this._map.on("mouseup",mouseUp);dragStart({latlng:this._waypoints[i].latLng})}else{m.on("dragstart",dragStart);m.on("drag",drag);m.on("dragend",dragEnd)}},dragNewWaypoint:function(e){var newWpIndex=e.afterIndex+1;if(this.options.routeWhileDragging){this.spliceWaypoints(newWpIndex,0,e.latlng);this._hookWaypointEvents(this._markers[newWpIndex],newWpIndex,true)}else{this._dragNewWaypoint(newWpIndex,e.latlng)}},_dragNewWaypoint:function(newWpIndex,initialLatLng){var wp=new Waypoint(initialLatLng),prevWp=this._waypoints[newWpIndex-1],nextWp=this._waypoints[newWpIndex],marker=this.options.createMarker(newWpIndex,wp,this._waypoints.length+1),lines=[],draggingEnabled=this._map.dragging.enabled(),mouseMove=L.bind(function(e){var i,latLngs;if(marker){marker.setLatLng(e.latlng)}for(i=0;i<lines.length;i++){latLngs=lines[i].getLatLngs();latLngs.splice(1,1,e.latlng);lines[i].setLatLngs(latLngs)}L.DomEvent.stop(e)},this),mouseUp=L.bind(function(e){var i;if(marker){this._map.removeLayer(marker)}for(i=0;i<lines.length;i++){this._map.removeLayer(lines[i])}this._map.off("mousemove",mouseMove);this._map.off("mouseup",mouseUp);this.spliceWaypoints(newWpIndex,0,e.latlng);if(draggingEnabled){this._map.dragging.enable()}L.DomEvent.stop(e)},this),i;if(marker){marker.addTo(this._map)}for(i=0;i<this.options.dragStyles.length;i++){lines.push(L.polyline([prevWp.latLng,initialLatLng,nextWp.latLng],this.options.dragStyles[i]).addTo(this._map))}if(draggingEnabled){this._map.dragging.disable()}this._map.on("mousemove",mouseMove);this._map.on("mouseup",mouseUp)},_focusGeocoder:function(i){if(this._geocoderElems[i]){this._geocoderElems[i].focus()}else{document.activeElement.blur()}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./geocoder-element":52,"./waypoint":61}],61:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{allowUTurn:false},initialize:function(latLng,name,options){L.Util.setOptions(this,options);this.latLng=L.latLng(latLng);this.name=name}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}]},{},[53]);
2181 2182(function (L) { 2183 if (!L) return; 2184 2185 /** 2186 * ---------------------------------------- 2187 * MARKER EXTENSIONS 2188 * ---------------------------------------- 2189 */ 2190 2191 // Save original setIcon method for safe override 2192 if (!L.Marker.prototype._setIconOriginal) { 2193 L.Marker.prototype._setIconOriginal = L.Marker.prototype.setIcon; 2194 } 2195 2196 // Extend L.Marker with Google Mapsâlike methods 2197 L.Marker.include({ 2198 2199 /** 2200 * Mimics Google Maps setMap() to add or remove marker from map. 2201 */ 2202 setMap: function (map) { 2203 if (map) { 2204 this._mapRef = map; 2205 this.addTo(map); 2206 this._visible = true; 2207 } else if (this._mapRef) { 2208 this._mapRef.removeLayer(this); 2209 this._visible = false; 2210 } 2211 }, 2212 2213 /** 2214 * Show or hide marker on map. 2215 */ 2216 setVisible: function (show) { 2217 if (!this._mapRef && this._map) { 2218 this._mapRef = this._map; 2219 } 2220 2221 if (show) { 2222 this._mapRef && this.addTo(this._mapRef); 2223 this._visible = true; 2224 } else if (this._mapRef) { 2225 this._mapRef.removeLayer(this); 2226 this._visible = false; 2227 } 2228 }, 2229 2230 /** 2231 * Return true if marker is currently visible. 2232 */ 2233 getVisible: function () { 2234 return !!this._visible; 2235 }, 2236 2237 /** 2238 * Returns current position of the marker. 2239 */ 2240 getPosition: function () { 2241 return this.getLatLng(); 2242 }, 2243 2244 /** 2245 * Sets marker position to the given latlng. 2246 */ 2247 setPosition: function (latlng) { 2248 return this.setLatLng(latlng); 2249 }, 2250 2251 /** 2252 * Binds a reference to the map, used internally for visibility. 2253 */ 2254 bindMap: function (map) { 2255 this._mapRef = map; 2256 this._visible = true; 2257 }, 2258 2259 /** 2260 * Apply animation classes (limited to CSS classes like bounce). 2261 */ 2262 setAnimation: function (animationType) { 2263 const el = this._icon; 2264 if (!el) return; 2265 2266 el.classList.remove('leaflet-bounce-animation'); 2267 2268 if (animationType === 'bounce') { 2269 el.classList.add('leaflet-bounce-animation'); 2270 } 2271 }, 2272 2273 /** 2274 * Safe override of setIcon to accept URL strings (like Google). 2275 */ 2276 setIcon: function (icon) { 2277 // If icon is a string, convert to default L.icon 2278 if (typeof icon === 'string') { 2279 icon = L.icon({ 2280 iconUrl: icon, 2281 iconSize: [32, 32], 2282 iconAnchor: [16, 32], 2283 popupAnchor: [0, -55] 2284 }); 2285 } 2286 2287 // If icon is an object with Google-style format 2288 if (icon && icon.url) { 2289 const size = icon.scaledSize || [32, 32]; 2290 icon = L.icon({ 2291 iconUrl: icon.url, 2292 iconSize: size, 2293 iconAnchor: [size[0] / 2, size[1]], 2294 popupAnchor: [0, -Math.max(40, size[1])] 2295 }); 2296 } 2297 2298 return this._setIconOriginal(icon); 2299 } 2300 }); 2301 2302 /** 2303 * ---------------------------------------- 2304 * POPUP EXTENSIONS 2305 * ---------------------------------------- 2306 */ 2307 L.Popup.include({ 2308 2309 /** 2310 * Opens popup at marker position on given map (Google-style). 2311 */ 2312 open: function (map, marker) { 2313 if (!map || !marker) return this; 2314 2315 const latlng = marker.getLatLng(); 2316 this.setLatLng(latlng); 2317 2318 if (!this._map) { 2319 map.openPopup(this); 2320 } 2321 2322 return this; 2323 }, 2324 2325 /** 2326 * Closes popup from its parent map. 2327 */ 2328 close: function () { 2329 if (this._map) { 2330 this._map.closePopup(this); 2331 } 2332 } 2333 }); 2334 2335 /** 2336 * ---------------------------------------- 2337 * POLYLINE EXTENSIONS 2338 * ---------------------------------------- 2339 */ 2340 if (L.Polyline) { 2341 L.Polyline.include({ 2342 2343 /** 2344 * Mimics Google Maps Polyline setMap() method. 2345 */ 2346 setMap: function (map) { 2347 if (map) { 2348 if (!map.hasLayer(this)) { 2349 this.addTo(map); 2350 } 2351 } else if (this._map) { 2352 this._map.removeLayer(this); 2353 } 2354 } 2355 }); 2356 } 2357 2358 /** 2359 * ---------------------------------------- 2360 * MAP EXTENSIONS 2361 * ---------------------------------------- 2362 */ 2363 L.Map.include({ 2364 2365 /** 2366 * Placeholder for setOptions() (noop for Leaflet). 2367 */ 2368 setOptions: function (options) {
2369 console.warn('setOptions() called in Leaflet. This method does nothing.'); 2370 return this; 2371 }, 2372 2373 /** 2374 * Mimics Google Maps setCenter(), accepting [lat, lng] or LatLng object. 2375 */ 2376 setCenter: function (position) { 2377 if (!position) return; 2378 2379 const latlng = Array.isArray(position) 2380 ? L.latLng(position[0], position[1]) 2381 : position; 2382 2383 this.panTo(latlng); 2384 } 2385 }); 2386 2387})(window.L); 2388 2389/** 2390 * WpgmpBaseMaps class - provides shared map functionality. 2391 */ 2392(function ($, window, document) { 2393 2394class WpgmpBaseMaps { 2395 constructor(element, map_data = {},places = []) { 2396 var options; 2397 this.element = element; 2398 this.map_data = $.extend({}, {}, map_data); 2399 options = this.map_data.map_options; 2400 this.settings = $.extend({ 2401 "min_zoom": "0", 2402 "max_zoom": "19", 2403 "zoom": "5", 2404 "map_type_id": "ROADMAP", 2405 "scroll_wheel": true, 2406 "map_visual_refresh": false, 2407 "full_screen_control": false, 2408 "full_screen_control_position": "BOTTOM_RIGHT", 2409 "zoom_control": true, 2410 "zoom_control_style": "SMALL", 2411 "zoom_control_position": "TOP_LEFT", 2412 "camera_control_position" : "BOTTOM_RIGHT", 2413 "map_type_control": true, 2414 "map_type_control_style": "HORIZONTAL_BAR", 2415 "map_type_control_position": "RIGHT_TOP", 2416 "scale_control": true, 2417 "street_view_control": true, 2418 "street_view_control_position": "TOP_LEFT", 2419 "overview_map_control": true, 2420 "camera_control": true, 2421 "center_lat": "40.6153983", 2422 "center_lng": "-74.2535216", 2423 "draggable": true, 2424 "gesture": "auto", 2425 }, {}, options); 2426 this.container = $("div[rel='" + $(this.element).attr("id") + "']"); 2427 $(document).find(".wpgmp_map_container_placeholder").remove(); 2428 $(document).find(".wpgmp_hide_map_container").removeClass("wpgmp_hide_map_container"); 2429 2430 2431 this.drawingmanager = {}; 2432 this.places = []; 2433 this.show_places = []; 2434 this.places_for_category_tabs = []; 2435 this.categories = {}; 2436 this.tabs = []; 2437 this.all_shapes = []; 2438 this.wpgmp_polylines = []; 2439 this.wpgmp_polygons = []; 2440 this.wpgmp_circles = []; 2441 this.wpgmp_shape_events = []; 2442 this.wpgmp_rectangles = []; 2443 this.per_page_value = 0; 2444 this.last_remove_cat_id = ''; 2445 this.last_selected_cat_id = ''; 2446 this.last_category_chkbox_action = ''; 2447 this.current_amenities = []; 2448 this.route_directions = []; 2449 this.search_area = ''; 2450 this.filter_position = ''; 2451 this.filter_content = ''; 2452 this.markerClusterer = null; 2453 this.url_filters = []; 2454 this.wpgmp_search_form = ''; 2455 this.enable_search_term = false; 2456 this.search_term = ''; 2457 this.filters = {}; 2458 this.addonInfo = []; 2459 } 2460 2461 // ----------------------------- 2462 // ð Lifecycle 2463 // ----------------------------- 2464 init() { 2465 2466 var map_obj = this; 2467 2468 } 2469 map_loaded() { } 2470 /** 2471 * Resizes and re-centers the map 2472 * Preserves the zoom level and current center position 2473 */ 2474resize_map() { 2475 const map_obj = this; 2476 const isGoogle = map_obj.isMapProvider("google"); 2477 const map = map_obj.map; 2478 2479 if (!map) return; 2480 2481 const center = map.getCenter(); 2482 const zoom = map.getZoom(); 2483 2484 if (isGoogle) { 2485 google.maps.event.trigger(map, "resize"); 2486 map.setCenter(center); 2487 map.setZoom(zoom); 2488 } else { 2489 setTimeout(() => { 2490 map.invalidateSize(true);
2491 map.setView(center, zoom); 2492 }, 200); 2493 } 2494} 2495 2496 responsive_map() { 2497 const map_obj = this; 2498 const isGoogle = map_obj.isMapProvider("google"); 2499 const map = map_obj.map; 2500 2501 window.addEventListener("resize", function () { 2502 const zoom = map.getZoom(); 2503 const center = map.getCenter(); 2504 2505 if (isGoogle) { 2506 google.maps.event.trigger(map, "resize"); 2507 map.setZoom(zoom); 2508 map.setCenter(center); 2509 map.getBounds(); 2510 if (map_obj.map_data.marker_cluster) { 2511 map_obj.set_marker_cluster(); 2512 } 2513 } else { 2514 setTimeout(() => { 2515 map.invalidateSize(true); 2516 map.setView(center, zoom); 2517 }, 200); 2518 } 2519 }); 2520 } 2521 2522 2523 // ----------------------------- 2524 // ð Marker Management 2525 // ----------------------------- 2526 createMarker() { } 2527 marker_bind(marker, handler) { 2528 const map_obj = this; 2529 2530 // If no handler is provided, use default logic 2531 const defaultHandler = function () { 2532 const position = map_obj.isMapProvider("google") 2533 ? marker.getPosition() 2534 : marker.getLatLng(); 2535 2536 const lat = map_obj.isMapProvider("google") ? position.lat() : position.lat; 2537 const lng = map_obj.isMapProvider("google") ? position.lng() : position.lng; 2538 2539 map_obj.wpgmp_geocode(lat, lng).then((result) => { 2540 $("#googlemap_address").val(result.address); 2541 $(".google_latitude").val(result.latitude); 2542 $(".google_longitude").val(result.longitude); 2543 $(".google_city").val(result.city); 2544 $(".google_state").val(result.state); 2545 $(".google_country").val(result.country); 2546 $(".google_postal_code").val(result.postal_code); 2547 }).catch((err) => { 2548 console.error(err); 2549 }); 2550 }; 2551 2552 const dragendHandler = handler || defaultHandler; 2553 2554 if (map_obj.isMapProvider("google")) { 2555 google.maps.event.addListener(marker, "dragend", dragendHandler); 2556 } else { 2557 marker.on("dragend", dragendHandler); 2558 } 2559 } 2560 2561 create_markers() { 2562 const map_obj = this; 2563 const isGoogle = map_obj.isMapProvider("google"); 2564 const places = map_obj.map_data.places; 2565 const remove_keys = []; 2566 const spiderfier_enabled = map_obj.map_data.map_marker_spiderfier_setting?.marker_spiderfy === "true"; 2567 let oms; 2568 2569 if (isGoogle && spiderfier_enabled) { 2570 let oms_args = { 2571 markersWontMove: true, 2572 markersWontHide: true, 2573 basicFormatEvents: true, 2574 keepSpiderfied: true, 2575 }; 2576 2577 if (map_obj.map_data.map_marker_spiderfier_setting.marker_enable_spiral === "true") { 2578 oms_args.circleSpiralSwitchover = map_obj.map_data.map_marker_spiderfier_setting.minimum_markers; 2579 } 2580 2581 oms = new OverlappingMarkerSpiderfier(map_obj.map, oms_args); 2582 } 2583 2584 $.each(places, function (key, place) { 2585 if (!(place.location.lat && place.location.lng)) { 2586 remove_keys.push(key); 2587 return; 2588 } 2589 2590 place.categories ??= {}; 2591 place.location.icon ??= map_obj.settings.marker_default_icon; 2592 2593 // Create marker 2594 if (isGoogle) { 2595 2596 place.marker = map_obj.create_google_marker({ 2597 map: map_obj.map, 2598 position: place.location, 2599 iconUrl: place.location.icon, 2600 draggable: place.location.draggable, 2601 clickable: place.location.infowindow_disable, 2602 }); 2603 2604 place.marker.bindMap(map_obj.map); 2605 place.marker.setVisible(true); 2606 2607 if (map_obj.settings.infowindow_drop_animation || place.location.animation === "DROP") { 2608 place.marker.setAnimation(google.maps.Animation.DROP); 2609 } 2610 if (place.location.animation === "BOUNCE1") { 2611 place.marker.setAnimation(google.maps.Animation.BOUNCE); 2612 } 2613 2614 if (map_obj.settings.infowindow_filter_only) { 2615 place.marker.setVisible(false); 2616 } 2617 2618 } else { 2619 2620 place.marker = map_obj.create_leaflet_marker({ 2621 map: map_obj.map, 2622 position: [parseFloat(place.location.lat), parseFloat(place.location.lng)], 2623 iconUrl: place.location.icon, 2624 draggable: place.location.draggable, 2625 }); 2626 2627 place.marker.addTo(map_obj.map); 2628 place.marker.setVisible(true); 2629 2630 if (map_obj.settings.infowindow_filter_only) { 2631 place.marker.setVisible(false); 2632 } 2633 2634 if (place.location.infowindow_disable || place.source !== "manual") { 2635 place.marker.bindPopup(place.content); 2636 } 2637 2638 } 2639 2640 // 𪢠Marker bind if editing 2641 if (map_obj.map_data.page === "edit_location") { 2642 map_obj.marker_bind(place.marker); 2643 } 2644 2645 // Infowindow content replacement 2646 const location_categories = Object.values(place.categories).map(cat => "<div class='fc-badge'>"+cat.name+"</div>"); 2647 const marker_image = place.source === "post" 2648 ? place.location.extra_fields.post_featured_image 2649 : place.location.marker_image; 2650 2651 let template = place.source === "post" 2652 ? map_obj.settings.infowindow_geotags_setting 2653 : map_obj.settings.infowindow_setting; 2654 2655 const post_info_class = place.source === "post" 2656 ? `wpgmp_infowindow_post fc-infobox-${map_obj.settings.infowindow_post_skin.name} fc-item-${map_obj.settings.infowindow_post_skin.name}` 2657 : `fc-infobox-${map_obj.settings.infowindow_skin?.name} fc-infowindow-${map_obj.settings.infowindow_skin?.name || "default"}`; 2658 2659 2660 template ??= place.content; 2661 2662 const replaceData = { 2663 "{marker_id}": place.id, 2664 "{marker_title}": place.title, 2665 "{marker_address}": place.address, 2666 "{marker_latitude}": place.location.lat, 2667 "{marker_longitude}": place.location.lng, 2668 "{marker_city}": place.location.city, 2669 "{marker_state}": place.location.state, 2670 "{marker_country}": place.location.country, 2671 "{marker_postal_code}": place.location.postal_code, 2672 "{marker_zoom}": place.location.zoom, 2673 "{marker_icon}": place.location.icon, 2674 "{marker_category}": location_categories.join(""), 2675 "{marker_message}": place.content, 2676 "{marker_image}": marker_image, 2677 "{get_directions_link}": `https://www.google.com/maps/place/${parseFloat(place.location.lat)},${parseFloat(place.location.lng)}` 2678 }; 2679 2680 // Inject extra fields 2681 if (place.location.extra_fields) { 2682 for (const [key, val] of Object.entries(place.location.extra_fields)) { 2683 replaceData[`{${key}}`] = val || "<div class='wpgmp_empty'>wpgmp_empty</div>"; 2684 } 2685 } 2686 2687 template = template.replace(/{#if (.*?)}([\s\S]*?){\/if}/g, (_, key, content) => { 2688 const val = replaceData[`{${key}}`]; 2689 return val && val !== "<div class='wpgmp_empty'>wpgmp_empty</div>" ? content : ""; 2690 }); 2691 2692 if (map_obj.map_data.map_options.link_extra_field) { 2693 const anchor_tag = map_obj.map_data.map_options.link_extra_field; 2694 for (const prop_an in anchor_tag) { 2695 if (replaceData[prop_an] && replaceData[prop_an] !== "<div class='wpgmp_empty'>wpgmp_empty</div>") { 2696 template = template.replace(prop_an, anchor_tag[prop_an]); 2697 } 2698 } 2699 } 2700 2701 for (const prop in replaceData) { 2702 template = template.replaceAll(prop, replaceData[prop] ?? ""); 2703 } 2704 2705 const tempObject = $("<div/>").html(template); 2706 tempObject.find(".wpgmp_extra_field:contains('wpgmp_empty')").remove(); 2707 tempObject.find(".wpgmp_empty").prev().remove(); 2708 tempObject.find(".wpgmp_empty").remove(); 2709 2710 let content = tempObject.prop("outerHTML") || ""; 2711
2712 if (map_obj.settings.map_infowindow_customisations && map_obj.settings.show_infowindow_header) { 2713 content = `<div class="wpgmp_infowindow ${post_info_class}"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">${place.title}</div></div><div class="wpgmp_iw_content">${content}</div></div>`; 2714 } else { 2715 content = `<div class="wpgmp_infowindow ${post_info_class}"><div class="wpgmp_iw_content">${content}</div></div>`; 2716 } 2717 2718 place.infowindow_data = content; 2719 place.infowindow = map_obj.infowindow_marker; 2720 2721 2722 2723 let on_event = map_obj.settings.infowindow_open_event; 2724 if (map_obj.isMobile) on_event = "click"; 2725 if (oms && on_event === "click") on_event = "spider_click"; 2726 2727 2728 if (map_obj.useAdvancedMarker && place.marker?.content && on_event == 'mouseover') { 2729 const content = place.marker.content; 2730 2731 content.addEventListener(on_event, function () { 2732 2733 map_obj.places.forEach(p => { 2734 p.infowindow?.close?.(); 2735 p.marker?.setAnimation?.(null); 2736 }); 2737 2738 map_obj.openInfoWindow(place); 2739 2740 if (map_obj.settings.infowindow_bounce_animation === on_event) { 2741 map_obj.toggle_bounce(place.marker); 2742 } 2743 }); 2744 } else { 2745 // Fallback for classic markers (already working for you) 2746 map_obj.event_listener(place.marker, on_event, function () { 2747 2748 map_obj.places.forEach(p => { 2749 p.infowindow?.close?.(); 2750 p.marker?.setAnimation?.(null); 2751 }); 2752 2753 map_obj.openInfoWindow(place); 2754 2755 if (map_obj.settings.infowindow_bounce_animation === on_event) { 2756 map_obj.toggle_bounce(place.marker); 2757 } 2758 }); 2759 } 2760 2761 2762 if (oms) oms.addMarker(place.marker); 2763 2764 if (on_event === "mouseover") { 2765 map_obj.event_listener(place.marker, "click", function () { 2766 if (map_obj.settings.infowindow_click_change_zoom > 0) { 2767 map_obj.map.setZoom(map_obj.settings.infowindow_click_change_zoom); 2768 } 2769 if (map_obj.settings.infowindow_click_change_center) { 2770 map_obj.map.setCenter(place.marker.getPosition()); 2771 } 2772 }); 2773 } 2774 2775 if (map_obj.settings.infowindow_bounce_animation === "mouseover" && on_event !== "mouseover") { 2776 map_obj.event_listener(place.marker, "mouseover", function () { 2777 place.marker.setAnimation("bounce"); 2778 }); 2779 map_obj.event_listener(place.marker, "mouseout", function () { 2780 place.marker.setAnimation(null); 2781 }); 2782 } 2783 2784 if (map_obj.settings.infowindow_bounce_animation) { 2785 if (isGoogle) { 2786 google.maps.event.addListener(place.infowindow, "closeclick", function () { 2787 place.marker.setAnimation(null); 2788 }); 2789 } 2790 } 2791 2792 if (place.location.infowindow_default_open || map_obj.settings.default_infowindow_open) { 2793 setTimeout(function(){ 2794 map_obj.openInfoWindow(place); 2795 },500) 2796 } 2797 map_obj.places.push(place); 2798 }); 2799 2800 remove_keys.forEach(key => delete places[key]); 2801 } 2802 2803 display_markers() { 2804 const map_obj = this; 2805 2806 map_obj.show_places = []; 2807 const categories = {}; 2808 2809 for (const place of map_obj.places) { 2810 2811 if (map_obj.settings.infowindow_filter_only === true) { 2812 place.marker.setVisible(false); 2813 } else { 2814 place.marker.setVisible(true); 2815 map_obj.show_places.push(place); 2816 } 2817 2818 if (place.categories) { 2819 $.each(place.categories, (_, category) => { 2820 if (!categories[category.name]) { 2821 categories[category.name] = category; 2822 } 2823 }); 2824 } 2825 } 2826 2827 map_obj.categories = categories; 2828 } 2829 placeMarker(lat, lng) { 2830 const map_obj = this; 2831 const isGoogle = map_obj.isMapProvider("google"); 2832 const position = isGoogle 2833 ? {"lat":lat,"lng":lng} 2834 : L.latLng(lat, lng); 2835 // ðï¸ Remove existing marker (Leaflet: setMap(null), Google: setMap(null)) 2836 if (map_obj.searchMarker) { 2837 map_obj.searchMarker.setMap(null); 2838 } 2839 2840 // Create new marker 2841 if (isGoogle) { 2842 2843 map_obj.searchMarker = map_obj.create_google_marker({ 2844 map: map_obj.map, 2845 position, 2846 iconUrl: map_obj.settings.marker_default_icon || '', 2847 draggable: true, 2848 anchorPoint: { x: 0, y: -29 }, 2849 }); 2850 2851 2852 } else { 2853 2854 map_obj.searchMarker = map_obj.create_leaflet_marker({ 2855 map: map_obj.map, 2856 position, 2857 iconUrl: map_obj.settings.marker_default_icon || "", 2858 draggable: true, 2859 }); 2860 2861 2862 } 2863 2864 // Add to map using .setMap()
2865 map_obj.searchMarker.setMap(map_obj.map); 2866 2867 // ind marker events if defined 2868 if (typeof map_obj.marker_bind === "function") { 2869 map_obj.marker_bind(map_obj.searchMarker); 2870 } 2871 2872 // Center and zoom 2873 map_obj.map.setCenter(position); 2874 map_obj.map.setZoom(17); 2875 } 2876 2877 toggle_bounce(marker) { 2878 const isGoogle = this.isMapProvider("google"); 2879 if (isGoogle) { 2880 if (marker.getAnimation() !== null) { 2881 marker.setAnimation(null); 2882 } else { 2883 marker.setAnimation(google.maps.Animation.BOUNCE); 2884 } 2885 } else { 2886 const el = marker._icon; 2887 if (!el) return; 2888 const className = 'leaflet-bounce-animation'; 2889 if (el.classList.contains(className)) { 2890 el.classList.remove(className); 2891 } else { 2892 el.classList.add(className); 2893 } 2894 } 2895 } 2896 show_center_circle() { 2897 const map_obj = this; 2898 const isGoogle = map_obj.isMapProvider("google"); 2899 2900 if (!map_obj.settings.center_circle_radius) { 2901 map_obj.settings.center_circle_radius = 5; 2902 } 2903 2904 const radiusInMeters = parseInt(map_obj.settings.center_circle_radius) * 1000; 2905 const center = map_obj.map.getCenter(); 2906 2907 if (isGoogle) { 2908 map_obj.set_center_circle = new google.maps.Circle({ 2909 map: map_obj.map, 2910 center: center, 2911 fillColor: map_obj.settings.center_circle_fillcolor, 2912 fillOpacity: map_obj.settings.center_circle_fillopacity, 2913 strokeColor: map_obj.settings.center_circle_strokecolor, 2914 strokeOpacity: map_obj.settings.center_circle_strokeopacity, 2915 strokeWeight: map_obj.settings.center_circle_strokeweight, 2916 radius: radiusInMeters 2917 }); 2918 } else { 2919 map_obj.set_center_circle = L.circle(center, { 2920 fillColor: map_obj.settings.center_circle_fillcolor, 2921 fillOpacity: map_obj.settings.center_circle_fillopacity, 2922 color: map_obj.settings.center_circle_strokecolor, 2923 opacity: map_obj.settings.center_circle_strokeopacity, 2924 weight: map_obj.settings.center_circle_strokeweight, 2925 radius: radiusInMeters 2926 }).addTo(map_obj.map); 2927 } 2928 } 2929 2930 /** 2931 * Adds a marker to the center of the map and binds an optional infowindow 2932 */ 2933show_center_marker() { 2934 const map_obj = this; 2935 const isGoogle = map_obj.isMapProvider("google"); 2936 const center = map_obj.map.getCenter(); 2937 const hasInfo = map_obj.settings.center_marker_infowindow !== ""; 2938 2939 if (isGoogle) { 2940 2941 map_obj.map_center_marker = map_obj.create_google_marker({ 2942 map: map_obj.map, 2943 position: {lat:center.lat(),lng:center.lng()}, 2944 title: map_obj.settings.center_marker_infowindow, 2945 iconUrl: map_obj.settings.center_marker_icon, 2946 clickable: hasInfo, 2947 }); 2948 2949 2950 if (!map_obj.map_center_info) { 2951 map_obj.map_center_info = map_obj.infowindow_marker; 2952 } 2953 2954 if (hasInfo) { 2955 google.maps.event.addListener(map_obj.map_center_marker, "click", function () { 2956 map_obj.map_center_info.setPosition(center); 2957 const content = map_obj.settings.map_infowindow_customisations === true 2958 ? `<div class='fc-infobox-root'><div class='fc-infobox'><div class='fc-infobox-body'>${map_obj.settings.center_marker_infowindow}</div></div></div>` 2959 : map_obj.settings.center_marker_infowindow; 2960 map_obj.map_center_info.setContent(content); 2961 map_obj.map_center_info.open(map_obj.map, this); 2962 }); 2963 } 2964 } else { 2965 2966 map_obj.map_center_marker = map_obj.create_leaflet_marker({ 2967 map: map_obj.map, 2968 position: center, 2969 iconUrl: map_obj.settings.center_marker_icon, 2970 draggable: true, 2971 }); 2972 2973 2974 if (!map_obj.map_center_info) { 2975 map_obj.map_center_info = map_obj.infowindow_marker; 2976 } 2977 2978 if (hasInfo) { 2979 map_obj.event_listener(map_obj.map_center_marker, "click", function () { 2980 const content = `<div class='fc-infobox-root'><div class='fc-infobox'><div class='fc-infobox-body'>${map_obj.settings.center_marker_infowindow}</div></div></div>`; 2981 const latlng = map_obj.map.getCenter(); 2982 map_obj.map_center_info.setContent(content).setLatLng(latlng).openOn(map_obj.map); 2983 }); 2984 } 2985 } 2986} 2987 2988 // Unified version to center the map based on user's current location 2989center_by_nearest() { 2990 const map_obj = this; 2991 const isGoogle = map_obj.isMapProvider("google"); 2992 2993 this.get_current_location( 2994 function (user_position) { 2995 if (!map_obj.user_location_marker) { 2996 if (isGoogle) { 2997 2998 map_obj.user_location_marker = map_obj.create_google_marker({ 2999 map: map_obj.map, 3000 position: {"lat":user_position.lat(),"lng":user_position.lng()}, 3001 title: wpgmp_local.center_location_message, 3002 iconUrl: map_obj.map_data.map_options.center_marker_icon, 3003 }); 3004 3005 3006 } else { 3007 3008 map_obj.user_location_marker = map_obj.create_leaflet_marker({ 3009 map: map_obj.map, 3010 position: user_position, 3011 iconUrl: map_obj.settings.center_marker_icon, 3012 title: wpgmp_local.center_location_message, 3013 }); 3014 3015 3016 } 3017 } 3018 3019 if (!map_obj.map_center_info) { 3020 map_obj.map_center_info = map_obj.infowindow_marker; 3021 } 3022 3023 if (map_obj.settings.center_marker_infowindow !== "") { 3024 const showInfo = function () { 3025 const content = map_obj.settings.map_infowindow_customisations 3026 ? `<div class='wpgmp_infowindow'><div class='wpgmp_iw_content'>${map_obj.settings.center_marker_infowindow}</div></div>` 3027 : map_obj.settings.center_marker_infowindow; 3028 3029 if (isGoogle) { 3030 map_obj.map_center_info.setPosition(user_position); 3031 map_obj.map_center_info.setContent(content); 3032 map_obj.map_center_info.open(map_obj.map, map_obj.user_location_marker); 3033 } else { 3034 map_obj.map_center_info.setContent(content); 3035 map_obj.map_center_info.setLatLng(user_position).openOn(map_obj.map); 3036 } 3037 }; 3038 3039 if (isGoogle) { 3040 google.maps.event.addListener(map_obj.user_location_marker, "click", showInfo); 3041 } else { 3042 map_obj.event_listener(map_obj.user_location_marker, "click", showInfo); 3043 } 3044 } 3045 3046 if (isGoogle) { 3047 map_obj.map.setCenter(user_position); 3048 } else {
3049 map_obj.map.setView(user_position, map_obj.settings.zoom); 3050 } 3051 3052 if (map_obj.settings.show_center_circle === true) { 3053 map_obj.show_center_circle(); 3054 } 3055 3056 if ( 3057 map_obj.map_data.listing && 3058 map_obj.map_data.listing.apply_default_radius === true 3059 ) { 3060 map_obj.search_area = user_position; 3061 } 3062 }, 3063 function (user_position) { 3064 // Fallback on error with same logic 3065 if (!map_obj.user_location_marker) { 3066 map_obj.user_location_marker = L.marker(user_position, { 3067 icon: L.icon({ 3068 iconUrl: map_obj.settings.center_marker_icon, 3069 iconAnchor: [16, 32], 3070 popupAnchor: [0, -30] 3071 }), 3072 title: wpgmp_local.center_location_message 3073 }).addTo(map_obj.map); 3074 } 3075 3076 if (!map_obj.map_center_info) { 3077 map_obj.map_center_info = map_obj.infowindow_marker; 3078 } 3079 3080 if (map_obj.settings.center_marker_infowindow !== "") { 3081 map_obj.event_listener(map_obj.user_location_marker, "click", function () { 3082 const content = `<div class='wpgmp_infowindow'><div class='wpgmp_iw_content'>${map_obj.settings.center_marker_infowindow}</div></div>`; 3083 map_obj.map_center_info.setContent(content); 3084 map_obj.map_center_info.setLatLng(user_position).openOn(map_obj.map); 3085 }); 3086 } 3087 3088 map_obj.map.panTo(user_position); 3089 3090 if (map_obj.settings.show_center_circle === true) { 3091 map_obj.show_center_circle(); 3092 } 3093 3094 if ( 3095 map_obj.map_data.listing && 3096 map_obj.map_data.listing.apply_default_radius === true 3097 ) { 3098 map_obj.search_area = user_position; 3099 } 3100 } 3101 ); 3102} 3103 3104 /** 3105 * Adjusts the map viewport to fit all visible markers 3106 */ 3107fit_bounds() { 3108 const map_obj = this; 3109 const isGoogle = map_obj.isMapProvider("google"); 3110 const places = map_obj.map_data.places || []; 3111 let bounds; 3112 if (places.length === 0) return; 3113 3114 if (isGoogle) { 3115 bounds = new google.maps.LatLngBounds(); 3116 places.forEach((place) => { 3117 if (place.location.lat && place.location.lng) { 3118 bounds.extend(new google.maps.LatLng( 3119 parseFloat(place.location.lat), 3120 parseFloat(place.location.lng) 3121 )); 3122 } 3123 }); 3124 map_obj.map.fitBounds(bounds); 3125 } else { 3126 bounds = new L.LatLngBounds(); 3127 places.forEach((place) => { 3128 if (place.location.lat && place.location.lng) { 3129 bounds.extend(L.latLng( 3130 parseFloat(place.location.lat), 3131 parseFloat(place.location.lng) 3132 )); 3133 } 3134 }); 3135 map_obj.map.fitBounds(bounds); 3136 } 3137 3138 // Set center marker and circle to bounds center 3139 const center = isGoogle ? bounds.getCenter() : bounds.getCenter(); 3140 3141 if (map_obj.map_center_marker) { 3142 map_obj.map_center_marker.setPosition(center); 3143 } 3144 3145 if (map_obj.set_center_circle) { 3146 if (isGoogle ) { 3147 map_obj.set_center_circle.setCenter(center); 3148 } else { 3149 map_obj.set_center_circle.setLatLng(center); 3150 } 3151 } 3152} 3153 3154 open_infowindow(current_place_id) { 3155 const map_obj = this; 3156 const isGoogle = map_obj.isMapProvider("google"); 3157 const open_event = map_obj.settings.infowindow_open_event || 'click'; 3158 const zoom = parseInt(map_obj.settings.infowindow_click_change_zoom); 3159 const shouldZoom = !isNaN(zoom) && zoom > 0; 3160 const shouldCenter = map_obj.settings.infowindow_click_change_center === true; 3161 3162 const all_places = map_obj.map_data.places || []; 3163 3164 for (const place of all_places) { 3165 const marker = place.marker; 3166 3167 if (!marker || marker.getVisible?.() === false) continue; 3168 3169 // If this is the target place 3170 if (parseInt(place.id) === parseInt(current_place_id)) { 3171 if (shouldZoom) { 3172 map_obj.map.setZoom(zoom); 3173 } 3174 3175 if (shouldCenter) { 3176 map_obj.map.setCenter(marker.getPosition()); 3177 } 3178 3179 // Trigger the configured open event 3180 if (isGoogle) { 3181 google.maps.event.trigger(marker, open_event); 3182 } else { 3183 marker.fire(open_event); 3184 } 3185 } 3186 } 3187 } 3188 openInfoWindow(place) { 3189 const map_obj = this; 3190 const isGoogle = map_obj.isMapProvider("google"); 3191 let skin = "default"; 3192
3193 if (place.source === "post") { 3194 skin = map_obj.settings.infowindow_post_skin?.name || "default"; 3195 } else if ( 3196 map_obj.map_data.page !== "edit_location" && 3197 map_obj.settings.infowindow_skin 3198 ) { 3199 skin = map_obj.settings.infowindow_skin.name; 3200 } 3201 3202 // Handle redirect actions 3203 const action = place.location.onclick_action; 3204 const openInNewTab = place.location.open_new_tab === "yes"; 3205 if (action === "post") { 3206 window.open(place.location.redirect_permalink, openInNewTab ? "_blank" : "_self"); 3207 return; 3208 } else if (action === "custom_link") { 3209 window.open(place.location.redirect_custom_link, openInNewTab ? "_blank" : "_self"); 3210 return; 3211 } 3212 3213 // Infowindow logic 3214 if (isGoogle && skin !== "default") { 3215 const infoboxText = document.createElement("div"); 3216 infoboxText.className = "wpgmp_infobox wpgmp-infowindow-addon"; 3217 infoboxText.innerHTML = place.infowindow_data; 3218 3219 place.infowindow = map_obj.infobox; 3220 place.infowindow.setOptions({ 3221 content: infoboxText, 3222 disableAutoPan: false, 3223 alignBottom: true, 3224 maxWidth: 0, 3225 zIndex: null, 3226 closeBoxMargin: "0", 3227 closeBoxURL: "", 3228 infoBoxClearance: new google.maps.Size(25, 25), 3229 isHidden: false, 3230 pane: "floatPane", 3231 enableEventPropagation: false, 3232 }); 3233 3234 const mapOptions = map_obj?.map_data?.map_options || {}; 3235 let width = "100%"; 3236 if( map_obj.settings.map_infowindow_customisations ) { 3237 width = mapOptions.infowindow_width || '100%'; 3238 } 3239 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 3240 3241 // Calculate offsetX 3242 let offsetX = -175; 3243 if (width !== '100%') { 3244 const numericWidth = parseInt(width); 3245 if (!isNaN(numericWidth)) { 3246 offsetX = -(numericWidth / 2); 3247 } 3248 } 3249 3250 // Calculate offsetY based on marker height 3251 const markerHeight = parseInt(markerSize[1]) || 32; 3252 const offsetY = -(markerHeight) -15; 3253 // Apply offset to infowindow 3254 3255 place.infowindow.setOptions({ 3256 pixelOffset: new google.maps.Size(offsetX, offsetY), 3257 }); 3258 3259 } else { 3260 3261 let offsetX = 0; 3262 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 3263 const markerHeight = parseInt(markerSize[1]) || 32; 3264 const offsetY = -(markerHeight / 2); 3265 place.infowindow = isGoogle 3266 ? map_obj.infowindow_marker 3267 : L.popup({offset:[offsetX,offsetY]}); 3268 3269 place.infowindow.setContent(place.infowindow_data); 3270 } 3271 3272 // Open infowindow 3273 place.infowindow.open(map_obj.map, place.marker); 3274 3275 // Move to marker if configured 3276 if (map_obj.settings.infowindow_click_change_center) { 3277 map_obj.map.setCenter(place.marker.getPosition()); 3278 } 3279 3280 if ( 3281 map_obj.settings.infowindow_click_change_zoom && 3282 map_obj.settings.infowindow_click_change_zoom > 0 3283 ) { 3284 map_obj.map.setZoom(map_obj.settings.infowindow_click_change_zoom); 3285 map_obj.map.setCenter(place.marker.getPosition()); 3286 } 3287 3288 // Autofill directions 3289 if ( 3290 map_obj.map_data.map_tabs?.direction_tab?.dir_tab === true 3291 ) { 3292 $(map_obj.container).find(".start_point").val(place.address); 3293 $(map_obj.container).find(".start_point").data("longitude", place.location.lng); 3294 $(map_obj.container).find(".start_point").data("latitude", place.location.lat); 3295 } 3296 3297 // Cleanup 3298 $(map_obj.container).find(".wpgmp_extra_field:contains('wpgmp_empty')").remove(); 3299 $(map_obj.container).find(".wpgmp_empty").prev().remove(); 3300 $(map_obj.container).find(".wpgmp_empty").remove(); 3301 3302 // Dispatch marker click event for addons to hook into 3303 $(document).trigger("wpgmp_marker_clicked", [this, place]); 3304 3305 } 3306 create_element(controlDiv, map, html_element) { 3307 3308 // Set CSS for the control border 3309 controlDiv.className = 'wpgmp-control-outer'; 3310 var controlUI = document.createElement('div'); 3311 controlUI.className = 'wpgmp-control-inner'; 3312 controlDiv.appendChild(controlUI); 3313 3314 // Set CSS for the control interior 3315 var controlText = document.createElement('div'); 3316 controlText.className = 'wpgmp-control-content'; 3317 controlText.innerHTML = html_element; 3318 controlUI.appendChild(controlText); 3319 3320 } 3321 // ----------------------------- 3322 // ð Templates & Rendering 3323 // ----------------------------- 3324 renderCategories(template, data) { 3325 let rendered = template; 3326 3327 // Handle the case where parent categories do not exist 3328 if (!data || data.length === 0) { 3329 rendered = rendered.replace( 3330 /\{#each parent_categories\}[\s\S]+?\{\/parent_categories\}/g, 3331 "No categories available." 3332 ); 3333 return rendered; 3334 } 3335 3336 // Replace the each block for parent and child categories 3337 const parentPattern = 3338 /\{#each parent_categories\}([\s\S]+?)\{\/parent_categories\}/g; 3339 rendered = rendered.replace( 3340 parentPattern, 3341 function (match, parentTemplate) { 3342 let result = ""; 3343 3344 data.forEach((parentCategory) => {
3345 let parentHTML = parentTemplate; 3346 // Replace placeholders for parent category 3347 parentHTML = parentHTML.replace( 3348 /\{parent_id\}/g, 3349 parentCategory.parent_id || "" 3350 ); 3351 parentHTML = parentHTML.replace( 3352 /\{child_list\}/g, 3353 parentCategory.child_list || "" 3354 ); 3355 parentHTML = parentHTML.replace( 3356 /\{parent_category\}/g, 3357 parentCategory.parent_category || "Unknown Category" 3358 ); 3359 3360 // Handle child categories 3361 let childPattern = 3362 /\{#each child_categories\}([\s\S]+?)\{\/child_categories\}/g; 3363 3364 if ( 3365 parentCategory.child_categories && 3366 parentCategory.child_categories.length > 0 3367 ) { 3368 parentHTML = parentHTML.replace( 3369 childPattern, 3370 function (childMatch, childTemplate) { 3371 let childResult = ""; 3372 parentCategory.child_categories.forEach((child) => { 3373 let childTemp = childTemplate; 3374 childTemp = childTemp.replace( 3375 /\{child_id\}/g, 3376 child.child_id || "" 3377 ); 3378 childTemp = childTemp.replace( 3379 /\{child_category\}/g, 3380 child.child_category || "Unknown Child Category" 3381 ); 3382 childResult += childTemp; 3383 }); 3384 return childResult; 3385 } 3386 ); 3387 } else { 3388 // If no child categories exist, remove the entire child category box 3389 parentHTML = parentHTML.replace(childPattern, ""); 3390 } 3391 3392 result += parentHTML; 3393 }); 3394 3395 return result; 3396 } 3397 ); 3398 3399 return rendered; 3400 } 3401 renderTemplate(template, data) { 3402 var rendered = template; 3403 3404 // Handle if-else condition outside of each loop 3405 var ifPattern = /\{#if (\w+)\}([\s\S]+?)\{else\}([\s\S]+?)\{\/if\}/g; 3406 rendered = rendered.replace( 3407 ifPattern, 3408 function (ifMatch, ifKey, ifTrue, ifFalse) { 3409 return data[ifKey] ? ifTrue : ifFalse; 3410 } 3411 ); 3412 3413 var ifSimplePattern = /\{#if (\w+)\}([\s\S]+?)\{\/if\}/g; 3414 rendered = rendered.replace( 3415 ifSimplePattern, 3416 function (ifMatch, ifKey, ifTrue) { 3417 return data[ifKey] ? ifTrue : ""; 3418 } 3419 ); 3420 3421 // Replace the each block for all_filters 3422 var eachPattern = /\{#each all_filters\}([\s\S]+?)\{\/all_filters\}/g; 3423 rendered = rendered.replace(eachPattern, function (match, p2) { 3424 var result = ""; 3425 3426 var allFilters = data["all_filters"]; 3427 3428 // Iterate over all filters (facility, bathrooms, etc.) 3429 for (var filterName in allFilters) { 3430 var filterData = allFilters[filterName]; 3431 3432 var firstKey = Object.keys(filterData)[0]; // Gets the first key 3433 var filterLabel = filterData[firstKey].label; // Gets the corresponding value 3434 3435 var filterTemplate = p2; 3436 3437 // Replace {filter_name} with the filter key (e.g., facility, bathrooms) 3438 filterTemplate = filterTemplate.replace( 3439 /\{filter_name\}/g, 3440 filterName 3441 ); 3442 filterTemplate = filterTemplate.replace( 3443 /\{filter_label\}/g, 3444 filterLabel 3445 ); 3446 3447 // Now handle the inner {#each filter} loop for options 3448 var innerEachPattern = /\{#each filter\}([\s\S]+?)\{\/filter\}/g; 3449 filterTemplate = filterTemplate.replace( 3450 innerEachPattern, 3451 function (innerMatch, innerP2) { 3452 var innerResult = ""; 3453 3454 for (var key in filterData) { 3455 var option = { 3456 id: key.toLowerCase(), 3457 name: filterData[key].name, 3458 label: filterData[key].label, 3459 }; 3460 3461 if (filterName != "category") { 3462 option.id = filterData[key].id; 3463 } 3464 3465 var optionTemplate = innerP2; 3466 3467 // Replace the placeholders {id} and {name} 3468 optionTemplate = optionTemplate.replace(/\{id\}/g, option.id); 3469 3470 optionTemplate = optionTemplate.replace( 3471 /\{name\}/g, 3472 option.name 3473 ); 3474 3475 innerResult += optionTemplate; 3476 } 3477 return innerResult; 3478 } 3479 ); 3480 3481 result += filterTemplate; 3482 } 3483 3484 return result; 3485 }); 3486 3487 var eachPattern = /\{#each ([\w%_-]+)\}([\s\S]+?)\{\/\1\}/g; // Updated to allow dashes 3488 rendered = rendered.replace(eachPattern, function (match, p1, p2) { 3489 var items = data[p1]; 3490 var result = ""; 3491 3492 if ( 3493 typeof items === "object" && 3494 items !== null && 3495 !Array.isArray(items) 3496 ) { 3497 for (var key in items) { 3498 var item; 3499 if (p1 == "routes") { 3500 item = { 3501 id: key.toLowerCase(), 3502 name: items[key][0], 3503 color: items[key][1], 3504 }; 3505 } else { 3506 item = { id: key.toLowerCase(), name: items[key] }; 3507 } 3508 3509 var itemTemplate = p2; 3510 3511 // Handle if-else condition inside each loop 3512 itemTemplate = itemTemplate.replace( 3513 ifPattern, 3514 function (ifMatch, ifKey, ifTrue, ifFalse) { 3515 return item[ifKey] ? ifTrue : ifFalse; 3516 } 3517 ); 3518 3519 itemTemplate = itemTemplate.replace( 3520 ifSimplePattern, 3521 function (ifMatch, ifKey, ifTrue) { 3522 return item[ifKey] ? ifTrue : ""; 3523 } 3524 ); 3525 3526 // Replace the placeholders within each item 3527 for (var fieldKey in item) { 3528 itemTemplate = itemTemplate.replace( 3529 new RegExp("\\{" + fieldKey + "\\}", "g"), 3530 item[fieldKey] 3531 ); // Escape braces 3532 } 3533 result += itemTemplate; 3534 } 3535 } 3536 3537 return result; 3538 }); 3539 3540 // Replace the placeholders outside the each block 3541 for (var key in data) { 3542 if (!Array.isArray(data[key]) && typeof data[key] === "object") { 3543 // Skip objects being handled within each block 3544 continue; 3545 } 3546 rendered = rendered.replace( 3547 new RegExp("\\{" + key + "\\}", "g"), 3548 data[key] 3549 ); // Escape braces 3550 } 3551 3552 return rendered; 3553 } 3554 3555 create_filters() { 3556 var map_obj = this; 3557 var options = ""; 3558 var filters = {}; 3559 var places = this.map_data.places; 3560 var wpgmp_listing_filter = this.map_data.listing; 3561 var wpgmp_alltfilter = wpgmp_listing_filter.display_taxonomies_all_filter; 3562 3563 $.each(places, function (index, place) { 3564 if (typeof place.categories == "undefined") { 3565 place.categories = {}; 3566 } 3567 $.each(place.categories, function (cat_index, category) { 3568 if (typeof filters[category.type] == "undefined") { 3569 filters[category.type] = {}; 3570 } 3571 3572 if (category.name) { 3573 if ( 3574 category.extension_fields && 3575 category.extension_fields.cat_order 3576 ) { 3577 filters[category.type][category.name] = { 3578 id: category.id, 3579 order: category.extension_fields.cat_order, 3580 name: category.name, 3581 }; 3582 } else { 3583 filters[category.type][category.name] = { 3584 id: category.id, 3585 order: 0, 3586 name: category.name, 3587 }; 3588 } 3589 } 3590 }); 3591 }); 3592 // now create select boxes 3593 3594 var content = "", 3595 by = "name", 3596 type = "", 3597 inorder = "asc"; 3598 3599 if (map_obj.map_data.listing) { 3600 if (map_obj.map_data.listing.default_sorting) { 3601 if (map_obj.map_data.listing.default_sorting.orderby == "listorder") { 3602 by = "order"; 3603 type = "num"; 3604 inorder = map_obj.map_data.listing.default_sorting.inorder; 3605 } 3606 inorder = map_obj.map_data.listing.default_sorting.inorder; 3607 } 3608 } 3609 3610 if ( 3611 map_obj.map_data.checkbox_filter_addon_enable != undefined && 3612 map_obj.map_data.checkbox_filter_addon_enable == true 3613 ) { 3614 $.each(filters, function (index, options) { 3615 if ( 3616 wpgmp_listing_filter.display_category_filter === true && 3617 index == "category" 3618 ) { 3619 content += '<div class="wpgmp_filters_checklist">'; 3620 content += 3621 '<label data-filter = "place_' + 3622 index + 3623 '" >Select ' + 3624 index + 3625 "</label>"; 3626 options = map_obj.sort_object_by_keyvalue( 3627 options, 3628 by, 3629 type, 3630 inorder 3631 ); 3632 $.each(options, function (name, value) { 3633 if (value != "" && value != null) 3634 content += 3635 "<input data-filter='checklist' type='checkbox' data-name = 'category' value='" + 3636 value.id + 3637 "'><span class='wpgmp_checklist_title'>" + 3638 value.name + 3639 "</span>"; 3640 }); 3641 content += "</div>"; 3642 } else if (wpgmp_listing_filter.display_taxonomies_filter === true) { 3643 if (wpgmp_alltfilter === null) return false;
3644 3645 if (wpgmp_alltfilter.indexOf(index) > -1) { 3646 content += '<div class="wpgmp_filters_checklist">'; 3647 content += 3648 '<label data-filter = "place_' + 3649 index + 3650 '" >Select ' + 3651 index + 3652 "</label>"; 3653 3654 $.each(options, function (name, value) { 3655 if (value != "" && value != null) 3656 content += 3657 "<input data-filter='checklist' type='checkbox' data-name = 'category' value='" + 3658 value.id + 3659 "'><span class='wpgmp_checklist_title'>" + 3660 value.name + 3661 "</span>"; 3662 }); 3663 content += "</div>"; 3664 } 3665 } 3666 }); 3667 } else { 3668 $.each(filters, function (index, options) { 3669 if ( 3670 wpgmp_listing_filter.display_category_filter === true && 3671 index == "category" 3672 ) { 3673 content += 3674 '<select data-wpgmp-filter="true" data-wpgmp-map-id="'+map_obj.map_data.map_property.map_id+'" data-wpgmp-filter-by="category" data-filter="dropdown" data-name="category" name="place_' + 3675 index + 3676 '">'; 3677 content += 3678 '<option value="">' + wpgmp_local.select_category + "</option>"; 3679 options = map_obj.sort_object_by_keyvalue( 3680 options, 3681 by, 3682 type, 3683 inorder 3684 ); 3685 $.each(options, function (name, value) { 3686 content += 3687 "<option value='" + value.id + "'>" + value.name + "</option>"; 3688 }); 3689 content += "</select>"; 3690 } else if (wpgmp_listing_filter.display_taxonomies_filter === true) { 3691 if (wpgmp_alltfilter === null) return false; 3692 3693 if (wpgmp_alltfilter.indexOf(index) > -1) { 3694 content += 3695 '<select data-filter="dropdown" data-name="category" name="place_' + 3696 index + 3697 '">'; 3698 content += '<option value="">Select ' + index + "</option>"; 3699 $.each(options, function (name, value) { 3700 content += 3701 "<option value='" + value + "'>" + name + "</option>"; 3702 }); 3703 content += "</select>"; 3704 } 3705 } 3706 }); 3707 } 3708 3709 if (map_obj.map_data.map_options.advance_template) { 3710 if (!map_obj.template_data) { 3711 map_obj.template_data = {}; // Ensure template_data exists 3712 } 3713 if (!Array.isArray(map_obj.template_data.filter)) { 3714 map_obj.template_data.filter = []; // Ensure filter is an array 3715 } 3716 map_obj.template_data.filter.push(filters); 3717 } 3718 3719 return content; 3720 } 3721 3722 update_places_listing() { 3723 var map_obj = this; 3724 3725 if (map_obj.per_page_value > 0) 3726 map_obj.per_page_value = map_obj.per_page_value; 3727 else 3728 map_obj.per_page_value = 3729 map_obj.map_data.listing.pagination.listing_per_page; 3730 3731 $(map_obj.container) 3732 .find(".location_pagination" + map_obj.map_data.map_property.map_id) 3733 .pagination(map_obj.show_places.length, { 3734 callback: map_obj.display_places_listing, 3735 map_data: map_obj, 3736 items_per_page: map_obj.per_page_value, 3737 prev_text: wpgmp_local.prev, 3738 next_text: wpgmp_local.next, 3739 }); 3740 } 3741 3742 display_filters_listing() { 3743 if (this.map_data.listing) { 3744 var hide_locations = this.map_data.listing.hide_locations; 3745 3746 var wpgmpgl = this.map_data.listing.list_grid; 3747 3748 if (hide_locations != true) { 3749 var content = '<div class="wpgmp_listing_container">'; 3750 3751 content += 3752 "<div class='wpgmp_categories wpgmp_print_listing " + 3753 wpgmpgl + 3754 "' data-container='wpgmp-listing-" + 3755 $(this.element).attr("id") + 3756 "'></div>"; 3757 3758 content += "</div>"; 3759 $(this.map_data.listing.listing_container).html(content); 3760 } 3761 } 3762 } 3763 3764 display_filters() { 3765 var hide_locations = this.map_data.listing.hide_locations; 3766 var listing_header = this.map_data.listing.listing_header; 3767 var content = ""; 3768 if (listing_header != undefined) { 3769 content += 3770 '<div class="wpgmp_before_listing">' + 3771 this.map_data.listing.listing_header + 3772 "</div>"; 3773 } 3774 if (this.map_data.listing.display_search_form === true) { 3775 var autosuggest_class = ""; 3776 3777 if (this.map_data.listing.search_field_autosuggest === true) { 3778 autosuggest_class = "wpgmp_auto_suggest"; 3779 } 3780 3781 content += 3782 '<div class="wpgmp_listing_header">
3782<div class="wpgmp_search_form"><input type="text" rel="24" data-input="wpgmp-search-text" name="wpgmp_search_input" class="wpgmp_search_input ' + 3783 autosuggest_class + 3784 '" placeholder="' + 3785 wpgmp_local.search_placeholder + 3786 '"></div></div>'; 3787 } 3788 3789 content += 3790 '<div class="categories_filter">' + 3791 this.create_filters() + 3792 '<div data-container="wpgmp-filters-container"></div>'; 3793 3794 if (hide_locations != true) content += this.create_sorting() + ""; 3795 3796 if ( 3797 hide_locations != true && 3798 this.map_data.listing.display_location_per_page_filter === true 3799 ) { 3800 content += " " + this.create_perpage_option() + " "; 3801 } 3802 3803 content += " " + this.create_radius() + " "; 3804 3805 if ( 3806 hide_locations != true && 3807 this.map_data.listing.display_print_option === true 3808 ) { 3809 content += " " + wpgmp_local.img_print; 3810 } 3811 3812 if ( 3813 hide_locations != true && 3814 this.map_data.listing.display_grid_option === true 3815 ) { 3816 content += " " + wpgmp_local.img_grid + wpgmp_local.img_list; 3817 } 3818 3819 if ( 3820 typeof this.map_data.map_options.display_reset_button != "undefined" && 3821 this.map_data.map_options.display_reset_button === true 3822 ) { 3823 content += 3824 '<div class="categories_filter_reset"><input type="button" class="categories_filter_reset_btn" name="categories_filter_reset_btn" value="' + 3825 this.map_data.map_options.map_reset_button_text + 3826 '"></div>'; 3827 } 3828 3829 content += "</div>"; 3830 3831 return content; 3832 } 3833 3834 set_icon_marker(place, iconUrl, iconSize = [32, 32]) { 3835 if (!place || !place.marker || !iconUrl) return; 3836 3837 const isGoogle = this.isMapProvider('google'); 3838 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 3839 3840 if (isGoogle) { 3841 // Google Maps: uses scaledSize and url object 3842 const icon = { url: iconUrl }; 3843 3844 if (isSvg) { 3845 icon.scaledSize = new google.maps.Size(iconSize[0], iconSize[1]); 3846 } 3847 3848 place.marker.setIcon(icon); 3849 3850 3851 } else { 3852 const icon = { url: iconUrl }; 3853 3854 if (isSvg) { 3855 icon.scaledSize = [iconSize[0], iconSize[1]]; 3856 } 3857 3858 place.marker.setIcon(icon); 3859 3860 } 3861 } 3862 3863 3864 display_places_listing(page_index, jq) { 3865 var content = ""; 3866 var map_obj = this; 3867 var category_selector_dropdown = $('select[name = "place_category"]'); 3868 var items_per_page = 10; 3869 if (map_obj.items_per_page) items_per_page = map_obj.items_per_page; 3870 else 3871 items_per_page = 3872 map_obj.map_data.map_data.listing.pagination.listing_per_page; 3873 3874 if ($.isFunction($.fn.locationSortByDistance)) { 3875 var distance_image = 3876 map_obj.map_data.map_data.plugin_url + 3877 "assets/images/location-icon.png"; 3878 if ( 3879 ($("#search_location_autocomplete").val() != "" && 3880 map_obj.map_data.is_place_changed) || 3881 map_obj.map_data.is_location_allowed 3882 ) { 3883 map_obj.map_data.show_places = 3884 map_obj.map_data.sorted_locations_by_search; 3885 } 3886 } 3887 3888 var data_source = map_obj.map_data.show_places; 3889 3890 var listing_container = 3891 map_obj.map_data.map_data.listing.listing_container; 3892 3893 var listing_placeholder = 3894 map_obj.map_data.map_data.listing.listing_placeholder; 3895 3896 var max_elem = Math.min( 3897 (page_index + 1) * items_per_page, 3898 data_source.length 3899 ); 3900 var link = ""; 3901 var onclick_action = ""; 3902 if (max_elem > 0) { 3903 for (var i = page_index * items_per_page; i < max_elem; i++) { 3904 var place = data_source[i]; 3905 var temp_listing_placeholder = listing_placeholder; 3906 if (place.marker.getVisible() === true) { 3907 if (place.id) { 3908 if (place.location.onclick_action == "marker") { 3909 link = 3910 '<a href="javascript:void(0);" class="place_title" data-zoom="' + 3911 place.location.zoom + 3912 '" data-marker="' + 3913 place.id + 3914 '" >' + 3915 place.title + 3916 "</a>"; 3917 onclick_action = 3918 'href="javascript:void(0);" data-zoom="' + 3919 place.location.zoom + 3920 '" data-marker="' + 3921 place.id + 3922 '"'; 3923 } else if (place.location.onclick_action == "post") { 3924 link = 3925 '<a href="' + 3926 place.location.redirect_permalink + 3927 '" target="_blank">' + 3928 place.title + 3929 "</a>"; 3930 onclick_action = 3931 'href="' + 3932 place.location.redirect_permalink + 3933 '" target="_blank"'; 3934 } else if (place.location.onclick_action == "custom_link") { 3935 link = 3936 '<a href="' + 3937 place.location.redirect_custom_link + 3938 '" target="_blank">' + 3939 place.title + 3940 "</a>"; 3941 onclick_action = 3942 'href="' + 3943 place.location.redirect_custom_link + 3944 '" target="_blank"'; 3945 } else { 3946 link = 3947 '<a href="javascript:void(0);" class="place_title" data-zoom="' + 3948 place.location.zoom + 3949 '" data-marker="' + 3950 place.id + 3951 '" >' + 3952 place.title + 3953 "</a>"; 3954 onclick_action = 3955 'href="javascript:void(0);" data-zoom="' + 3956 place.location.zoom + 3957 '" data-marker="' + 3958 place.id + 3959 '"'; 3960 } 3961 } 3962 3963 var image = []; 3964 var category_name = []; 3965 var wpgmp_arr = {}; 3966 3967 if (place.categories) { 3968 for (var c = 0; c < place.categories.length; c++) { 3969 if (place.categories[c].icon !== "") { 3970 image.push( 3971 "<img title='" + 3972 place.categories[c].name + 3973 "' alt='" + 3974 place.categories[c].name + 3975 "' src='" + 3976 place.categories[c].icon + 3977 "' />" 3978 ); 3979 } 3980 3981 if ( 3982 place.categories[c].type == "category" && 3983 place.categories[c].name != "" 3984 ) { 3985 if ( 3986 map_obj.map_data.map_data.map_options.advance_template == 3987 true 3988 ) { 3989 category_name.push( 3990 '<span class="wep-chip">' + 3991 place.categories[c].name + 3992 "</span>" 3993 ); 3994 } else { 3995 category_name.push('<div class="fc-badge">'+place.categories[c].name+'</div>'); 3996 } 3997 } 3998 3999 if (place.categories[c].type != "category") { 4000 if (typeof place.categories[c].name == "undefined") continue; 4001 4002 if (place.categories[c].name) var sep = ","; 4003 4004 if (typeof wpgmp_arr[place.categories[c].type] == "undefined") 4005 wpgmp_arr[place.categories[c].type] = ""; 4006 4007 wpgmp_arr[place.categories[c].type] += 4008 place.categories[c].name + sep; 4009 } 4010 } 4011 } 4012 4013 var marker_image = ""; 4014 4015 if (place.source == "post") { 4016 marker_image = place.location.extra_fields.post_featured_image; 4017 } else { 4018 marker_image = place.location.marker_image; 4019 } 4020 4021 category_name = category_name.join(""); 4022 4023 var replaceData = { 4024 "{marker_id}": place.id, 4025 "{marker_title}": link, 4026 "{marker_address}": place.address, 4027 "{marker_latitude}": place.location.lat, 4028 "{marker_longitude}": place.location.lng, 4029 "{marker_city}": place.location.city, 4030 "{marker_state}": place.location.state, 4031 "{marker_country}": place.location.country, 4032 "{marker_postal_code}": place.location.postal_code, 4033 "{marker_zoom}": place.location.zoom, 4034 "{marker_icon}": image, 4035 "{marker_category}": category_name, 4036 "{marker_message}": place.content, 4037 "{marker_image}": marker_image, 4038 "{marker_featured_image}": marker_image, 4039 "{wpgmp_listing_html}": place.listing_hook, 4040 "{onclick_action}
4040": onclick_action, 4041 "{distance}": "", 4042 "{get_directions_link}": 4043 "http://www.google.com/maps/place/" + 4044 parseFloat(place.location.lat) + 4045 "," + 4046 parseFloat(place.location.lng), 4047 }; 4048 4049 if ($.isFunction($.fn.locationSortByDistance)) { 4050 if ( 4051 typeof place.distance !== "undefined" && 4052 place.distance !== null && 4053 place.distance !== "NaN" 4054 ) { 4055 var dimension = 4056 map_obj.map_data.map_data.listing.radius_dimension; 4057 if (dimension == "km") { 4058 if ((place.distance / 1000).toFixed(2) != "NaN") { 4059 place.distance = (place.distance / 1000).toFixed(2) + " Km"; 4060 place.location.extra_fields.distance = 4061 '<img width="21px" height="26px" src="' + 4062 distance_image + 4063 '" style="width: 21px!important;height: 26px!important;margin-right: 3px!important;margin-top: 0px!important;"><span class="distance_calculate">' + 4064 place.distance + 4065 "</span>"; 4066 } 4067 } else { 4068 if ((place.distance / 1000).toFixed(2) != "NaN") { 4069 place.distance = (place.distance / 1000).toFixed(2); 4070 place.distance = 4071 (place.distance / 1.6).toFixed(2) + " Miles"; 4072 place.location.extra_fields.distance = 4073 '<img width="21px" height="26px" src="' + 4074 distance_image + 4075 '" style="width: 21px!important;height: 26px!important;margin-right: 3px!important;margin-top: 0px!important;"><span class="distance_calculate">' + 4076 place.distance + 4077 "</span>"; 4078 } 4079 } 4080 } 4081 } 4082 4083 //Add extra fields of locations 4084 if (typeof place.location.extra_fields != "undefined") { 4085 for (var extra in place.location.extra_fields) { 4086 if (!place.location.extra_fields[extra]) { 4087 replaceData["{" + extra + "}"] = 4088 "<div class='wpgmp_empty'>wpgmp_empty</div>"; 4089 } else { 4090 replaceData["{" + extra + "}"] = 4091 place.location.extra_fields[extra]; 4092 } 4093 } 4094 } 4095 4096 temp_listing_placeholder = temp_listing_placeholder.replace( 4097 /{#if (.*?)}([\s\S]*?){\/if}/g, 4098 function (match, p1, p2) { 4099 const key = "{" + p1 + "}"; 4100 const value = replaceData[key]; 4101 return value && 4102 value !== "<div class='wpgmp_empty'>wpgmp_empty</div>" 4103 ? p2 4104 : ""; 4105 } 4106 ); 4107 4108 if ( 4109 map_obj.map_data.map_data.map_options.link_extra_field != 4110 undefined && 4111 map_obj.map_data.map_data.map_options.link_extra_field != "" 4112 ) { 4113 var anchor_tag = 4114 map_obj.map_data.map_data.map_options.link_extra_field; 4115 for (var prop_an in anchor_tag) { 4116 if ( 4117 replaceData[prop_an] != 4118 "<div class='wpgmp_empty'>wpgmp_empty</div>" && 4119 prop_an != "" 4120 ) { 4121 temp_listing_placeholder = temp_listing_placeholder.replace( 4122 prop_an, 4123 anchor_tag[prop_an] 4124 ); 4125 } 4126 } 4127 } 4128 4129 for (var prop in replaceData) { 4130 if ( 4131 replaceData[prop] == undefined || 4132 replaceData[prop] == "undefined" 4133 ) 4134 replaceData[prop] = ""; 4135 } 4136 4137 if (wpgmp_arr) { 4138 for (var n in wpgmp_arr) { 4139 replaceData["{" + n + "}"] = wpgmp_remove_last_comma( 4140 wpgmp_arr[n] 4141 ); 4142 } 4143 } 4144 4145 var wpgmp_remove_last_comma = function (strng) { 4146 var n = strng.lastIndexOf(","); 4147 var a = strng.substring(0, n); 4148 return a; 4149 }; 4150 4151 temp_listing_placeholder = temp_listing_placeholder.replace( 4152 /{[^{}]+}/g, 4153 function (match) { 4154 if (match in replaceData) { 4155 return replaceData[match]; 4156 } else { 4157 return ""; 4158 } 4159 } 4160 ); 4161 4162 content += temp_listing_placeholder; 4163 } 4164 } 4165 } else { 4166 content = 4167 "<div class='wpgmp_no_locations'>" + 4168 wpgmp_local.wpgmp_location_no_results + 4169 "</div>"; 4170 } 4171 4172 for (var j = 0; j < data_source.length; j++) { 4173 place = data_source[j]; 4174 if ( 4175 typeof place.categories.length !== undefined && 4176 place.categories.length > 1 4177 ) { 4178 var iconSize = map_obj.map_data.getMarkerSize(); 4179 if (category_selector_dropdown.val() !== "") { 4180 if (place.categories) { 4181 for (var c = 0; c < place.categories.length; c++) { 4182 if ( 4183 category_selector_dropdown.val() == place.categories[c].id 4184 ) { 4185 4186 map_obj.map_data.set_icon_marker(place, place.categories[c].icon,iconSize); 4187 4188 break; 4189 } 4190 } 4191 } 4192 } else { 4193 4194 map_obj.map_data.set_icon_marker(place, place.location.icon,iconSize); 4195 4196 } 4197 } 4198 } 4199 4200 // content += '<div id="wpgmp_pagination"></div>'; 4201 4202 if (map_obj.map_data.map_data.map_options.advance_template === true) { 4203 var $listingElement = $(document).find( 4204 '[data-listing-content="true"][data-wpgmp-map-id]' 4205 ); 4206 var allClasses = $listingElement.attr("class").split(" "); 4207 listing_container = "." + allClasses[0]; 4208 $(listing_container).html(content); 4209 } else { 4210 content =
4211 '<div class="fc-' + 4212 map_obj.map_data.map_data.listing.list_item_skin.type + 4213 "-" + 4214 map_obj.map_data.map_data.listing.list_item_skin.name + 4215 ' fc-wait"><div data-page="2" class="fc-component-6" data-layout="' + 4216 map_obj.map_data.map_data.listing.list_item_skin.name + 4217 '" >' + 4218 content + 4219 "</div></div>"; 4220 $(listing_container).find(".wpgmp_categories").html(content); 4221 } 4222 4223 $(listing_container) 4224 .find(".wpgmp_extra_field:contains('wpgmp_empty')") 4225 .remove(); 4226 $(listing_container).find(".wpgmp_empty").prev().remove(); 4227 $(listing_container).find(".wpgmp_empty").remove(); 4228 4229 if (map_obj.map_data.map_data.listing.list_grid == "wpgmp_listing_grid") { 4230 $(window).on("load", function () { 4231 try { 4232 var container = $(listing_container).find(".wpgmp_listing_grid"); 4233 if (container.length) { 4234 var msnry = container.data("masonry"); 4235 if (msnry) { 4236 msnry.destroy(); 4237 } 4238 4239 container.imagesLoaded(function () { 4240 // init Masonry after all images have loaded 4241 container.masonry({ 4242 itemSelector: ".wpgmp_locations", 4243 columnWidth: ".wpgmp_locations", 4244 percentPosition: true, 4245 }); 4246 4247 // Now safe to call reload 4248 container.masonry("layout"); 4249 }); 4250 4251 } 4252 } catch (err) { 4253 console.log(err); 4254 } 4255 }); 4256 } 4257 return false; 4258 } 4259 // ----------------------------- 4260 // ð Filters & Listings 4261 // ----------------------------- 4262 apply_filters() { 4263 var map_obj = this; 4264 var filters = map_obj.filters; 4265 var showAll = true; 4266 var show = true; 4267 map_obj.show_places = []; 4268 // Filter by search box. 4269 if ($.isFunction($.fn.locationSortByDistance)) { 4270 map_obj.sorted_locations_by_search = []; 4271 } else { 4272 if ( 4273 $(map_obj.container).find('[data-input="wpgmp-search-text"]').length > 4274 0 4275 ) { 4276 map_obj.search_term = $(map_obj.container) 4277 .find('[data-input="wpgmp-search-text"]') 4278 .val() 4279 .trim(); 4280 4281 if (map_obj.search_term.length > 0) { 4282 map_obj.search_term = map_obj.search_term.toLowerCase(); 4283 map_obj.enable_search_term = true; 4284 } 4285 } 4286 } 4287 4288 if ( 4289 (map_obj.map_data.map_tabs && 4290 map_obj.map_data.map_tabs.category_tab && 4291 map_obj.map_data.map_tabs.category_tab.cat_tab === true) || 4292 $(map_obj.container).find("input[data-marker-category]").length > 0 4293 ) { 4294 var all_selected_category_sel = $(map_obj.container).find( 4295 "input[data-marker-category]:checked" 4296 ); 4297 var all_selected_category = []; 4298 var all_not_selected_location = []; 4299 if (all_selected_category_sel.length > 0) { 4300 $.each( 4301 all_selected_category_sel, 4302 function (index, selected_category) { 4303 all_selected_category.push( 4304 $(selected_category).data("marker-category") 4305 ); 4306 var all_not_selected_location_sel = $(selected_category) 4307 .closest('[data-container="wpgmp-category-tab-item"]') 4308 .find("input[data-marker-location]:not(:checked)"); 4309 if (all_not_selected_location_sel.length > 0) { 4310 $.each( 4311 all_not_selected_location_sel, 4312 function (index, not_selected_location) { 4313 all_not_selected_location.push( 4314 $(not_selected_location).data("marker-location") 4315 ); 4316 } 4317 ); 4318 } 4319 } 4320 ); 4321 } 4322 var all_selected_location_sel = $(map_obj.container) 4323 .find('[data-container="wpgmp-category-tab-item"]') 4324 .find("input[data-marker-location]:checked"); 4325 var all_selected_location = []; 4326 if (all_selected_location_sel.length > 0) { 4327 $.each( 4328 all_selected_location_sel, 4329 function (index, selected_location) { 4330 all_selected_location.push( 4331 $(selected_location).data("marker-location") 4332 ); 4333 } 4334 ); 4335 } 4336 } 4337 4338 if (typeof map_obj.map_data.places != "undefined") { 4339 $.each(map_obj.map_data.places, function (place_key, place) { 4340 show = true; 4341 if (typeof filters != "undefined") { 4342 $.each(filters, function (filter_key, filter_values) { 4343 var in_fields = false;
4344 4345 if ($.isArray(filter_values)) { 4346 if ( 4347 typeof place.categories != "undefined" && 4348 filter_key == "category" 4349 ) { 4350 $.each(place.categories, function (cat_index, category) { 4351 if ($.inArray(category.id, filter_values) > -1) { 4352 in_fields = true; 4353 } 4354 }); 4355 } 4356 4357 if (typeof place.custom_filters != "undefined") { 4358 $.each(place.custom_filters, function (k, val) { 4359 if (filter_key == k) { 4360 in_fields = false; 4361 if ($.isArray(val)) { 4362 $.each(val, function (index, value) { 4363 if ($.inArray(value, filter_values) > -1) 4364 in_fields = true; 4365 }); 4366 } else if (val == filter_values.val) in_fields = true; 4367 } 4368 }); 4369 } 4370 4371 if (typeof place[filter_key] != "undefined") { 4372 if ( 4373 $.inArray(place[filter_key].toLowerCase(), filter_values) > 4374 -1 4375 ) { 4376 in_fields = true; 4377 } 4378 } else if (typeof place.location[filter_key] != "undefined") { 4379 if ( 4380 $.inArray( 4381 place.location[filter_key].toLowerCase(), 4382 filter_values 4383 ) > -1 4384 ) { 4385 in_fields = true; 4386 } 4387 } else if ( 4388 place.location.extra_fields && 4389 typeof place.location.extra_fields[filter_key] != "undefined" 4390 ) { 4391 var dropdown_value = filter_values[0]; 4392 4393 if (place.location.extra_fields[filter_key] != "") { 4394 var arrayResult = 4395 place.location.extra_fields[filter_key].split(","); 4396 4397 var trimmedArray = $.map(arrayResult, function (value) { 4398 return $.trim(value).toLowerCase(); 4399 }); 4400 } 4401 if (place.location.extra_fields[filter_key]) { 4402 var dropdown_val = 4403 place.location.extra_fields[filter_key].toLowerCase(); 4404 var dropdown_val_decoded = $("<div>") 4405 .html(dropdown_val) 4406 .text(); 4407 if ( 4408 dropdown_val && 4409 (dropdown_val.indexOf(dropdown_value) > -1 || 4410 dropdown_val_decoded.indexOf(dropdown_value) > -1) 4411 ) { 4412 in_fields = true; 4413 } else if ($.inArray(dropdown_val, filter_values) > -1) { 4414 in_fields = true; 4415 } else if ( 4416 trimmedArray != undefined && 4417 $.inArray(dropdown_value, trimmedArray) > -1 4418 ) { 4419 in_fields = true; 4420 } else if (Array.isArray(dropdown_value) && trimmedArray !== undefined && dropdown_value.some(value => trimmedArray.includes(value))) { 4421 in_fields = true; 4422 } 4423 } 4424 } 4425 4426 if (map_obj.addonInfo !== "") { 4427 $.each(map_obj.addonInfo, function (key, method) { 4428 var method_name = method.filtration_logic; 4429 4430 if ( 4431 typeof map_obj[method_name] !== "undefined" && 4432 $.isFunction(map_obj[method_name]) 4433 ) { 4434 in_fields = map_obj[method_name]( 4435 in_fields, 4436 place, 4437 filter_values, 4438 filter_key 4439 ); 4440 } 4441 }); 4442 } 4443 4444 if (in_fields == false) show = false; 4445 } else { 4446 filter_values.val = ""; 4447 } 4448 }); 4449 } 4450 4451 var search_fields = map_obj.map_data.map_options.search_fields; 4452 var exclude_fields = map_obj.map_data.map_options.exclude_fields; 4453 4454 if (Array.isArray(exclude_fields) && exclude_fields.length > 0) { 4455 if (exclude_fields.includes("{post_title}")) { 4456 if (!exclude_fields.includes("{post_link}")) { 4457 exclude_fields.push("{post_link}"); 4458 } 4459 if (!exclude_fields.includes("{marker_title}")) { 4460 exclude_fields.push("{marker_title}"); 4461 } 4462 } 4463 4464 if (exclude_fields.includes("{post_content}")) { 4465 if (!exclude_fields.includes("{post_excerpt}")) { 4466 exclude_fields.push("{post_excerpt}"); 4467 } 4468 if (!exclude_fields.includes("{marker_message}")) { 4469 exclude_fields.push("{marker_message}"); 4470 } 4471 } 4472 4473 if ( 4474 exclude_fields.includes("{post_excerpt}") && 4475 !exclude_fields.includes("{post_content}") 4476 ) { 4477 exclude_fields.push("{post_content}"); 4478 } 4479 4480 if ( 4481 exclude_fields.includes("{marker_address}") && 4482 !exclude_fields.includes("{%_wpgmp_location_address%}") 4483 ) { 4484 exclude_fields.push("{%_wpgmp_location_address%}"); 4485 } 4486 4487 if ( 4488 exclude_fields.includes("{marker_city}") && 4489 !exclude_fields.includes("{%_wpgmp_location_city%}") 4490 ) { 4491 exclude_fields.push("{%_wpgmp_location_city%}"); 4492 } 4493 4494 if ( 4495 exclude_fields.includes("{marker_country}") && 4496 !exclude_fields.includes("{%_wpgmp_location_country%}") 4497 ) { 4498 exclude_fields.push("{%_wpgmp_location_country%}"); 4499 } 4500 4501 if ( 4502 exclude_fields.includes("{marker_state}") && 4503 !exclude_fields.includes("{%_wpgmp_location_state%}") 4504 ) { 4505 exclude_fields.push("{%_wpgmp_location_state%}"); 4506 } 4507 4508 if ( 4509 exclude_fields.includes("{marker_longitude}") && 4510 !exclude_fields.includes("{%_wpgmp_metabox_longitude%}") 4511 ) { 4512 exclude_fields.push("{%_wpgmp_metabox_longitude%}"); 4513 } 4514 4515 if ( 4516 exclude_fields.includes("{marker_latitude}") && 4517 !exclude_fields.includes("{%_wpgmp_metabox_latitude%}") 4518 ) { 4519 exclude_fields.push("{%_wpgmp_metabox_latitude%}"); 4520 } 4521 } 4522 var extra_fields_array = place.location.extra_fields; 4523 var flag_search = false;
4524 var flag_exclude = false; 4525 4526 var search_exclude = {}; 4527 if ( 4528 typeof exclude_fields !== "undefined" && 4529 exclude_fields.length > 0 4530 ) { 4531 flag_exclude = true; 4532 search_exclude = Object.keys(extra_fields_array) 4533 .filter((key) => !exclude_fields.includes(`{${key}}`)) 4534 .reduce((obj, key) => { 4535 obj[key] = extra_fields_array[key]; 4536 return obj; 4537 }, {}); 4538 } 4539 //search with only these field 4540 var search_fields_present = []; 4541 if ( 4542 typeof search_fields !== "undefined" && 4543 search_fields.length > 0 4544 ) { 4545 flag_search = true; 4546 for (var i = 0; i < search_fields.length; i++) { 4547 if ( 4548 extra_fields_array.hasOwnProperty(search_fields[i].slice(1, -1)) 4549 ) { 4550 search_fields_present.push(search_fields[i]); 4551 } 4552 } 4553 } 4554 4555 //Apply Search Filter. 4556 var search_term = map_obj.search_term; 4557 if (search_term && search_term.length > 0) { 4558 if (map_obj.enable_search_term === true && show === true) { 4559 if (flag_search == true || flag_exclude == true) { 4560 if ( 4561 place.title != undefined && 4562 place.title.toLowerCase().indexOf(search_term) >= 0 && 4563 ((flag_search && search_fields.includes("{marker_title}")) || 4564 (flag_exclude && 4565 !exclude_fields.includes("{marker_title}"))) 4566 ) { 4567 show = true; 4568 } else if ( 4569 place.content != undefined && 4570 place.content.toLowerCase().indexOf(search_term) >= 0 && 4571 ((flag_search == true && 4572 search_fields.includes("{marker_message}")) || 4573 (flag_exclude == true && 4574 !exclude_fields.includes("{marker_message}"))) 4575 ) { 4576 show = true; 4577 } else if ( 4578 String(place.location.lat) 4579 .toLowerCase() 4580 .indexOf(search_term) >= 0 && 4581 ((flag_search == true && 4582 search_fields.includes("{marker_latitude}")) || 4583 (flag_exclude == true && 4584 !exclude_fields.includes("{marker_latitude}"))) 4585 ) { 4586 show = true; 4587 } else if ( 4588 String(place.location.lng) 4589 .toLowerCase() 4590 .indexOf(search_term) >= 0 && 4591 ((flag_search == true && 4592 search_fields.includes("{marker_longitude}")) || 4593 (flag_exclude == true && 4594 !exclude_fields.includes("{marker_longitude}"))) 4595 ) { 4596 show = true; 4597 } else if ( 4598 place.address && 4599 place.address.toString().toLowerCase().indexOf(search_term) >= 4600 0 && 4601 ((flag_search == true && 4602 search_fields.includes("{marker_address}")) || 4603 (flag_exclude == true && 4604 !exclude_fields.includes("{marker_address}"))) 4605 ) { 4606 show = true; 4607 } else if ( 4608 place.location.state && 4609 place.location.state.toLowerCase().indexOf(search_term) >= 4610 0 && 4611 ((flag_search == true && 4612 search_fields.includes("{marker_state}")) || 4613 (flag_exclude == true && 4614 !exclude_fields.includes("{marker_state}"))) 4615 ) { 4616 show = true; 4617 } else if ( 4618 place.location.country && 4619 place.location.country.toLowerCase().indexOf(search_term) >= 4620 0 && 4621 ((flag_search == true && 4622 search_fields.includes("{marker_country}")) || 4623 (flag_exclude == true && 4624 !exclude_fields.includes("{marker_country}"))) 4625 ) { 4626 show = true; 4627 } else if ( 4628 place.location.postal_code && 4629 String(place.location.postal_code) 4630 .toLowerCase() 4631 .indexOf(search_term) >= 0 && 4632 ((flag_search == true && 4633 search_fields.includes("{marker_postal_code}")) || 4634 (flag_exclude == true && 4635 !exclude_fields.includes("{marker_postal_code}"))) 4636 ) { 4637 show = true; 4638 } else if ( 4639 place.location.city && 4640 place.location.city.toLowerCase().indexOf(search_term) >= 0 && 4641 ((flag_search == true && 4642 search_fields.includes("{marker_city}")) || 4643 (flag_exclude == true && 4644 !exclude_fields.includes("{marker_city}"))) 4645 ) { 4646 show = true; 4647 } else { 4648 show = false;
4649 } 4650 4651 if (flag_search == true) { 4652 if (search_fields_present.length > 0) { 4653 for (const field of search_fields_present) { 4654 if (typeof place.location.extra_fields != "undefined") { 4655 $.each( 4656 place.location.extra_fields, 4657 function (field, value) { 4658 if ( 4659 value && 4660 $.inArray( 4661 "{" + field + "}", 4662 search_fields_present 4663 ) !== -1 4664 ) { 4665 value = value.toString(); 4666 if ( 4667 value && 4668 value.toLowerCase().indexOf(search_term) >= 0 4669 ) 4670 show = true; 4671 } 4672 } 4673 ); 4674 } 4675 } 4676 } 4677 } else if (flag_exclude == true) { 4678 for (var field in search_exclude) { 4679 var value = search_exclude[field]; 4680 4681 if (value) { 4682 value = value.toString(); 4683 4684 if ( 4685 value && 4686 value.toLowerCase().indexOf(search_term) >= 0 4687 ) { 4688 show = true; 4689 } 4690 } 4691 } 4692 } 4693 } else { 4694 if ( 4695 place.title != undefined && 4696 place.title.toLowerCase().indexOf(search_term) >= 0 4697 ) { 4698 show = true; 4699 } else if ( 4700 place.content != undefined && 4701 place.content.toLowerCase().indexOf(search_term) >= 0 4702 ) { 4703 show = true; 4704 } else if ( 4705 String(place.location.lat) 4706 .toLowerCase() 4707 .indexOf(search_term) >= 0 4708 ) { 4709 show = true; 4710 } else if ( 4711 String(place.location.lng) 4712 .toLowerCase() 4713 .indexOf(search_term) >= 0 4714 ) { 4715 show = true; 4716 } else if ( 4717 place.address && 4718 place.address.toString().toLowerCase().indexOf(search_term) >= 4719 0 4720 ) { 4721 show = true; 4722 } else if ( 4723 place.location.state && 4724 place.location.state.toLowerCase().indexOf(search_term) >= 0 4725 ) { 4726 show = true; 4727 } else if ( 4728 place.location.country && 4729 place.location.country.toLowerCase().indexOf(search_term) >= 0 4730 ) { 4731 show = true; 4732 } else if ( 4733 place.location.postal_code && 4734 String(place.location.postal_code) 4735 .toLowerCase() 4736 .indexOf(search_term) >= 0 4737 ) { 4738 show = true; 4739 } else if ( 4740 place.location.city && 4741 place.location.city.toLowerCase().indexOf(search_term) >= 0 4742 ) { 4743 show = true; 4744 } else { 4745 show = false; 4746 } 4747 4748 if (typeof place.location.extra_fields != "undefined") { 4749 $.each(place.location.extra_fields, function (field, value) { 4750 if (value) { 4751 value = value.toString(); 4752 if ( 4753 value && 4754 value.toLowerCase().indexOf(search_term) >= 0 4755 ) 4756 show = true; 4757 } 4758 }); 4759 } 4760 } 4761 } 4762 } 4763 4764 //Exclude locations without category if location filters are choosed by user 4765 if ( 4766 (place.categories.length == undefined || 4767 place.categories.length == "undefined") && 4768 all_selected_category && 4769 all_selected_category.length > 0 && 4770 $(map_obj.container) 4771 .find('input[name="wpgmp_select_all"]') 4772 .is(":checked") == false && 4773 show 4774 ) { 4775 show = false;
4776 } 4777 4778 // if checked category 4779 if ( 4780 all_selected_category && 4781 show != false && 4782 place.categories.length != undefined 4783 ) { 4784 var in_checked_category = false; 4785 4786 if (all_selected_category.length === 0) { 4787 // means no any category selected so show those location without categories. 4788 if (typeof place.categories != "undefined") { 4789 $.each(place.categories, function (cat_index, category) { 4790 if (category.id === "") in_checked_category = true; 4791 }); 4792 } 4793 } else { 4794 if (typeof place.categories != "undefined") { 4795 $.each(place.categories, function (cat_index, category) { 4796 if (category.id === "") in_checked_category = true; 4797 else if ( 4798 $.inArray(parseInt(category.id), all_selected_category) > -1 4799 ) { 4800 in_checked_category = true; 4801 var iconSize = map_obj.getMarkerSize(); 4802 map_obj.set_icon_marker(place, category.icon,iconSize); 4803 4804 } 4805 }); 4806 } 4807 } 4808 4809 //Hide unchecked locations. 4810 if (all_not_selected_location.length !== 0) { 4811 if ( 4812 $.inArray(parseInt(place.id), all_not_selected_location) > -1 4813 ) { 4814 in_checked_category = false; 4815 } 4816 } 4817 4818 //var checked_categories = $(map_obj.container).find('input[data-marker-category]:checked').length; 4819 if (in_checked_category === false) show = false; 4820 else show = true; 4821 4822 //Show Here checked location. 4823 if (all_selected_location.length !== 0) { 4824 if ($.inArray(parseInt(place.id), all_selected_location) > -1) { 4825 show = true; 4826 } 4827 } 4828 } 4829 4830 if( show == true ) { 4831 place.marker.bindMap(map_obj.map); 4832 } 4833 place.marker.setVisible(show); 4834 4835 if (show == false) { 4836 place.infowindow.close(); 4837 } 4838 place.marker.setAnimation(null); 4839 if ($.isFunction($.fn.locationSortByDistance)) { 4840 if (show === true) { 4841 map_obj.show_places.push(place); 4842 map_obj.sorted_locations_by_search.push(place); 4843 } 4844 } else { 4845 if (show === true) map_obj.show_places.push(place); 4846 } 4847 }); 4848 4849 if ($.isFunction($.fn.locationSortByDistance)) {
4850 if (map_obj.search_place != undefined) { 4851 map_obj.is_place_changed = true; 4852 var sotred_locs = map_obj.shuffle_by_distance( 4853 map_obj.sorted_locations_by_search, 4854 map_obj.search_place 4855 ); 4856 map_obj.places = sotred_locs; 4857 } 4858 } 4859 } 4860 4861 if ( 4862 typeof map_obj.map_data.map_options.bound_map_after_filter !== 'undefined' && 4863 map_obj.map_data.map_options.bound_map_after_filter === true 4864 ) { 4865 const isGoogle = map_obj.isMapProvider("google"); 4866 4867 // Create a bounds object based on provider 4868 const bounds = isGoogle 4869 ? new google.maps.LatLngBounds() 4870 : new L.LatLngBounds(); 4871 4872 if (Array.isArray(map_obj.show_places) && map_obj.show_places.length > 0) { 4873 map_obj.show_places.forEach((place) => { 4874 const lat = parseFloat(place.location.lat); 4875 const lng = parseFloat(place.location.lng); 4876 4877 if (!isNaN(lat) && !isNaN(lng)) { 4878 const latLng = isGoogle 4879 ? new google.maps.LatLng(lat, lng) 4880 : L.latLng(lat, lng); 4881 4882 bounds.extend(latLng); 4883 } 4884 }); 4885 // Fit bounds to map 4886 if (isGoogle) { 4887 map_obj.map.fitBounds(bounds); 4888 } else { 4889 map_obj.map.fitBounds(bounds, { padding: [20, 20] }); // optional padding 4890 } 4891 } 4892 } 4893 4894 4895 if (map_obj.map_data.listing) { 4896 if ($(map_obj.container).find('[data-filter="map-sorting"]').val()) { 4897 var order_data = $(map_obj.container) 4898 .find('[data-filter="map-sorting"]') 4899 .val() 4900 .split("__"); 4901 var data_type = ""; 4902 if (order_data[0] !== "" && order_data[1] !== "") { 4903 if (typeof order_data[2] != "undefined") { 4904 data_type = order_data[2]; 4905 } 4906 map_obj.sorting(order_data[0], order_data[1], data_type); 4907 } 4908 } else { 4909 if ( 4910 map_obj.map_data.listing.default_sorting && 4911 map_obj.map_data.autosort 4912 ) { 4913 var data_type = ""; 4914 if ( 4915 map_obj.map_data.listing.default_sorting.orderby == "listorder" 4916 ) { 4917 data_type = "num"; 4918 } 4919 map_obj.sorting( 4920 map_obj.map_data.listing.default_sorting.orderby, 4921 map_obj.map_data.listing.default_sorting.inorder, 4922 data_type 4923 ); 4924 } 4925 } 4926 4927 map_obj.update_places_listing(); 4928 } 4929 4930 if (map_obj.map_data.marker_cluster) { 4931 setTimeout(function () { 4932 map_obj.set_marker_cluster(); 4933 }, 2000); 4934 } 4935 } 4936 update_filters() { 4937 var map_obj = this; 4938 map_obj.filters = {}; 4939 var all_dropdowns = $(map_obj.container).find('[data-filter="dropdown"]'); 4940 var all_checkboxes = $(map_obj.container).find( 4941 '[data-filter="checklist"]:checked' 4942 ); 4943 var all_list = $(map_obj.container).find( 4944 '[data-filter="list"].fc_selected' 4945 ); 4946 const map_id = map_obj.map_data.map_property.map_id; 4947 $.each(all_dropdowns, function (index, element) { 4948 if ($(this).val() != "") { 4949 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 4950 map_obj.filters[$(this).data("name")] = []; 4951 } 4952 4953 map_obj.filters[$(this).data("name")].push($(this).val()); 4954 } 4955 }); 4956 4957 $.each(all_checkboxes, function (index, element) { 4958 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 4959 map_obj.filters[$(this).data("name")] = []; 4960 } 4961 4962 map_obj.filters[$(this).data("name")].push($(this).val()); 4963 }); 4964 4965 $.each(all_list, function (index, element) { 4966 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 4967 map_obj.filters[$(this).data("name")] = []; 4968 } 4969 4970 map_obj.filters[$(this).data("name")].push( 4971 $(this).data("value").toString() 4972 ); 4973 }); 4974 4975 $('[data-wpgmp-filter="true"][data-wpgmp-map-id="' + map_id + '"]').each( 4976 function () { 4977 const filterBy = $(this).data("wpgmp-filter-by"); 4978 const inputType = $(this).prop("type").toLowerCase(); 4979 let inputValue; 4980 if (inputType === "checkbox" && $(this).is(":checked")) { 4981 inputValue = $(this).val(); 4982 } else if (inputType === "select-one" || inputType === "select") { 4983 inputValue = $(this).find("option:selected").val(); 4984 } else if (inputType === "radio" && $(this).is(":checked")) { 4985 inputValue = $(this).val(); 4986 } 4987 4988 if (filterBy == "search" && $(this).val().length > 2) { 4989 map_obj.search_term = $(this).val().toLowerCase(); 4990 map_obj.enable_search_term = true; 4991 } else if (filterBy == "search" && $(this).val().length < 2) { 4992 map_obj.search_term = ""; 4993 map_obj.enable_search_term = true; 4994 } 4995 4996 if (inputValue !== undefined && inputValue !== "") {
4997 map_obj.filters[filterBy] = map_obj.filters[filterBy] || []; 4998 map_obj.filters[filterBy].push(inputValue); 4999 } 5000 } 5001 ); 5002 5003 if (map_obj.addonInfo !== "") { 5004 $.each(map_obj.addonInfo, function (key, method) { 5005 var method_name = method.filter_register_mthod; 5006 5007 if ( 5008 typeof map_obj[method_name] !== "undefined" && 5009 $.isFunction(map_obj[method_name]) 5010 ) { 5011 map_obj[method_name](); 5012 } 5013 }); 5014 } 5015 5016 this.apply_filters(); 5017 } 5018 5019 register_events() { 5020 const map_obj = this; 5021 const map_id = map_obj.map_data.map_property.map_id; 5022 const $container = $(map_obj.container); 5023 const template = map_obj.map_data.map_options.template_name; 5024 const hasSearchButton = !!$(`[data-wpgmp-filter="true"][data-wpgmp-search-button="true"]`).length; 5025 5026 $container.on("input change", ".wpgmp_error", function () { 5027 $(this).removeClass("wpgmp_error"); 5028 }); 5029 5030 // ------------------------------- 5031 // ð Filters (dropdown, checklist, list, radius, per-page) 5032 // ------------------------------- 5033 5034 // Accordion tab toggle UI (for listings/filters etc.) 5035 $("body").on("click", ".fc-accordion-tab", function () { 5036 if ($(this).hasClass("active")) { 5037 $(this).removeClass("active"); 5038 5039 var acc_child = $(this).next().removeClass("active"); 5040 } else { 5041 $(".fc-accordion-tab").removeClass("active"); 5042 5043 $(".fc-accordion dd").removeClass("active"); 5044 5045 $(this).addClass("active"); 5046 5047 var acc_child = $(this).next().addClass("active"); 5048 } 5049 }); 5050 5051 if (map_obj.map_data.listing) { 5052 // Hook for dynamic taxonomy filters 5053 $.each(map_obj.map_data.listing.filters, function (key, filter) { 5054 $(map_obj.container) 5055 .find('select[name="' + filter + '"]') 5056 .on("change", function () { 5057 map_obj.update_filters(); 5058 }); 5059 }); 5060 } 5061 5062 $container.on("change", `select[data-wpgmp-filter="true"][data-wpgmp-map-id="${map_id}"]`, () => { 5063 map_obj.update_filters(); 5064 }); 5065 5066 $container.on('click', '.categories_filter_reset_btn', function () { 5067 $(map_obj.container).find('.wpgmp_filter_wrappers select').each(function () { 5068 $(this).find('option:first').attr('selected', 'selected'); 5069 $(this).find('option:first').prop('selected', 'selected'); 5070 }); 5071 5072 $('.wpgmp_search_input').val(''); 5073 5074 if (map_obj.addonInfo !== '') { 5075 5076 $.each(map_obj.addonInfo, function (key, method) { 5077 var method_name = method.filter_reset_method; 5078 5079 if (typeof map_obj[method_name] !== 'undefined' && $.isFunction(map_obj[method_name])) { 5080 5081 map_obj[method_name](); 5082 } 5083 5084 }); 5085 5086 } 5087 map_obj.update_filters(); 5088 5089 }); 5090 5091 $(map_obj.container).on("click", '[data-filter="dropdown"]', () => map_obj.update_filters()); 5092 $container.on("click", '[data-filter="checklist"]', () => map_obj.update_filters()); 5093 $container.on("click", '[data-filter="list"]', function () { 5094 $(this).toggleClass("fc_selected"); 5095 map_obj.update_filters(); 5096 }); 5097 5098 // Marker link scroll-to functionality 5099 $container.on("click", ".wpgmp_marker_link", function () { 5100 const markerId = $(this).data("marker"); 5101 const source = $(this).data("source"); 5102 $("html, body").animate( 5103 { scrollTop: $(map_obj.container).offset().top - 150 }, 5104 500 5105 ); 5106 map_obj.open_infowindow(markerId, source); 5107 }); 5108 5109 if (!hasSearchButton && (template !== 'layout_6' && template !== 'layout_7')) { 5110 $container.on("keyup", `input[data-wpgmp-filter="true"][data-wpgmp-map-id="${map_id}"]`, () => { 5111 map_obj.update_filters(); 5112 }); 5113 } 5114 5115 // Reset all filters (button with reset attribute) 5116 $container.on("click", '[data-filter-reset="true"]', () => { 5117 $('input[type="text"][data-wpgmp-filter="true"]').val(''); 5118 $('select[data-wpgmp-filter="true"]').prop("selectedIndex", 0); 5119 $('input[type="checkbox"][data-filter="checklist"], input[type="checkbox"][data-wpgmp-filter="true"]').prop("checked", false); 5120 $('[data-filter="list"].fc_selected').removeClass("fc_selected"); 5121 $('input[type="radio"][data-wpgmp-filter="true"]').prop("checked", false); 5122 map_obj.update_filters(); 5123 }); 5124 5125 // Advanced template â search button click triggers filtering 5126 $container.on("click", `[data-wpgmp-filter="true"][data-wpgmp-search-button="true"]`, () => { 5127 map_obj.update_filters(); 5128 }); 5129 5130 // ------------------------------- 5131 // ð Search Input 5132 // ------------------------------- 5133 $container.on("keyup", '[data-input="wpgmp-search-text"]', function () { 5134 const searchVal = $(this).val().trim(); 5135 $container.find('[data-filter="map-radius"]').val(""); 5136 map_obj.search_area = ""; 5137 5138 if (searchVal.length >
5138= 2 && map_obj.map_data.listing.apply_default_radius === true) { 5139 5140 map_obj.wpgmp_set_search_area(searchVal); 5141 5142 } else { 5143 map_obj.update_filters(); 5144 } 5145 }); 5146 5147 // ------------------------------- 5148 // ð Sorting & Per Page 5149 // ------------------------------- 5150 $container.on("change", `select[data-wpgmp-map-id="${map_id}"][data-filter="map-sorting"]`, function () { 5151 const [orderby, order, type = ""] = $(this).val().split("__"); 5152 if (orderby && order) { 5153 map_obj.sorting(orderby, order, type); 5154 map_obj.update_places_listing(); 5155 } 5156 }); 5157 5158 $container.on("change", `select[data-wpgmp-map-id="${map_id}"][data-filter="map-perpage-location-sorting"]`, function () { 5159 map_obj.per_page_value = $(this).val(); 5160 map_obj.update_filters(); 5161 }); 5162 5163 // ------------------------------- 5164 // ðºï¸ Marker & InfoWindow Events 5165 // ------------------------------- 5166 5167 $container.on("click", ".wpgmp_location_container a[data-marker]", function (e) { 5168 e.preventDefault(); 5169 const markerId = $(this).data("marker"); 5170 if (!markerId || typeof map_obj.open_infowindow !== "function") return; 5171 5172 map_obj.open_infowindow(markerId); 5173 }); 5174 5175 // Listing infowindow (custom event trigger like 'click', 'hover') 5176 $container.on(map_obj.settings.listing_infowindow_open_event, ".wpgmp_locations a[data-marker]", function () { 5177 const $el = $(this); 5178 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5179 setTimeout(() => map_obj.open_infowindow($el.data("marker")), 300); 5180 }); 5181 5182 $container.on(map_obj.settings.listing_infowindow_open_event, ".wep-card__title a[data-marker]", function () { 5183 const $el = $(this); 5184 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5185 setTimeout(() => map_obj.open_infowindow($el.data("marker")), 300); 5186 }); 5187 5188 // ------------------------------- 5189 // ð Tabs & UI Toggles 5190 // ------------------------------- 5191 $container.on("click", ".wpgmp_toggle_container", function () { 5192 $container.find(".wpgmp_toggle_main_container").slideToggle("slow"); 5193 const txt = $(this).text(); 5194 $(this).text(txt === wpgmp_local.hide ? wpgmp_local.show : wpgmp_local.hide); 5195 }); 5196 5197 $container.on("click", "li[class^='wpgmp-tab-'] a", function () { 5198 const tabId = $(this).parent().attr("rel"); 5199 $container.find("li[class^='wpgmp-tab-'] a").removeClass("active"); 5200 $(this).addClass("active"); 5201 $container.find(".wpgmp_toggle_main_container div[id^='wpgmp_tab_']").hide(); 5202 $container.find(`#wpgmp_tab_${tabId}`).show(); 5203 }); 5204 5205 $container.find(".wpgmp_find_nearby_button").click(function () { 5206 const target = $(this).closest(".wpgmp_nearby_container"); 5207 const inputField = $(target).find(".wpgmp_auto_suggest"); 5208 const lat = inputField.data('latitude'); 5209 const lon = inputField.data('longitude'); 5210 5211 const radiusField = $(map_obj.container).find("input[name='wpgmp_radius']"); 5212 const radius = radiusField.val(); 5213 5214 let hasError = false; 5215 5216 // Reset previous error classes 5217 inputField.removeClass("wpgmp_error"); 5218 radiusField.removeClass("wpgmp_error"); 5219 5220 // Validate location 5221 if (!lat || !lon) { 5222 inputField.addClass("wpgmp_error").focus(); 5223 hasError = true; 5224 } 5225 5226 // Validate radius 5227 if (!radius || isNaN(radius) || parseInt(radius) <= 0) { 5228 radiusField.addClass("wpgmp_error"); 5229 hasError = true; 5230 } 5231 5232 if (hasError) { 5233 return; // Stop execution 5234 } 5235 5236 const dim = $(map_obj.container).find("select[name='wpgmp_route_dimension']").val(); 5237 const amenities = $(map_obj.container).find('input[name^="wpgmp_place_types"]:checked'); 5238 const divide_by = (dim === 'miles') ? 1.60934 : 1; 5239 const circle_radius_meters = parseInt(radius) * divide_by * 1000; 5240 5241 // Clear existing amenities 5242 if (map_obj.current_amenities?.length > 0) {
5243 map_obj.current_amenities.forEach((amenity) => { 5244 if (amenity.marker?.setMap) { 5245 amenity.marker.setMap(null); 5246 } 5247 }); 5248 } 5249 5250 map_obj.current_amenities = []; 5251 map_obj.amenity_infowindow = map_obj.infowindow_marker; 5252 5253 const place_types = amenities.map(function () { 5254 return $(this).val(); 5255 }).get(); 5256 5257 place_types.forEach(function (placeType) { 5258 const request = { 5259 location: new google.maps.LatLng(lat, lon), 5260 radius: circle_radius_meters, 5261 types: [placeType], 5262 rankBy: "DISTANCE" 5263 }; 5264 5265 map_obj.fetchNearbyAmenities(request, function (places) { 5266 places.forEach(function (place) { 5267 const marker = map_obj.createMarker(place); 5268 map_obj.current_amenities.push({ marker, place }); 5269 }); 5270 }); 5271 }); 5272 5273 // Center map and draw circle 5274 const centerLatLng = new google.maps.LatLng(lat, lon); 5275 map_obj.map.setCenter(centerLatLng); 5276 5277 if (map_obj.map_data.map_tabs.nearby_tab?.show_nearby_circle) { 5278 if (map_obj.set_nearbycenter_circle) { 5279 map_obj.set_nearbycenter_circle.setMap(null); 5280 } 5281 5282 map_obj.set_nearbycenter_circle = new google.maps.Circle({ 5283 map: map_obj.map, 5284 fillColor: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_fillcolor, 5285 fillOpacity: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_fillopacity, 5286 strokeColor: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokecolor, 5287 strokeOpacity: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokeopacity, 5288 strokeWeight: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokeweight, 5289 center: centerLatLng, 5290 radius: circle_radius_meters 5291 }); 5292 5293 map_obj.map.setZoom(parseInt(map_obj.map_data.map_tabs.nearby_tab.nearby_circle_zoom)); 5294 } 5295 }); 5296 5297 5298 5299 // ------------------------------- 5300 // ð¦ Category / Checkbox 5301 // ------------------------------- 5302 $container.on("change", "input[data-marker-category]", function () { 5303 const $el = $(this), isChecked = $el.is(":checked"); 5304 const catId = $el.data("marker-category"); 5305 const $wrap = $el.closest('[data-container="wpgmp-category-tab-item"]'); 5306 5307 map_obj.last_category_chkbox_action = isChecked ? "checked" : "unchecked"; 5308 if (isChecked) { 5309 map_obj.last_selected_cat_id = catId; 5310 $wrap.find("input[data-marker-location]").prop("checked", true); 5311 } else { 5312 map_obj.last_remove_cat_id = catId; 5313 $wrap.find("input[data-marker-location]").prop("checked", false); 5314 } 5315 5316 const childCats = $el.data("child-cats"); 5317 if (childCats) { 5318 childCats.toString().split(",").forEach(cat => { 5319 const $child = $el.closest(".wpgmp_tab_item").find(`[data-marker-category="${cat}"]`); 5320 $child.prop("checked", isChecked); 5321 $child.closest(".wpgmp_tab_item").find("input[data-marker-location]").prop("checked", isChecked); 5322 }); 5323 } 5324 5325 map_obj.update_filters(); 5326 }); 5327 5328 $container.on("change", "input[data-marker-location]", () => map_obj.update_filters()); 5329 5330 // ------------------------------- 5331 // ð¨ï¸ Print Listings 5332 // ------------------------------- 5333 $container.on("click", '[data-action="wpgmp-print"]', function () { 5334 const id = $(map_obj.element).attr("id"); 5335 const $default = $(`[data-container="wpgmp-listing-${id}"]`); 5336 const $custom = $(`[data-container="wpgmp-custom-listing-${id}"]`); 5337 $default.length && $default.print(); 5338 $custom.length && $custom.print(); 5339 }); 5340 5341 // ------------------------------- 5342 // ð Select All Categories 5343 // ------------------------------- 5344 if (map_obj.map_data.map_tabs?.category_tab?.select_all === true) { 5345 $container.on("click", 'input[name="wpgmp_select_all"]', function () { 5346 const isChecked = $(this).is(":checked"); 5347 $container.find("input[data-marker-category], input[data-marker-location]").prop("checked", isChecked); 5348 map_obj.update_filters(); 5349 }); 5350 } 5351 5352 // -------------------------------
5353 // ð View Details 5354 // ------------------------------- 5355 $container.on("click", "[data-view-details]", function (e) { 5356 e.preventDefault(); 5357 const id = $(this).data("view-details"); 5358 const target = $(this).attr("target"); 5359 5360 map_obj.places.forEach(place => { 5361 if (place.id == id) { 5362 if (place.source === "post") { 5363 const url = place.location.extra_fields.post_link; 5364 target === "_blank" ? window.open(url, "_blank") : location.href = url; 5365 } else { 5366 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5367 map_obj.open_infowindow(place.id); 5368 } 5369 } 5370 }); 5371 }); 5372 5373 // ------------------------------- 5374 // ð Locate Me Button 5375 // ------------------------------- 5376 $container.on("click", `[data-wpgmp='mcurrent_location'][data-wpgmp-map-id="${map_id}"]`, function () { 5377 const $this = $(this); 5378 const $input = $this.parent().find(".wpgmp_auto_suggest"); 5379 5380 map_obj.get_current_location( 5381 function (loc) { 5382 const lat = map_obj.isMapProvider("google") ? loc.lat() : loc.lat; 5383 const lng = map_obj.isMapProvider("google") ? loc.lng() : loc.lng; 5384 5385 $input.data("latitude", lat); 5386 $input.data("longitude", lng); 5387 5388 map_obj.wpgmp_geocode(lat, lng).then((result) => { 5389 $input.val(result.address); 5390 }).catch(console.error); 5391 }, 5392 function () {} 5393 ); 5394 5395 }); 5396 5397 5398 // ------------------------------- 5399 // ð Route Toggle Handling 5400 // ------------------------------- 5401 $container.find(".wpgmp_specific_route_item").prop("checked", true); 5402 5403 $container.on("change", `[data-wpgmp='route_toggle'][data-wpgmp-map-id="${map_id}"]`, function () { 5404 const route = map_obj.route_directions[$(this).val()]; 5405 if (route) route.setMap($(this).is(":checked") ? map_obj.map : null); 5406 }); 5407 5408 // ------------------------------- 5409 // ð Drawing Events 5410 // -- 5411 $('.wpgmp-shape-delete').click(function (e) { 5412 e.preventDefault(); 5413 5414 map_obj.deleteSelectedShape(); 5415 $('.temp_row').addClass('hiderow'); 5416 }); 5417 5418 $('select[name="shape_stroke_opacity"]').change(function () { 5419 map_obj.set_shapes_options(map_obj.selectedShape); 5420 }); 5421 $('select[name="shape_stroke_weight"]').change(function () { 5422 map_obj.set_shapes_options(map_obj.selectedShape); 5423 }); 5424 5425 $('select[name="shape_fill_opacity"]').change(function () { 5426 map_obj.set_shapes_options(map_obj.selectedShape); 5427 }); 5428 5429 5430 if (typeof map_obj.map_data.shapes != 'undefined') { 5431 if (map_obj.map_data.shapes.drawing_editable === true) { 5432 5433 $('.shape_fill_color').wpColorPicker({ 5434 change: function(event, ui) { 5435 var polyOptions2 = { 5436 fillColor: $(this).val(), 5437 }; 5438 map_obj.selectedShape.setOptions(polyOptions2); 5439 } 5440 }); 5441 5442 $('.shape_stroke_color').wpColorPicker({ 5443 change: function(event, ui) { 5444 var polyOptions2 = { 5445 strokeColor: $(this).val(), 5446 }; 5447 map_obj.selectedShape.setOptions(polyOptions2); 5448 } 5449 }); 5450 } 5451 } 5452 5453 $('input[name="shape_click_url"]').change(function () { 5454 map_obj.set_shapes_options(map_obj.selectedShape); 5455 }); 5456 $('textarea[name="shape_click_message"]').blur(function () { 5457 map_obj.set_shapes_options(map_obj.selectedShape); 5458 }); 5459 5460 $("textarea[name='shape_path']").blur(function () { 5461 var cordinates = $(this).val().split(' '); 5462 if (cordinates.length == 1) { 5463 cordinates = $(this).val().split("\n"); 5464 } 5465 var path = []; 5466 $.each(cordinates, function (ind, cordinate) { 5467 var latlng = cordinate.split(','); 5468 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 5469 }); 5470 map_obj.selectedShape.setPath(path); 5471 }); 5472 5473 $("input[name='shape_radius']").blur(function () { 5474 var radius = parseFloat($(this).val()); 5475 map_obj.selectedShape.setRadius(radius); 5476 }); 5477 5478 $("input[name='shape_center']").blur(function () { 5479 var latlng = $(this).val().split(','); 5480 map_obj.selectedShape.setCenter(new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]))); 5481 }); 5482 5483 $("input[name='shape_northeast']").blur(function () { 5484 var ea = $(this).val().split(','); 5485 var sw = $("input[name='shape_southwest']").val().split(','); 5486 5487 map_obj.selectedShape.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(sw[0]), parseFloat(sw[1])), new google.maps.LatLng(parseFloat(ea[0]), parseFloat(ea[1])))); 5488 }); 5489 5490 $("input[name='shape_southwest']").blur(function () { 5491 var sw = $(this).val().split(','); 5492 var ea = $("input[name='shape_northeast']").val().split(','); 5493 5494 map_obj.selectedShape.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(sw[0]), parseFloat(sw[1])), new google.maps.LatLng(parseFloat(ea[0]), parseFloat(ea[1])))); 5495 }); 5496 5497 $("input[name='shape_center']").blur(function () { 5498 var latlng = $(this).val().split(','); 5499 map_obj.selectedShape.setCenter(new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]))); 5500 }); 5501 5502 5503 } 5504 5505 create_perpage_option() { 5506 var map_obj = this; 5507 var options = ""; 5508 var content = ""; 5509 5510 content += 5511 '<select name="map_perpage_location_sorting" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" data-filter="map-perpage-location-sorting" class="choose_salutation">'; 5512 content += 5513 '<option value="' + 5514 map_obj.map_data.listing.pagination.listing_per_page + 5515 '">' + 5516 wpgmp_local.show_locations + 5517 "</option>"; 5518 content += '<option value="25">25</option>'; 5519 content += '<option value="50">50</option>'; 5520 content += '<option value="100">100</option>'; 5521 content += '<option value="200">200</option>'; 5522 content += '<option value="500">500</option>'; 5523 content += 5524 '<option value="' + 5525 map_obj.show_places.length + 5526 '">' + 5527 wpgmp_local.all_location + 5528 "</option>"; 5529 content += "</select>"; 5530 5531 return content; 5532 } 5533 create_sorting() { 5534 var options = ""; 5535 5536 var content = ""; 5537 5538 if (this.map_data.listing.display_sorting_filter === true) { 5539 content += 5540 '<select name="map_sorting" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" data-filter="map-sorting"><option value="">' + 5541 wpgmp_local.sort_by + 5542 "</option>"; 5543 $.each(this.map_data.listing.sorting_options, function (id, name) { 5544 content += "<option value='" + id + "'>" + name + "</option>"; 5545 }); 5546 content += "</select>"; 5547 } 5548 5549 return content; 5550 } 5551 create_radius() { 5552 var options = ""; 5553 5554 var content = ""; 5555 if (this.map_data.listing.display_radius_filter === true) { 5556 var radius_options = this.map_data.listing.radius_options; 5557 5558 if (radius_options != undefined) { 5559 content += 5560 '<select data-name="radius" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" name="map_radiu
5560s"><option value="">' + 5561 wpgmp_local.select_radius + 5562 "</option>"; 5563 var radius_dimension = this.map_data.listing.radius_dimension; 5564 $.each(radius_options.split(","), function (id, name) { 5565 if (radius_dimension == "miles") { 5566 content += 5567 "<option value='" + 5568 name + 5569 "'>" + 5570 name + 5571 " " + 5572 wpgmp_local.miles + 5573 "</option>"; 5574 } else { 5575 content += 5576 "<option value='" + 5577 name + 5578 "'>" + 5579 name + 5580 " " + 5581 wpgmp_local.km + 5582 "</option>"; 5583 } 5584 }); 5585 content += "</select>"; 5586 } 5587 } 5588 5589 return content; 5590 } 5591 custom_filters() { 5592 var map_obj = this; 5593 var options = ""; 5594 var places = this.map_data.places; 5595 var wpgmp_filters = this.map_data.filters; 5596 map_obj.template_data = []; 5597 this.filter_content = this.display_filters(); 5598 5599 this.filter_position = this.map_data.listing.filters_position; 5600 5601 if ( 5602 $(this.container).find(".wpgmp_filter_wrappers").length > 0 && 5603 map_obj.map_data.map_options.advance_template == false 5604 ) 5605 $(this.container) 5606 .find(".wpgmp_filter_wrappers") 5607 .html(this.filter_content); 5608 5609 if ( 5610 typeof wpgmp_filters == "undefined" || 5611 typeof wpgmp_filters.custom_filters == "undefined" || 5612 wpgmp_filters.custom_filters.length == 0 5613 ) { 5614 return; 5615 } 5616 5617 $.each( 5618 wpgmp_filters.custom_filters, 5619 function (template_shortcode, filter_options) { 5620 var all_filters = []; 5621 var content = ""; 5622 var filters = {}; 5623 $.each(filter_options, function (filter_type, filter_parameter) { 5624 $.each(filter_parameter, function (filter_name, filter_label) { 5625 $.each(places, function (index, place) { 5626 if (filter_name == "category") { 5627 if (typeof place.categories == "undefined") { 5628 place.categories = {}; 5629 } 5630 $.each(place.categories, function (cat_index, category) { 5631 if (typeof filters[category.type] == "undefined") { 5632 filters[category.type] = {}; 5633 } 5634 if (category.name) { 5635 filters[category.type][category.name] = category.id; 5636 } 5637 }); 5638 } else { 5639 if (typeof place[filter_name] != "undefined") { 5640 if (typeof filters[filter_name] == "undefined") { 5641 filters[filter_name] = {}; 5642 } 5643 if (place[filter_name]) { 5644 filters[filter_name][place[filter_name]] = 5645 place[filter_name]; 5646 } 5647 } 5648 5649 if ( 5650 typeof place.location.extra_fields[filter_name] != 5651 "undefined" 5652 ) { 5653 if (typeof filters[filter_name] == "undefined") { 5654 filters[filter_name] = {}; 5655 } 5656 if (place.location.extra_fields[filter_name]) { 5657 filters[filter_name][ 5658 place.location.extra_fields[filter_name] 5659 ] = place.location.extra_fields[filter_name]; 5660 } 5661 } 5662 5663 if (typeof place.location[filter_name] != "undefined") { 5664 if (typeof filters[filter_name] == "undefined") { 5665 filters[filter_name] = {}; 5666 } 5667 if (place.location[filter_name]) { 5668 filters[filter_name][place.location[filter_name]] = 5669 place.location[filter_name]; 5670 } 5671 } 5672 5673 if ( 5674 typeof place.custom_filters != "undefined" && 5675 typeof place.custom_filters[filter_name] != "undefined" 5676 ) { 5677 if (typeof filters[filter_name] == "undefined") { 5678 filters[filter_name] = {}; 5679 } 5680 if (place.custom_filters[filter_name]) { 5681 var options = place.custom_filters[filter_name]; 5682 if ($.isArray(options)) { 5683 $.each(options, function (index, value) { 5684 filters[filter_name][value] = value; 5685 }); 5686 } else { 5687 filters[filter_name][options] = options; 5688 } 5689 } 5690 } 5691 5692 // It could be radius filter. 5693 if (filter_name == "radius") { 5694 if (typeof filters[filter_name] == "undefined") { 5695 filters[filter_name] = {}; 5696 } 5697 5698 var radius_options = wpgmp_filters.radius_options; 5699 var radius_dimension = wpgmp_filters.radius_dimension; 5700 $.each(radius_options.split(","), function (id, name) { 5701 if (radius_dimension == "miles") { 5702 filters[filter_name][name + " " + wpgmp_local.miles] = 5703 name; 5704 } else { 5705 filters[filter_name][name + " " + wpgmp_local.km] = 5706 name; 5707 } 5708 }); 5709 } 5710 } 5711 }); 5712 }); 5713 5714 if (filter_type == "dropdown") { 5715 if (typeof filters != "undefined") { 5716 $.each(filters, function (index, options) { 5717 if(Object.keys(options).length < 1){ 5718 return true; 5719 } 5720 options = map_obj.sort_object_by_value(options); 5721 options = map_obj.sort_object_by_unique_values(options); 5722 options = map_obj.sort_numeric_value_filters(options); 5723 content += 5724 '<select data-filter="dropdown" name="place_' + 5725 index + 5726 '" data-name = "' + 5727 index + 5728 '">'; 5729 content += 5730 '<option value="">' + 5731 (filter_parameter[index] 5732 ? filter_parameter[index] 5733 : "Select " + index) + 5734 "</option>"; 5735 $.each(options, function (name, value) { 5736 var optionlabel = value; 5737 value = value.replace("'", "'"); 5738 value = value.replace('"', """); 5739 if (value != "" && value != null) 5740 content += 5741 "<option value='" + 5742 value.toLowerCase() + 5743 "'>" +
5744 optionlabel + 5745 "</option>"; 5746 }); 5747 content += "</select>"; 5748 }); 5749 } 5750 } 5751 5752 if (filter_type == "checklist") { 5753 if (typeof filters != "undefined") { 5754 $.each(filters, function (index, options) { 5755 options = map_obj.sort_object_by_value(options); 5756 options = map_obj.sort_object_by_unique_values(options); 5757 options = map_obj.sort_numeric_value_filters(options); 5758 5759 content += '<div class="wpgmp_filters_checklist">'; 5760 content += 5761 '<label data-filter = "place_' + 5762 index + 5763 '" >' + 5764 (filter_parameter[index] 5765 ? filter_parameter[index] 5766 : "Select " + index) + 5767 "</label>"; 5768 content += '<div class="wpgmp_checklist_wrap">'; 5769 $.each(options, function (name, value) { 5770 if (value != "" && value != null) 5771 content += 5772 "<div class='wpgmp_checkbox_input'><input data-filter='checklist' type='checkbox' data-name = '" + 5773 index + 5774 "' value='" + 5775 value.toLowerCase() + 5776 "'><span class='wpgmp_checklist_title'>" + 5777 value + 5778 "</span></div>"; 5779 }); 5780 content += "</div></div>"; 5781 }); 5782 } 5783 } 5784 5785 if (filter_type == "list") { 5786 if (typeof filters != "undefined") { 5787 $.each(filters, function (index, options) { 5788 content += '<div class="wpgmp_filters_list">'; 5789 content += 5790 '<label data-filter = "place_' + 5791 index + 5792 '" >' + 5793 (wpgmp_filters.custom_filters[index] 5794 ? wpgmp_filters.custom_filters[index] 5795 : "Select " + index) + 5796 "</label><ul>"; 5797 $.each(options, function (name, value) { 5798 if (value != "" && value != null) 5799 content += 5800 "<li data-filter='list' data-name = '" + 5801 index + 5802 "' data-value='" + 5803 value + 5804 "'>" + 5805 name + 5806 "</li>"; 5807 }); 5808 content += "</ul></div>"; 5809 }); 5810 } 5811 } 5812 if (map_obj.map_data.map_options.advance_template) { 5813 if (!map_obj.template_data) { 5814 map_obj.template_data = {}; // Ensure template_data exists 5815 } 5816 if (!Array.isArray(map_obj.template_data.filter)) { 5817 map_obj.template_data.filter = []; // Ensure filter is an array 5818 } 5819 map_obj.template_data.filter.push(filters); 5820 } 5821 }); 5822 5823 //$(map_obj.container).find("."+template_shortcode).html(content); 5824 if (map_obj.map_data.map_options.advance_template == false) { 5825 $(map_obj.container) 5826 .find(wpgmp_filters.filters_container) 5827 .append(content); 5828 } 5829 } 5830 ); 5831 5832 // now create select boxes 5833 } 5834 sort_numeric_value_filters(filter_options) { 5835 if (!filter_options.some(isNaN)) { 5836 filter_options.sort(function (a, b) { 5837 return a - b; 5838 }); 5839 } 5840 return filter_options; 5841 } 5842 5843 // ----------------------------- 5844 // ð¦ Sorting Utilities 5845 // ----------------------------- 5846 sorting(order_by, in_order, data_type) { 5847 switch (order_by) { 5848 case "category": 5849 if (this.places !== undefined) { 5850 this.places.sort(this.sortByCategory); 5851 } 5852 if (this.show_places !== undefined) { 5853 this.show_places.sort(this.sortByCategory); 5854 } 5855 if (in_order == "desc") { 5856 this.places.reverse(); 5857 this.show_places.reverse(); 5858 } 5859 break; 5860 5861 case "title": 5862 if (this.map_data.places !== undefined) { 5863 this.map_data.places.sort(this.sortByTitle); 5864 } 5865 if (this.show_places !== undefined) { 5866 this.show_places.sort(this.sortByTitle); 5867 } 5868 if (in_order == "desc") { 5869 this.map_data.places.reverse(); 5870 this.places.reverse(); 5871 this.show_places.reverse(); 5872 } 5873 break; 5874 5875 case "address": 5876 if (this.map_data.places !== undefined) { 5877 this.map_data.places.sort(this.sortByAddress); 5878 } 5879 if (this.show_places !== undefined) { 5880 this.show_places.sort(this.sortByAddress); 5881 } 5882 if (in_order == "desc") { 5883 this.places.reverse(); 5884 this.show_places.reverse(); 5885 } 5886 break; 5887 default: 5888 var first_place = this.map_data.places[0]; 5889 if (typeof first_place[order_by] != "undefined") { 5890 this.map_data.places.sort(this.sortByPlace(order_by, data_type)); 5891 this.show_places.sort(this.sortByPlace(order_by, data_type)); 5892 } else if (typeof first_place.location[order_by] != "undefined") { 5893 this.map_data.places.sort(this.sortByLocation(order_by, data_type)); 5894 this.show_places.sort(this.sortByLocation(order_by, data_type)); 5895 } else if ( 5896 typeof first_place.location.extra_fields[order_by] != "undefined" 5897 ) { 5898 this.map_data.places.sort( 5899 this.sortByExtraFields(order_by, data_type) 5900 ); 5901 this.show_places.sort(this.sortByExtraFields(order_by, data_type)); 5902 } 5903 5904 if (in_order == "desc") { 5905 this.places.reverse(); 5906 this.show_places.reverse(); 5907 } 5908 } 5909 } 5910 sorting_inside_tabs(data, in_order) { 5911 if (in_order == "asc") { 5912 data.sort(); 5913 } 5914 if (in_order == "desc") { 5915 data.sort(); 5916 data.reverse(); 5917 } 5918 return data; 5919 } 5920 sortByTitle(a, b) { 5921 var a_val = a.title.toLowerCase(); 5922 var b_val = b.title.toLowerCase(); 5923 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 5924 } 5925 5926 sortByValue(a, b) { 5927 var a_val = a.toLowerCase(); 5928 var b_val = b.toLowerCase(); 5929 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 5930 } 5931 sortByCategory(a, b) { 5932 if (b.categories[0] && a.categories[0]) { 5933 if (a.categories[0].name && b.categories[0].name) { 5934 var a_val = a.categories[0].name.toLowerCase(); 5935 var b_val = b.categories[0].name.toLowerCase(); 5936 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 5937 } 5938 } 5939 } 5940 sortByAddress(a, b) { 5941 var a_val = a.address.toLowerCase(); 5942 var b_val = b.address.toLowerCase(); 5943 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 5944 } 5945 sortByPlace(order_by, data_type) { 5946 return function (a, b) { 5947 if (b[order_by] && a[order_by]) { 5948 if (a[order_by] && b[order_by]) { 5949 var a_val = a[order_by].toLowerCase(); 5950 var b_val = b[order_by].toLowerCase(); 5951 if (data_type == "num") { 5952 a_val = parseInt(a_val); 5953 b_val = parseInt(b_val); 5954 } 5955 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 5956 } 5957 } 5958 }; 5959 } 5960 sortByExtraFields(order_by, data_type) { 5961 return function (a, b) { 5962 if ( 5963 typeof b.location.extra_fields[order_by] != "undefined" && 5964 typeof a.location.extra_fields[order_by] != "undefined" 5965 ) { 5966 if (b.location.extra_fields[order_by] == null) { 5967 b.location.extra_fields[order_by] = ""; 5968 } 5969 5970 if (a.location.extra_fields[order_by] == null) { 5971 a.location.extra_fields[order_by] = ""; 5972 } 5973 5974 if (data_type == "num") { 5975 var a_val = parseInt(a.location.extra_fields[order_by]); 5976 var b_val = parseInt(b.location.extra_fields[order_by]); 5977 } else { 5978 var a_val = a.location.extra_fields[order_by].toLowerCase(); 5979 var b_val = b.location.extra_fields[order_by].toLowerCase(); 5980 } 5981 5982 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 5983 } 5984 }; 5985 } 5986 sortByLocation(order_by, data_type) { 5987 return function (a, b) { 5988 if (b.location[order_by] && a.location[order_by]) { 5989 if (a.location[order_by] && b.location[order_by]) { 5990 var a_val = a.location[order_by].toLowerCase(); 5991 var b_val = b.location[order_by].toLowerCase(); 5992 if (data_type == "num") { 5993 a_val = parseInt(a_val); 5994 b_val = parseInt(b_val); 5995 } 5996 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 5997 } 5998 } 5999 }; 6000 } 6001 sort_object_by_keyvalue(options, by, type, in_order) { 6002 var sortable = []; 6003 for (var key in options) { 6004 sortable.push(options[key]); 6005 } 6006 6007 sortable.sort(this.sortByPlace(by, type)); 6008 6009 if (in_order == "desc") { 6010 sortable.reverse(); 6011 } 6012 6013 return sortable; 6014 } 6015 sort_object_by_unique_values(options) { 6016 var new_options = []; 6017 var uniqueNames = []; 6018 for (var key in options) { 6019 if (options[key].indexOf(",") > -1) {
6020 options[key].split(/\s*,\s*/).forEach(function (single_option_value) { 6021 new_options.push(single_option_value.trim()); 6022 }); 6023 } else { 6024 new_options.push(options[key].trim()); 6025 } 6026 } 6027 6028 // var new_options = new_options.map(function(item) { 6029 // return item.toLowerCase(); 6030 // }); 6031 6032 uniqueNames = new_options.filter(function (item, pos) { 6033 return new_options.indexOf(item) == pos; 6034 }); 6035 6036 return uniqueNames.sort(); 6037 } 6038 sort_object_by_value(options) { 6039 var sortable = []; 6040 for (var key in options) { 6041 sortable.push(key); 6042 } 6043 6044 sortable.sort(this.sortByValue); 6045 var new_options = {}; 6046 for (var i = 0; i < sortable.length; i++) { 6047 new_options[sortable[i]] = options[sortable[i]]; 6048 } 6049 6050 return new_options; 6051 } 6052 6053 // ----------------------------- 6054 // ð Directions & Nearby 6055 // ----------------------------- 6056 get_user_position() { } 6057 6058 wpgmp_get_nearby_locations() {} 6059 wpgmp_within_radius() {} 6060 wpgmp_set_search_area() {} 6061 map_widgets() {} 6062 widget_route_tab() {} 6063 widget_nearby() {} 6064 widget_directions() {} 6065 widget_category() {} 6066 add_tab() {} 6067 show_tabs() {} 6068 create_routes() {} 6069 wpgmp_draw_route() {} 6070 wpgmp_find_direction() {} 6071 wpgmp_direction_steps() {} 6072 register_direction_tab() {} 6073 6074 wpgmp_sort_distance(obj) { 6075 var arr = []; 6076 for (var prop in obj) { 6077 if (obj.hasOwnProperty(prop)) { 6078 arr.push({ 6079 key: prop, 6080 value: obj[prop], 6081 }); 6082 } 6083 } 6084 arr.sort(function (a, b) { 6085 return a.value - b.value; 6086 }); 6087 return arr; 6088 } 6089 // ------------- Location Auto Suggest Control---------------- 6090 // ð§ Search & Autocomplete 6091 // ----------------------------- 6092 6093 6094 async _handleKeyUp(e, inputField, resultsElement) { 6095 const map_obj = this; 6096 const isGoogle = map_obj.isMapProvider("google"); 6097 const inputText = inputField.value.trim(); 6098 const wrapper = $(inputField).closest(".wpgmp-autocomplete-wrapper"); 6099 const loader = wrapper.find(".wpgmp-autosuggest-loader"); 6100 loader.show(); 6101 let activeIndex = -1; 6102 6103 // Clear results if empty input 6104 if (!inputText) { 6105 resultsElement.innerHTML = ""; 6106 resultsElement.style.display = "none"; 6107 $(".wpgmp-autosuggest-results").hide(); 6108 loader.hide(); 6109 return; 6110 } 6111 6112 // Utility to render list and bind interactions 6113 const renderSuggestions = (suggestions, getLabel, onSelect) => { 6114 resultsElement.innerHTML = ""; 6115 resultsElement.style.display = "block"; 6116 $(".wpgmp-autosuggest-results").show(); 6117 loader.hide(); 6118 suggestions.forEach((item, index) => { 6119 const li = document.createElement("li"); 6120 li.textContent = getLabel(item); 6121 li.tabIndex = 0; 6122 li.dataset.index = index; 6123 6124 const handleSelection = () => { 6125 onSelect(item); 6126 resultsElement.innerHTML = ""; 6127 resultsElement.style.display = "none"; 6128 $(".wpgmp-autosuggest-results").hide(); 6129 activeIndex = -1; 6130 }; 6131 6132 li.addEventListener("click", handleSelection); 6133 li.addEventListener("keypress", (e) => { 6134 if (e.key === "Enter") handleSelection(); 6135 }); 6136 6137 resultsElement.appendChild(li); 6138 }); 6139 6140 // â¨ï¸ Keyboard support 6141 inputField.addEventListener("keydown", (event) => { 6142 const items = resultsElement.querySelectorAll("li"); 6143 if (!items.length) return; 6144 6145 if (event.key === "ArrowDown") { 6146 event.preventDefault(); 6147 activeIndex = (activeIndex + 1) % items.length; 6148 } else if (event.key === "ArrowUp") { 6149 event.preventDefault(); 6150 activeIndex = (activeIndex - 1 + items.length) % items.length; 6151 } else if (event.key === "Enter" && activeIndex >= 0) { 6152 event.preventDefault(); 6153 const selectedItem = items[activeIndex]; 6154 selectedItem.dispatchEvent(new Event("click")); // triggers the right one 6155 return; 6156 } else if (event.key === "Escape") { 6157 resultsElement.innerHTML = ""; 6158 resultsElement.style.display = "none"; 6159 $(".wpgmp-autosuggest-results").hide(); 6160 return; 6161 } 6162
6163 items.forEach((item, i) => { 6164 const isActive = i === activeIndex; 6165 item.classList.toggle("active", isActive); 6166 if (isActive) { 6167 inputField.value = item.textContent; // ð¢ update input as you move 6168 } 6169 }); 6170 }); 6171 6172 6173 // ð±ï¸ Close on outside click 6174 const closeOnOutsideClick = (e) => { 6175 if (!resultsElement.contains(e.target) && e.target !== inputField) { 6176 resultsElement.innerHTML = ""; 6177 resultsElement.style.display = "none"; 6178 $(".wpgmp-autosuggest-results").hide(); 6179 6180 document.removeEventListener("click", closeOnOutsideClick); 6181 } 6182 }; 6183 6184 setTimeout(() => { 6185 document.addEventListener("click", closeOnOutsideClick); 6186 }, 0); 6187 }; 6188 6189 // ð Leaflet (Nominatim) 6190 if (!isGoogle) { 6191 let baseUrl = "https://nominatim.openstreetmap.org/search"; 6192 const request = { 6193 q: inputText, 6194 limit: 10, 6195 format: "json", 6196 addressdetails: 1, 6197 }; 6198 6199 if ( 6200 wpgmp_local.wpgmp_country_specific && 6201 wpgmp_local.wpgmp_country_specific == true && 6202 wpgmp_local.wpgmp_countries && 6203 wpgmp_local.wpgmp_countries.length > 0 6204 ) { 6205 const country = wpgmp_local.wpgmp_countries.join(","); 6206 baseUrl += `?countrycodes=${country}`; 6207 } 6208 6209 try { 6210 const suggestions = await $.getJSON(baseUrl, request); 6211 6212 renderSuggestions( 6213 suggestions, 6214 (item) => item.display_name, 6215 (selected) => { 6216 map_obj.wpgmp_handle_place_selection(selected, inputField); 6217 inputField.value = selected.display_name; 6218 } 6219 ); 6220 } catch (error) { 6221 console.error("Nominatim autocomplete failed:", error); 6222 } 6223 6224 return; 6225 } 6226 6227 // ð Google Places 6228 try { 6229 const { 6230 Place, 6231 AutocompleteSessionToken, 6232 AutocompleteSuggestion, 6233 } = await google.maps.importLibrary("places"); 6234 6235 const token = new AutocompleteSessionToken(); 6236 const request = { input: inputText, sessionToken: token }; 6237 6238 if ( 6239 wpgmp_local.wpgmp_country_specific && 6240 wpgmp_local.wpgmp_country_specific == true && 6241 wpgmp_local.wpgmp_countries && 6242 wpgmp_local.wpgmp_countries.length > 0 6243 ) { 6244 request.includedRegionCodes = wpgmp_local.wpgmp_countries; 6245 } 6246 6247 const { suggestions } = 6248 await AutocompleteSuggestion.fetchAutocompleteSuggestions(request); 6249 6250 renderSuggestions( 6251 suggestions, 6252 (item) => item.placePrediction.text.toString(), 6253 async (selected) => { 6254 const place = selected.placePrediction.toPlace(); 6255 await place.fetchFields({ 6256 fields: [ 6257 "displayName", 6258 "formattedAddress", 6259 "location", 6260 "viewport", 6261 "addressComponents", 6262 ], 6263 }); 6264 6265 map_obj.wpgmp_handle_place_selection(place, inputField); 6266 inputField.value = place.formattedAddress; 6267 } 6268 ); 6269 } catch (error) { 6270 console.error("Google Places autocomplete failed:", error); 6271 } 6272 } 6273 6274 google_auto_suggest(obj) { 6275 var map_obj = this; 6276 6277 obj.each(function () { 6278 var current_input = this; 6279 6280 if (!$(current_input).parent().hasClass("wpgmp-autocomplete-wrapper")) { 6281 $(current_input) 6282 .wrap('<div class="wpgmp-autocomplete-wrapper"></div>') 6283 .after(' <div class="wpgmp-autosuggest-loader" style="display:none;"></div><ul class="wpgmp-autosuggest-results"></ul>'); 6284 } 6285 6286 const resultsElement = $(current_input).siblings(".wpgmp-autosuggest-results")[0]; 6287 6288 map_obj.wpgmp_initialise_autosuggest(current_input, resultsElement); 6289 }); 6290 } 6291 6292 wpgmp_initialise_autosuggest(inputField, resultsElement) { 6293 6294 $(inputField).on("input", this._debounce((e) => this._handleKeyUp(e,inputField,resultsElement), 500)); 6295 6296 } 6297 6298 wpgmp_extract_place_data(place) { 6299 var map_obj = this; 6300 const data = { 6301 address: '', 6302 lat: '', 6303 lng: '', 6304 city: '', 6305 state: '', 6306 country: '', 6307 postal: '' 6308 }; 6309 6310 if (map_obj.isMapProvider('leaflet')) { 6311 data.address = place.display_name || ''; 6312 data.lat = parseFloat(place.lat); 6313 data.lng = parseFloat(place.lon); 6314 6315 const address = place.address || {}; 6316 data.city = address.city || address.county || ''; 6317 data.state = address.state || ''; 6318 data.country = address.country || ''; 6319 data.postal = address.postcode || ''; 6320 6321 } else { 6322 data.address = place.formattedAddress || ''; 6323 if (place.location) { 6324 data.lat = place.location.lat(); 6325 data.lng = place.location.lng(); 6326 } 6327 6328 // Assume `this` refers to your instance with wpgmp_finddata method 6329 const finder = this.wpgmp_finddata || instance?.wpgmp_finddata; 6330 6331 if (typeof finder === 'function') { 6332 data.country = finder.call(this, place, 'country') || ''; 6333 data.state = finder.call(this, place, 'administrative_area_level_1') || ''; 6334 data.city = ( 6335 finder.call(this, place, 'locality') || 6336 finder.call(this, place, 'administrative_area_level_2') || 6337 finder.call(this, place, 'administrative_area_level_3') || '' 6338 );
6339 data.postal = finder.call(this, place, 'postal_code') || ''; 6340 } 6341 } 6342 6343 return data; 6344} 6345 6346wpgmp_handle_place_selection(place, inputField) { 6347 const map_obj = this; 6348 const isGoogle = map_obj.isMapProvider("google"); 6349 const fieldName = $(inputField).attr("name"); 6350 const callback = $(inputField).data("wpgmp-autosuggest-callback"); 6351 6352 if (typeof callback === "function") { 6353 callback(place); 6354 return; 6355 } 6356 6357 // Extract data from place 6358 let lat, lng, city, state, country, postal, fullAddress; 6359 6360 if (isGoogle) { 6361 lat = place.location.lat(); 6362 lng = place.location.lng(); 6363 city = map_obj.wpgmp_finddata(place, "administrative_area_level_3") || 6364 map_obj.wpgmp_finddata(place, "locality"); 6365 state = map_obj.wpgmp_finddata(place, "administrative_area_level_1"); 6366 country = map_obj.wpgmp_finddata(place, "country"); 6367 postal = map_obj.wpgmp_finddata(place, "postal_code"); 6368 fullAddress = place.formattedAddress || $(inputField).val(); 6369 } else { 6370 lat = parseFloat(place.lat); 6371 lng = parseFloat(place.lon); 6372 const address = place.address || {}; 6373 city = address.city || address.county || ""; 6374 state = address.state || ""; 6375 country = address.country || ""; 6376 postal = address.postcode || ""; 6377 fullAddress = place.display_name || $(inputField).val(); 6378 } 6379 6380 // Apply marker and view 6381 map_obj.placeMarker(lat, lng); 6382 6383 // Update relevant fields 6384 if (fieldName === "location_address") { 6385 $(".google_latitude").val(lat); 6386 $(".google_longitude").val(lng); 6387 $(".google_city").val(city); 6388 $(".google_state").val(state); 6389 $(".google_country").val(country); 6390 $(".google_postal_code").val(postal); 6391 6392 if (isGoogle && place.viewport) { 6393 map_obj.map.fitBounds(place.viewport); 6394 } 6395 6396 } else if (fieldName === "wpgmp_metabox_location") { 6397 $("input[name='wpgmp_metabox_latitude']").val(lat); 6398 $("input[name='wpgmp_metabox_longitude']").val(lng); 6399 $("input[name='wpgmp_metabox_location_city']").val(city); 6400 $("input[name='wpgmp_metabox_location_state']").val(state); 6401 $("input[name='wpgmp_metabox_location_country']").val(country); 6402 $("input[name='wpgmp_metabox_location_hidden']").val(fullAddress); 6403 6404 if (isGoogle && place.viewport) { 6405 map_obj.map.fitBounds(place.viewport); 6406 } 6407 6408 } else if (fieldName === "map-search-control") { 6409 const zoom = parseInt(map_obj.settings.zoom_level_after_search || 10); 6410 map_obj.map.setZoom(zoom); 6411 map_obj.map.setCenter(isGoogle ? place.location : [lat, lng]); 6412 6413 } else { 6414 // Other pages (frontend search, etc.) 6415 map_obj.map.setCenter(isGoogle ? place.location : [lat, lng]); 6416 6417 $(inputField).data("longitude", lng); 6418 $(inputField).data("latitude", lat); 6419 6420 if ( 6421 fieldName === "wpgmp_search_input" || 6422 $(inputField).data("wpgmp-filter-by") === "search" 6423 ) { 6424 if (map_obj.map_data.listing) { 6425 map_obj.search_area = isGoogle ? place.location : [lat, lng]; 6426 } 6427 map_obj.update_filters(); 6428 } 6429 6430 if (typeof map_obj.display_circle_when_searched === "function") { 6431 map_obj.display_circle_when_searched(place, inputField); 6432 } 6433 } 6434} 6435 6436 // ------------- Ended Location Auto Suggest Control---------------- 6437 6438 6439 get_current_location(success_func, error_func) { 6440 const map_obj = this; 6441 6442 if (typeof map_obj.user_location === "undefined") { 6443 navigator.geolocation.getCurrentPosition( 6444 (position) => { 6445 const lat = position.coords.latitude; 6446 const lng = position.coords.longitude; 6447 6448 map_obj.user_location = map_obj.isMapProvider("google") 6449 ? new google.maps.LatLng(lat, lng) 6450 : L.latLng(lat, lng); 6451 6452 if (success_func) success_func(map_obj.user_location); 6453 }, 6454 (err) => { 6455 console.warn("Geolocation error:", err); 6456 6457 map_obj.user_location = map_obj.isMapProvider("google") 6458 ? map_obj.map.getCenter() 6459 : map_obj.map.getCenter(); // both APIs support getCenter() 6460 6461 if (error_func) error_func(map_obj.user_location); 6462 }, 6463 { 6464 enableHighAccuracy: true, 6465 timeout: 50000, 6466 maximumAge: 0, 6467 } 6468 ); 6469 } else { 6470 if (success_func) success_func(map_obj.user_location); 6471 } 6472 } 6473 6474 wpgmp_geocode_address(address) { 6475 const map_obj = this; 6476 const isGoogle = map_obj.isMapProvider("google"); 6477 6478 return new Promise((resolve) => { 6479 if (!address || address.trim().length < 2) { 6480 resolve(null); 6481 return; 6482 } 6483 6484 const countries = map_obj.settings.country_codes || []; 6485 const restrictCountries = map_obj.settings.country_specific === true; 6486 6487 if (isGoogle) { 6488 const request = { address }; 6489 if (restrictCountries && countries.length > 0) { 6490 request.componentRestrictions = { 6491 country: countries.join(","), 6492 }; 6493 } 6494 const geocoder = new google.maps.Geocoder(); 6495 geocoder.geocode(request, (results, status) => { 6496 if (status === google.maps.GeocoderStatus.OK && results[0]) { 6497 const result = results[0]; 6498 const location = result.geometry.location; 6499 const components = result.address_components; 6500 6501 const extract = (type) => 6502 components.find((c) => c.types.includes(type))?.long_name || ""; 6503
6504 resolve({ 6505 address: result.formatted_address, 6506 city: 6507 extract("locality") || extract("administrative_area_level_3"), 6508 state: extract("administrative_area_level_1"), 6509 country: extract("country"), 6510 postal: extract("postal_code"), 6511 lat: location.lat(), 6512 lng: location.lng(), 6513 }); 6514 } else { 6515 resolve(null); 6516 } 6517 }); 6518 } else { 6519 const nominatimUrl = "https://nominatim.openstreetmap.org/search"; 6520 const params = { 6521 q: address, 6522 format: "json", 6523 limit: 1, 6524 addressdetails: 1, 6525 }; 6526 6527 if (restrictCountries && countries.length > 0) { 6528 params.countrycodes = countries.join(","); 6529 } 6530 6531 $.getJSON(nominatimUrl, params) 6532 .done((results) => { 6533 if (results && results.length > 0) { 6534 const r = results[0]; 6535 const a = r.address || {}; 6536 6537 resolve({ 6538 address: r.display_name, 6539 city: a.city || a.county || a.town || a.village || "", 6540 state: a.state || "", 6541 country: a.country || "", 6542 postal: a.postcode || "", 6543 lat: parseFloat(r.lat), 6544 lng: parseFloat(r.lon), 6545 }); 6546 } else { 6547 resolve(null); 6548 } 6549 }) 6550 .fail(() => resolve(null)); 6551 } 6552 }); 6553 } 6554 6555 6556 wpgmp_geocode(lat, lng) { 6557 var map_obj = this; 6558 6559 return new Promise((resolve, reject) => { 6560 if (map_obj.isMapProvider('google') && typeof google !== 'undefined') { 6561 const geocoder = new google.maps.Geocoder(); 6562 const latlng = new google.maps.LatLng(lat, lng); 6563 6564 geocoder.geocode({ location: latlng }, (results, status) => { 6565 if (status === google.maps.GeocoderStatus.OK && results[0]) { 6566 const components = results[0].address_components; 6567 6568 const getComp = (type) => { 6569 const match = components.find(c => c.types.includes(type)); 6570 return match ? match.long_name : ''; 6571 }; 6572 6573 resolve({ 6574 address: results[0].formatted_address, 6575 latitude: lat, 6576 longitude: lng, 6577 city: getComp("locality") || getComp("administrative_area_level_2") || getComp("administrative_area_level_3"), 6578 state: getComp("administrative_area_level_1"), 6579 country: getComp("country"), 6580 postal_code: getComp("postal_code") 6581 }); 6582 } else { 6583 reject('Google Geocoding failed: ' + status); 6584 } 6585 }); 6586 6587 } else if (map_obj.isMapProvider('leaflet')) { 6588 const url = `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${lat}&lon=${lng}`; 6589 6590 fetch(url) 6591 .then(res => res.json()) 6592 .then(data => { 6593 const addr = data.address || {}; 6594 resolve({ 6595 address: data.display_name || '', 6596 latitude: lat, 6597 longitude: lng, 6598 city: addr.city || addr.town || addr.village || addr.county || '', 6599 state: addr.state || '', 6600 country: addr.country || '', 6601 postal_code: addr.postcode || '' 6602 }); 6603 }) 6604 .catch(err => reject('Leaflet/OSM reverse geocoding failed: ' + err)); 6605 } else { 6606 reject('Unknown map provider: ' + provider); 6607 } 6608 }); 6609 } 6610 6611 show_search_control() { 6612 const map_obj = this; 6613 const isGoogle = map_obj.isMapProvider("google"); 6614 const input = $(map_obj.container).find('[data-input="map-search-control"]'); 6615 if (!input) return; 6616 6617 // Create a wrapper and move input inside it 6618 const wrapper = document.createElement('div'); 6619 wrapper.className = 'wpgmp-search-control-wrapper'; 6620 if (input[0]) { 6621 wrapper.appendChild(input[0]); 6622 } 6623 6624 6625 if (isGoogle) { 6626 const positionKey = map_obj.settings.search_control_position?.toUpperCase(); 6627 const position = google.maps.ControlPosition?.[positionKey]; 6628 6629 if (position !== undefined && map_obj.map.controls) { 6630 map_obj.map.controls[position].push(wrapper); 6631 } else { 6632 console.warn("Invalid Google search control position:", positionKey); 6633 } 6634 6635 // â Initialize autocomplete
6636 if (typeof map_obj.google_auto_suggest === "function") { 6637 map_obj.google_auto_suggest(input); 6638 } else { 6639 console.warn("google_auto_suggest() is not defined or not a function."); 6640 } 6641 6642 6643 } else { 6644 // Create a custom Leaflet control 6645 const LeafletSearchControl = L.Control.extend({ 6646 options: { 6647 position: (map_obj.settings.search_control_position || 'topright').toLowerCase(), 6648 }, 6649 onAdd: function () { 6650 return wrapper; 6651 }, 6652 }); 6653 6654 map_obj.map.addControl(new LeafletSearchControl()); 6655 } 6656 } 6657 6658 6659 // ----------------------------- 6660 // ðï¸ Categories 6661 // ----------------------------- 6662 search_category( 6663 array, 6664 cat_id, 6665 index, 6666 categories_tab_data, 6667 child_categories_tab_data 6668 ) { 6669 var map_obj = this; 6670 var flag = true; 6671 $.each(array, function (k, i) { 6672 if (k == cat_id) { 6673 index = i; 6674 flag = false; 6675 if (typeof child_categories_tab_data[cat_id] == "undefined") { 6676 child_categories_tab_data[cat_id] = {}; 6677 child_categories_tab_data[cat_id]["data"] = []; 6678 child_categories_tab_data[cat_id]["parent_cat"] = i; 6679 child_categories_tab_data[cat_id]["cat_id"] = cat_id; 6680 $.each(map_obj.categories, function (k, e) { 6681 if (e.group_map_id == cat_id) { 6682 child_categories_tab_data[cat_id]["cat_title"] = 6683 e.group_map_title; 6684 child_categories_tab_data[cat_id]["cat_marker_icon"] = 6685 e.group_marker; 6686 } 6687 }); 6688 } 6689 index = map_obj.search_category( 6690 map_obj.map_data.map_tabs.category_tab.child_cats, 6691 i, 6692 index, 6693 categories_tab_data, 6694 child_categories_tab_data 6695 ); 6696 } 6697 }); 6698 if (flag == true) { 6699 if (typeof categories_tab_data[cat_id] == "undefined") { 6700 categories_tab_data[cat_id] = {}; 6701 categories_tab_data[cat_id]["data"] = []; 6702 categories_tab_data[cat_id]["cat_id"] = cat_id; 6703 $.each(map_obj.categories, function (k, e) { 6704 if (e.group_map_id == cat_id) { 6705 categories_tab_data[cat_id]["cat_title"] = e.group_map_title; 6706 categories_tab_data[cat_id]["cat_marker_icon"] = e.group_marker; 6707 } 6708 }); 6709 } 6710 } 6711 return index; 6712 } 6713 display_sub_categories( 6714 child_categories_tab_data, 6715 cat_id, 6716 content, 6717 padding 6718 ) { 6719 var map_obj = this; 6720 6721 var category_orders = []; 6722 if (typeof child_categories_tab_data != "undefined") { 6723 $.each(child_categories_tab_data, function (index, categories) { 6724 var loc_count = categories.data.length; 6725 6726 if (typeof child_categories_tab_data != "undefined") { 6727 $.each(child_categories_tab_data, function (c, ccat) { 6728 if (ccat.parent_cat == categories.cat_id) { 6729 loc_count = loc_count + ccat.data.length; 6730 $.each(child_categories_tab_data, function (cc, cccat) { 6731 if (cccat.parent_cat == ccat.cat_id) { 6732 loc_count = loc_count + cccat.data.length; 6733 } 6734 }); 6735 } 6736 }); 6737 } 6738 categories.loc_count = loc_count; 6739 6740 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "count") { 6741 category_orders.push(categories.loc_count); 6742 } else if ( 6743 map_obj.map_data.map_tabs.category_tab.cat_order_by == "category" 6744 ) { 6745 if (categories.cat_order) { 6746 category_orders.push(categories.cat_order); 6747 } else if ( 6748 !categories.cat_order && 6749 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 6750 ) { 6751 categories.cat_order = 6752 map_obj.map_data.map_tabs.category_tab.all_cats[ 6753 categories.cat_id 6754 ].extensions_fields.cat_order; 6755 category_orders.push(categories.cat_order); 6756 } 6757 } else { 6758 if (categories.cat_title) { 6759 category_orders.push(categories.cat_title); 6760 } else if ( 6761 !categories.cat_title && 6762 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 6763 ) { 6764 categories.cat_title = 6765 map_obj.map_data.map_tabs.category_tab.all_cats[ 6766 categories.cat_id 6767 ].group_map_title; 6768 category_orders.push(categories.cat_title); 6769 } 6770 } 6771 }); 6772 } 6773 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "category") { 6774 category_orders.sort(function (a, b) { 6775 return a - b; 6776 }); 6777 } else if ( 6778 map_obj.map_data.map_tabs.category_tab.cat_order_by == "count" 6779 ) { 6780 category_orders.sort(function (a, b) { 6781 return b - a; 6782 }); 6783 } else { 6784 category_orders.sort(); 6785 } 6786 var ordered_categories = []; 6787 var check_cats = []; 6788 $.each(category_orders, function (index, cat_title) { 6789 $.each(child_categories_tab_data, function (index, categories) { 6790 var compare_with; 6791 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "count") { 6792 compare_with = categories.loc_count; 6793 } else if ( 6794 map_obj.map_data.map_tabs.category_tab.cat_order_by == "category" 6795 ) { 6796 compare_with = categories.cat_order;
6797 } else { 6798 compare_with = categories.cat_title; 6799 } 6800 6801 if ( 6802 cat_title == compare_with && 6803 $.inArray(categories.cat_id, check_cats) == -1 6804 ) { 6805 ordered_categories.push(categories); 6806 check_cats.push(categories.cat_id); 6807 } 6808 }); 6809 }); 6810 6811 $.each(ordered_categories, function (index, child_cat) { 6812 if (child_cat.parent_cat == cat_id) { 6813 var category_image = ""; 6814 6815 if ( 6816 !child_cat.cat_title && 6817 map_obj.map_data.map_tabs.category_tab.all_cats[child_cat.cat_id] 6818 ) { 6819 child_cat.cat_title = 6820 map_obj.map_data.map_tabs.category_tab.all_cats[ 6821 child_cat.cat_id 6822 ].group_map_title; 6823 } 6824 6825 if ( 6826 !child_cat.cat_marker_icon && 6827 map_obj.map_data.map_tabs.category_tab.all_cats[child_cat.cat_id] 6828 ) { 6829 child_cat.cat_marker_icon = 6830 map_obj.map_data.map_tabs.category_tab.all_cats[ 6831 child_cat.cat_id 6832 ].group_marker; 6833 } 6834 if (typeof child_cat.cat_marker_icon != "undefined") { 6835 category_image = 6836 '<span class="arrow"><img src="' + 6837 child_cat.cat_marker_icon + 6838 '"></span>'; 6839 } 6840 content += 6841 '<div class="wpgmp_tab_item" data-container="wpgmp-category-tab-item" style="padding-left:' + 6842 padding + 6843 'px;">'; 6844 6845 if ( 6846 map_obj.map_data.map_tabs.category_tab.parent_cats !== undefined && 6847 map_obj.map_data.map_tabs.category_tab.parent_cats[child_cat.cat_id] 6848 ) 6849 var child_cats_str = 6850 ' data-child-cats="' + 6851 map_obj.map_data.map_tabs.category_tab.parent_cats[ 6852 child_cat.cat_id 6853 ].join(",") + 6854 '"'; 6855 else var child_cats_str = ""; 6856 6857 content += 6858 '<input type="checkbox"' + 6859 child_cats_str + 6860 ' data-parent-cat="' + 6861 cat_id + 6862 '" data-marker-category="' + 6863 child_cat.cat_id + 6864 '" value="' + 6865 child_cat.cat_id + 6866 '">'; 6867 6868 var loc_count = child_cat.loc_count; 6869 6870 $.each( 6871 map_obj.map_data.map_tabs.category_tab.child_cats, 6872 function (k, v) { 6873 if (v == child_cat.cat_id && loc_count == 0) loc_count = ""; 6874 } 6875 ); 6876 6877 var location_count = ""; 6878 if ( 6879 map_obj.map_data.map_tabs.category_tab.show_count === true && 6880 loc_count != "" 6881 ) { 6882 location_count = " (" + loc_count + ")"; 6883 } else { 6884 location_count = ""; 6885 } 6886 6887 content += 6888 '<a href="javascript:void(0);" class="wpgmp_cat_title wpgmp-accordion accordion-close">' + 6889 child_cat.cat_title + 6890 location_count + 6891 category_image + 6892 "</a>"; 6893 6894 if (map_obj.map_data.map_tabs.category_tab.hide_location !== true) { 6895 content += 6896 '<div class="scroll-pane" style="height: 97px; width:100%;">'; 6897 content += '<ul class="wpgmp_location_container">'; 6898 6899 $.each(child_cat.data, function (name, location) { 6900 if (location.onclick_action == "marker") { 6901 content += 6902 '<li><input type="checkbox" data-marker-location="' + 6903 location.cat_location_id + 6904 '" value="' + 6905 location.cat_location_id + 6906 '" /><a data-marker="' + 6907 location.cat_location_id + 6908 '" data-zoom="' + 6909 location.cat_location_zoom + 6910 '" href="javascript:void(0);">' + 6911 location.cat_location_title + 6912 "</a></li>"; 6913 } else if (location.onclick_action == "post") { 6914 content += 6915 '<li><input type="checkbox" data-marker-location="' + 6916 location.cat_location_id + 6917 '" value="' + 6918 location.cat_location_id + 6919 '" /><a href="' + 6920 location.redirect_permalink + 6921 '" target="_blank">' + 6922 location.cat_location_title + 6923 "</a></li>"; 6924 } else if (location.onclick_action == "custom_link") { 6925 content += 6926 '<li>
6926<input type="checkbox" data-marker-location="' + 6927 location.cat_location_id + 6928 '" value="' + 6929 location.cat_location_id + 6930 '" /><a href="' + 6931 location.redirect_custom_link + 6932 '" target="_blank">' + 6933 location.cat_location_title + 6934 "</a></li>"; 6935 } 6936 }); 6937 6938 content += "</ul>"; 6939 content += "</div>"; 6940 } 6941 content += "</div>"; 6942 content += map_obj.display_sub_categories( 6943 child_categories_tab_data, 6944 child_cat.cat_id, 6945 "", 6946 padding + 20 6947 ); 6948 } else if (index + 1 == child_categories_tab_data.length) return; 6949 }); 6950 return content; 6951 } 6952 6953 // ----------------------------- 6954 // âï¸ Drawing Tools 6955 // ----------------------------- 6956 enable_drawing() { } 6957 create_polygon() { } 6958 create_polyline() { } 6959 create_circle() { } 6960 create_rectangle() { } 6961 deleteSelectedShape() { } 6962 clearSelection() { } 6963 setSelection() { } 6964 event_listener() { } 6965 6966 // ----------------------------- 6967 // ð¾ Shape Management 6968 // ----------------------------- 6969 get_shapes_options() { } 6970 set_shapes_options() { } 6971 wpgmp_save_shapes() { } 6972 wpgmp_shape_complete() { } 6973 wpgmp_save_polylines() { } 6974 wpgmp_save_polygons() { } 6975 wpgmp_save_circles() { } 6976 wpgmp_save_rectangles() { } 6977 6978 // ----------------------------- 6979 // ð§· Overlays & Layers 6980 // ----------------------------- 6981 wpgmp_image_type_overlays() { } 6982 set_kml_layer() { } 6983 set_marker_cluster() { } 6984 set_panning_control() { } 6985 set_visual_refresh() { } 6986 set_45_imagery() { } 6987 set_overlay() { } 6988 set_bicyle_layer() { } 6989 set_traffic_layer() { } 6990 set_panoramic_layer() { } 6991 set_transit_layer() { } 6992 set_weather_layer() { } 6993 set_streetview() { } 6994 6995 /** 6996 * Creates a labeled marker compatible with both Google Maps and Leaflet. 6997 */ 6998create_labeled_marker(label, title, position) { 6999 const map_obj = this; 7000 const isGoogle = map_obj.isMapProvider("google"); 7001 7002 if (isGoogle) { 7003 7004 var iconUrl; 7005 position = {'lat':position.lat(),'lng':position.lng()}; 7006 if( label.toLowerCase() == 'a') { 7007 iconUrl = wpgmp_local.place_icon_url+'marker-alpha-1.svg'; 7008 } 7009 7010 if( label.toLowerCase() == 'b') { 7011 iconUrl = wpgmp_local.place_icon_url+'marker-alpha-2.svg'; 7012 } 7013 7014 return map_obj.create_google_marker({ 7015 map: map_obj.map, 7016 position, 7017 iconUrl:iconUrl, 7018 label, 7019 title, 7020 }); 7021 7022 } else { 7023 7024 const marker = map_obj.create_leaflet_marker({ 7025 map: map_obj.map, 7026 position, 7027 label, 7028 isDivIcon: true 7029 }); 7030 7031 7032 return marker; 7033 } 7034} 7035 7036 7037 // ----------------------------- 7038 // ðª Amenities 7039 // ----------------------------- 7040 create_amenities_markers() { } 7041 7042 // ----------------------------- 7043 // ð§ Utilities 7044 // ----------------------------- 7045 load_google_fonts(fonts) { 7046 if (fonts && fonts.length > 0) { 7047 $.each(fonts, function (k, font) { 7048 if (font.indexOf(",") >= 0) { 7049 font = font.split(","); 7050 font = font[0]; 7051 } 7052 if (font.indexOf('"') >= 0) { 7053 font = font.replace('"', ""); 7054 font = font.replace('"', ""); 7055 } 7056 WebFont.load({ 7057 google: { 7058 families: [font], 7059 }, 7060 }); 7061 }); 7062 } 7063 } 7064 load_json(url) { 7065 this.map.data.loadGeoJson(url); 7066 } 7067 wpgmp_finddata() { } 7068 place_info(place_id) { 7069 var place_obj; 7070 7071 $.each(this.places, function (index, place) { 7072 if (parseInt(place.id) == parseInt(place_id)) { 7073 place_obj = place; 7074 } 7075 }); 7076 7077 return place_obj; 7078 } 7079 7080 _debounce(fn, delay) { 7081 let timer = null; 7082 return function (...args) { 7083 clearTimeout(timer); 7084 timer = setTimeout(() => fn.apply(this, args), delay); 7085 }; 7086 } 7087 7088 _encodePolyline(coords) { 7089 let output = ''; 7090 let prevLat = 0, prevLng = 0; 7091 7092 for (const [lat, lng] of coords) { 7093 const latE5 = Math.round(lat * 1e5); 7094 const lngE5 = Math.round(lng * 1e5); 7095 7096 const dLat = latE5 - prevLat; 7097 const dLng = lngE5 - prevLng; 7098 7099 output += encodeSignedNumber(dLat) + encodeSignedNumber(dLng); 7100 7101 prevLat = latE5; 7102 prevLng = lngE5; 7103 } 7104 7105 return output; 7106 7107 function encodeSignedNumber(num) { 7108 let sgnNum = num << 1; 7109 if (num < 0) { 7110 sgnNum = ~sgnNum; 7111 } 7112 return encodeNumber(sgnNum); 7113 } 7114 7115 function encodeNumber(num) { 7116 let encodeString = ''; 7117 while (num >= 0x20) { 7118 encodeString += String.fromCharCode((0x20 | (num & 0x1f)) + 63); 7119 num >>= 5; 7120 } 7121 encodeString += String.fromCharCode(num + 63); 7122 return encodeString; 7123 } 7124 } 7125 7126 _decodePolyline(encoded) { 7127 let index = 0, lat = 0, lng = 0, coordinates = []; 7128 7129 while (index < encoded.length) { 7130 let result = 1, shift = 0, b; 7131 7132 do { 7133 b = encoded.charCodeAt(index++) - 63 - 1; 7134 result += b << shift; 7135 shift += 5; 7136 } while (b >= 0x1f); 7137 7138 const deltaLat = (result & 1) ? ~(result >> 1) : (result >> 1); 7139 lat += deltaLat; 7140 7141 result = 1; 7142 shift = 0; 7143 7144 do { 7145 b = encoded.charCodeAt(index++) - 63 - 1; 7146 result += b << shift; 7147 shift += 5; 7148 } while (b >= 0x1f); 7149 7150 const deltaLng = (result & 1) ? ~(result >> 1) : (result >> 1); 7151 lng += deltaLng; 7152 7153 coordinates.push([lat / 1e5, lng / 1e5]); 7154 } 7155 7156 return coordinates; 7157 } 7158 7159 formatRouteDuration(durationString) { 7160 const totalSeconds = parseInt(durationString, 10); 7161 7162 const hours = Math.floor(totalSeconds / 3600); 7163 const minutes = Math.floor((totalSeconds % 3600) / 60); 7164 7165 let formatted = ''; 7166
7167 if (hours > 0) { 7168 formatted += hours + (hours === 1 ? ' hr ' : ' hrs '); 7169 } 7170 7171 if (minutes > 0 || hours === 0) { // Always show minutes if no hours 7172 formatted += minutes + ' mins'; 7173 } 7174 7175 return formatted.trim(); 7176 } 7177 7178 isMapProvider(providerName) { 7179 const map_obj = this; 7180 const currentProvider = (map_obj?.map_data?.provider || wpgmp_local?.map_provider || 'google').toLowerCase(); 7181 return currentProvider === providerName.toLowerCase(); 7182 } 7183 7184 isRouteProvider(providerName) { 7185 const map_obj = this; 7186 const currentProvider = (map_obj?.map_data?.route_provider || wpgmp_local?.route_provider || 'leaflet').toLowerCase(); 7187 7188 return currentProvider === providerName.toLowerCase(); 7189 } 7190 7191 /** 7192 * Adds a locate-me control to the map for both Google Maps and Leaflet 7193 */ 7194 7195register_locate_me_control() { 7196 const map_obj = this; 7197 if (map_obj.settings.locateme_control !== true) return; 7198 7199 const className = "wpgmp_locateme_control " + (map_obj.settings.locateme_control_position || "topright").toLowerCase(); 7200 const innerHTML = `<span title='${wpgmp_local.locate_me}'></span>`; 7201 7202 if (map_obj.isMapProvider("google")) { 7203 const controlDiv = document.createElement("div"); 7204 controlDiv.className = className; 7205 controlDiv.innerHTML = innerHTML; 7206 map_obj.map.controls[ 7207 google.maps.ControlPosition[map_obj.settings.locateme_control_position || "TOP_RIGHT"] 7208 ].push(controlDiv); 7209 } else { 7210 const LocateControl = L.Control.extend({ 7211 options: { position: map_obj.settings.locateme_control_position?.toLowerCase() || "topright" }, 7212 onAdd() { 7213 const container = L.DomUtil.create("div", className); 7214 container.innerHTML = innerHTML; 7215 container.title = wpgmp_local.locate_me; 7216 L.DomEvent.disableClickPropagation(container); 7217 return container; 7218 } 7219 }); 7220 map_obj.map.addControl(new LocateControl()); 7221 } 7222 7223 // Click Event Binding (Same for both) 7224 $(map_obj.container).on("click", ".wpgmp_locateme_control", function () { 7225 map_obj.get_current_location((user_location) => { 7226 const isGoogle = map_obj.isMapProvider("google"); 7227 const lat = typeof user_location.lat === 'function' ? user_location.lat() : user_location.lat; 7228 const lng = typeof user_location.lng === 'function' ? user_location.lng() : user_location.lng; 7229 const latLngObj = isGoogle ? new google.maps.LatLng(lat, lng) : L.latLng(lat, lng); 7230 7231 if (!isGoogle) { 7232 const bounds = latLngObj.toBounds(100); 7233 map_obj.map.flyToBounds(bounds, { 7234 padding: [50, 50], 7235 maxZoom: 15, 7236 animate: true, 7237 duration: 1.5 7238 }); 7239 } else { 7240 map_obj.map.panTo(latLngObj); 7241 map_obj.map.setZoom(15); 7242 } 7243 7244 if (!isGoogle && map_obj.pulse_circle && map_obj.map.hasLayer(map_obj.pulse_circle)) { 7245 map_obj.map.removeLayer(map_obj.pulse_circle); 7246 } 7247 7248 if (!isGoogle) { 7249 7250 map_obj.pulse_circle = map_obj.create_leaflet_marker({ 7251 map: map_obj.map, 7252 position: latLngObj, 7253 isDivIcon: true, 7254 html: '<div class="pulse-marker"></div>', 7255 customClass: '', // optional, for no extra class 7256 }); 7257 7258 } else { 7259 // Google Maps fallback visual marker (if needed) 7260 if (map_obj.pulse_circle) map_obj.pulse_circle.setMap(null); 7261 const markerDiv = document.createElement('div'); 7262 markerDiv.className = 'pulse-marker'; 7263 const overlay = new google.maps.OverlayView(); 7264 overlay.onAdd = function () { 7265 const layer = this.getPanes().overlayMouseTarget; 7266 layer.appendChild(markerDiv); 7267 markerDiv.style.position = 'absolute'; 7268 }; 7269 overlay.draw = function () { 7270 const projection = this.getProjection(); 7271 const point = projection.fromLatLngToDivPixel(latLngObj); 7272 if (point) { 7273 markerDiv.style.left = point.x - 15 + 'px'; 7274 markerDiv.style.top = point.y - 15 + 'px'; 7275 } 7276 }; 7277 overlay.onRemove = function () { 7278 if (markerDiv.parentNode) markerDiv.parentNode.removeChild(markerDiv); 7279 };
7280 overlay.setMap(map_obj.map); 7281 map_obj.pulse_circle = overlay; 7282 } 7283 7284 if (map_obj.map_center_marker) { 7285 map_obj.map_center_marker.setPosition(latLngObj); 7286 } 7287 // Draw/Move circle 7288 if (map_obj.set_center_circle) { 7289 if (map_obj.isMapProvider("google")) { 7290 map_obj.set_center_circle.setCenter(latLngObj); 7291 } else if (typeof map_obj.set_center_circle.setLatLng === "function") { 7292 map_obj.set_center_circle.setLatLng(latLngObj); 7293 } 7294 } 7295 7296 7297 }); 7298 }); 7299} 7300 7301getMarkerSize() { 7302 const isMobile = window.innerWidth <= 767; 7303 const isRetina = window.devicePixelRatio > 1.5; 7304 7305 let size; 7306 if (isMobile) { 7307 size = wpgmp_local.mobile_marker_size || [24,24]; 7308 } else if (isRetina) { 7309 size = wpgmp_local.retina_marker_size || [64,64]; 7310 } else { 7311 size = wpgmp_local.desktop_marker_size || [32,32]; 7312 } 7313 7314 return size; 7315} 7316 7317 compute_distance(lat1, lng1, lat2, lng2) { 7318 var map_obj = this; 7319 const isGoogle = map_obj.isMapProvider('google'); 7320 7321 lat1 = parseFloat(lat1); 7322 lng1 = parseFloat(lng1); 7323 lat2 = parseFloat(lat2); 7324 lng2 = parseFloat(lng2); 7325 7326 if (isGoogle && typeof google !== 'undefined' && google.maps?.geometry?.spherical) { 7327 const point1 = new google.maps.LatLng(lat1, lng1); 7328 const point2 = new google.maps.LatLng(lat2, lng2); 7329 return google.maps.geometry.spherical.computeDistanceBetween(point1, point2); // meters 7330 } 7331 7332 // Leaflet fallback 7333 if (typeof L !== 'undefined') { 7334 const point1 = L.latLng(lat1, lng1); 7335 const point2 = L.latLng(lat2, lng2); 7336 return point1.distanceTo(point2); // meters 7337 } 7338 7339 console.warn('No supported map provider available to compute distance.'); 7340 return null; 7341} 7342 7343 7344 7345} 7346 7347window.WpgmpBaseMaps = WpgmpBaseMaps; 7348 7349})(jQuery, window, document); 7350/** 7351 * WpgmpGoogleMaps class - extends BaseMaps for Google Maps provider. 7352 */ 7353 7354(function ($, window, document) { 7355 class WpgmpGoogleMaps extends WpgmpBaseMaps { 7356 constructor(element, map_data = {}, places = []) { 7357 super(element, map_data, places); 7358 7359 var suppress_markers = false; 7360 if (this.map_data.map_tabs && this.map_data.map_tabs.direction_tab) { 7361 suppress_markers = 7362 this.map_data.map_tabs.direction_tab.suppress_markers; 7363 } 7364 7365 this.infowindow_marker = new google.maps.InfoWindow(); 7366 this.infobox = this.wpgmpInitializeInfoBox(); 7367 this.newRoutesApiURL = 7368 "https://routes.googleapis.com/directions/v2:computeRoutes"; 7369 this.searchNearbyApiURL = 7370 "https://places.googleapis.com/v1/places:searchNearby"; 7371 7372 } 7373 // ========================= 7374// ð Part 1: Initialization & Responsive Setup 7375// ========================= 7376 init() { 7377 const map_obj = this; 7378 7379 // Determine current screen type 7380 let isMobile = false; 7381 let screen_type = "desktop"; 7382 const screen_size = $(window).width(); 7383 7384 if (screen_size <= 480) { 7385 screen_type = "smartphones"; 7386 } else if (screen_size > 480 && screen_size <= 768) { 7387 screen_type = "ipads"; 7388 } else if (screen_size >= 1824) { 7389 screen_type = "large-screens"; 7390 } 7391 7392 // Apply mobile-specific settings if configured 7393 if (screen_type !== "desktop" && map_obj.settings.mobile_specific === true) { 7394 isMobile = true; 7395 7396 const mobileSettings = map_obj.settings.screens?.[screen_type]; 7397 if (mobileSettings) { 7398 map_obj.settings.width_mobile = mobileSettings.map_width_mobile; 7399 map_obj.settings.height_mobile = mobileSettings.map_height_mobile; 7400 map_obj.settings.zoom = parseInt(mobileSettings.map_zoom_level_mobile); 7401 map_obj.settings.draggable = mobileSettings.map_draggable_mobile !== "false"; 7402 map_obj.settings.scroll_wheel = mobileSettings.map_scrolling_wheel_mobile !== "false"; 7403 } 7404 7405 // Apply mobile dimensions 7406 if (map_obj.settings.width_mobile !== "") { 7407 $(map_obj.element).css("width", map_obj.settings.width_mobile); 7408 } 7409 7410 if (map_obj.settings.height_mobile !== "") { 7411 $(map_obj.element).css("height", map_obj.settings.height_mobile); 7412 } 7413 } 7414 7415 // ========================= 7416 // ðºï¸ Part 2: Map Initialization and Configuration 7417 // ========================= 7418 7419 const center = new google.maps.LatLng( 7420 map_obj.settings.center_lat, 7421 map_obj.settings.center_lng 7422 ); 7423 7424 const mapOptions = { 7425 zoom: parseInt(map_obj.settings.zoom), 7426 center: center, 7427 scrollwheel: map_obj.settings.scroll_wheel !== "true", 7428 disableDoubleClickZoom: map_obj.settings.doubleclickzoom === false, 7429 zoomControl: map_obj.settings.zoom_control === true, 7430 fullscreenControl: map_obj.settings.full_screen_control === true, 7431 fullscreenControlOptions: { 7432 position: google.maps.ControlPosition[map_obj.settings.full_screen_control_position], 7433 }, 7434 zoomControlOptions: { 7435 style: google.maps.ZoomControlStyle[map_obj.settings.zoom_control_style], 7436 position: google.maps.ControlPosition[map_obj.settings.zoom_control_position], 7437 }, 7438 mapTypeControl: map_obj.settings.map_type_control === true, 7439 mapTypeControlOptions: { 7440 style: google.maps.MapTypeControlStyle[map_obj.settings.map_type_control_style], 7441 position: google.maps.ControlPosition[map_obj.settings.map_type_control_position], 7442 }, 7443 cameraControlOptions: { 7444 position: google.maps.ControlPosition[map_obj.settings.camera_control_position], 7445 }, 7446 scaleControl: map_obj.settings.scale_control === true, 7447 streetViewControl: map_obj.settings.street_view_control === true, 7448 streetViewControlOptions: { 7449 position: google.maps.ControlPosition[map_obj.settings.street_view_control_position], 7450 }, 7451 overviewMapControl: map_obj.settings.overview_map_control === true, 7452 overviewMapControlOptions: { 7453 opened: map_obj.settings.overview_map_control, 7454 }, 7455 draggable: map_obj.settings.draggable, 7456 mapTypeId: google.maps.MapTypeId[map_obj.settings.map_type_id], 7457 styles: eval(map_obj.map_data.styles), 7458 minZoom: parseInt(map_obj.settings.min_zoom), 7459 maxZoom: parseInt(map_obj.settings.max_zoom), 7460 gestureHandling: map_obj.settings.gesture, 7461 cameraControl: map_obj.settings.camera_control === true, 7462 } 7463 7464 let useAdvancedMarker = (wpgmp_local.use_advanced_marker == 'true') ? true : false;
7465 const isApplyStyles = (map_obj.map_data.styles && map_obj.map_data.styles!='') ? true:false; 7466 const spiderfier_enabled = map_obj.map_data.map_marker_spiderfier_setting?.marker_spiderfy === "true"; 7467 7468 if(map_obj.map_data.marker_cluster){ 7469 // Do not work with marker cluster 7470 useAdvancedMarker = false; 7471 } else if(isApplyStyles) { 7472 // Do not work with snazzy maps or custom styles 7473 useAdvancedMarker = false; 7474 } else if(spiderfier_enabled){ 7475 // Do no work with spiderfier effects. 7476 useAdvancedMarker = false; 7477 } 7478 7479 map_obj.useAdvancedMarker = useAdvancedMarker; 7480 7481 if (map_obj.useAdvancedMarker === true && isApplyStyles == false) { 7482 mapOptions.mapId = "mapID" + map_obj.map_data.map_property.map_id; 7483 } 7484 7485 map_obj.map = new google.maps.Map(map_obj.element, mapOptions); 7486 7487 if (typeof google?.maps?.marker?.AdvancedMarkerElement !== 'undefined') { 7488 7489 if (typeof google.maps.Animation === 'undefined') { 7490 google.maps.Animation = { 7491 BOUNCE: 'BOUNCE', 7492 DROP: 'DROP' // Optional: future support 7493 }; 7494 } 7495 7496 const proto = google.maps.marker.AdvancedMarkerElement.prototype; 7497 7498 if (typeof proto.getPosition !== 'function') { 7499 proto.getPosition = function () { 7500 return this.position; 7501 }; 7502 } 7503 7504 if (typeof proto.setPosition !== 'function') { 7505 proto.setPosition = function (latlng) { 7506 this.position = latlng; 7507 }; 7508 } 7509 7510 if (typeof proto.setAnimation !== 'function') { 7511 proto.setAnimation = function (animationType) { 7512 //console.warn("setAnimation() is not natively supported in AdvancedMarkerElement. Applying custom behavior."); 7513 this._animation = animationType; 7514 7515 const el = this.content; 7516 if (!el || !(el instanceof HTMLElement)) return; 7517 7518 el.classList.remove('gmp-marker-bounce', 'gmp-marker-drop'); 7519 7520 if (animationType === google.maps.Animation.BOUNCE) { 7521 el.classList.add('gmp-marker-bounce'); 7522 } else if (animationType === google.maps.Animation.DROP) { 7523 el.classList.add('gmp-marker-drop'); 7524 } 7525 7526 }; 7527 } 7528 7529 if (typeof proto.getAnimation !== 'function') { 7530 proto.getAnimation = function () { 7531 return this._animation || null; 7532 }; 7533 } 7534 7535 if (typeof proto.setVisible !== 'function') { 7536 proto.setVisible = function (visible) { 7537 if (visible) { 7538 if (!this.map && this._boundMap) { 7539 this.map = this._boundMap; 7540 } 7541 } else { 7542 this._boundMap = this.map; // store map reference before hiding 7543 this.map = null; 7544 } 7545 this._visible = visible; 7546 }; 7547 } 7548 7549 if (typeof proto.getVisible !== 'function') { 7550 proto.getVisible = function () { 7551 return this._visible || !!this.map; 7552 }; 7553 } 7554 7555 if (typeof proto.bindMap !== 'function') { 7556 proto.bindMap = function (map) { 7557 this._boundMap = map; 7558 this.map = map; 7559 this._visible = true; 7560 }; 7561 } 7562 7563 if (typeof google.maps.Marker.prototype.bindMap !== 'function') { 7564 google.maps.Marker.prototype.bindMap = function (map) { 7565 this._boundMap = map; 7566 this.setMap(map); 7567 }; 7568 } 7569 7570 if (typeof proto.setIcon !== 'function') { 7571 proto.setIcon = function (icon) { 7572 if (typeof icon !== 'object' || !icon.url) { 7573 console.warn('Invalid icon object passed to setIcon'); 7574 return; 7575 } 7576 7577 const iconUrl = icon.url; 7578 const size = icon.scaledSize 7579 ? [icon.scaledSize.width, icon.scaledSize.height] 7580 : [32, 32]; // fallback default size 7581 7582 // Store icon size for reuse 7583 this._iconSize = size; 7584 7585 /* 7586 const iconElement = document.createElement('img'); 7587 iconElement.src = iconUrl; 7588 iconElement.alt = this.title || ''; 7589 iconElement.style.width = `${size[0]}px`; 7590 iconElement.style.height = `${size[1]}px`; 7591 7592 if (this.title) { 7593 iconElement.title = this.title; 7594 } 7595 */ 7596 const iconElement = map_obj.createIconElement(iconUrl, this.title, size); 7597 7598 this.content = iconElement; 7599 }; 7600 } 7601 7602 // Optional: allow storing the icon size for reuse 7603 if (typeof proto.setIconSize !== 'function') { 7604 proto.setIconSize = function (sizeArray) { 7605 if (Array.isArray(sizeArray) && sizeArray.length === 2) { 7606 this._iconSize = sizeArray; 7607 } 7608 }; 7609 } 7610 7611 } 7612 7613 7614 7615 // Apply localization strings if available 7616 if (map_obj.map_data.map_options.search_placeholder) { 7617 wpgmp_local.search_placeholder = map_obj.map_data.map_options.search_placeholder; 7618 } 7619 7620 if (map_obj.map_data.map_options.select_category) { 7621 wpgmp_local.select_category = map_obj.map_data.map_options.select_category; 7622 } 7623 7624 // Handle template placeholder storage if using advanced template mode 7625 map_obj.search_button = false;
7626 if (map_obj.map_data.map_options.advance_template === true) { 7627 const $listingElement = $(document).find( 7628 '[data-listing-content="true"][data-wpgmp-map-id]' 7629 ); 7630 const eachContent = $listingElement.prop("innerHTML"); 7631 7632 if (eachContent) { 7633 map_obj.map_data.listing.listing_placeholder = eachContent; 7634 } 7635 } 7636 7637 // ========================= 7638 // ð Part 3: Core Marker + Layer Initialization 7639 // ========================= 7640 7641 // Trigger lifecycle hook after map is initialized 7642 map_obj.map_loaded(); 7643 7644 // Handle responsive layout 7645 map_obj.responsive_map(); 7646 7647 // Create and render all map markers 7648 map_obj.create_markers(); 7649 map_obj.display_markers(); 7650 7651 // Load Google Fonts if configured 7652 if (typeof map_obj.settings.google_fonts !== "undefined") { 7653 map_obj.load_google_fonts(map_obj.settings.google_fonts); 7654 } 7655 7656 // Show search control box if enabled 7657 if (map_obj.settings.search_control === true) { 7658 map_obj.show_search_control(); 7659 } 7660 // Add custom map control buttons if enabled 7661 if (map_obj.settings.map_control === true) { 7662 if (typeof map_obj.settings.map_control_settings !== "undefined") { 7663 $.each(map_obj.settings.map_control_settings, function (k, val) { 7664 const centerControlDiv = document.createElement("div"); 7665 map_obj.create_element(centerControlDiv, map_obj.map, val.html); 7666 centerControlDiv.index = 1; 7667 map_obj.map.controls[ 7668 google.maps.ControlPosition[val.position] 7669 ].push(centerControlDiv); 7670 }); 7671 } 7672 } 7673 7674 // Register "Locate Me" button if enabled 7675 if (map_obj.settings.locateme_control === true && map_obj.settings.locateme_control_position) { 7676 map_obj.register_locate_me_control(); 7677 } 7678 7679 // Overlays and Visual Layers 7680 if (map_obj.map_data.street_view) map_obj.set_streetview(center); 7681 if (map_obj.map_data.weather_layer) map_obj.set_weather_layer(); 7682 if (map_obj.map_data.bicyle_layer) map_obj.set_bicyle_layer(); 7683 if (map_obj.map_data.traffic_layer) map_obj.set_traffic_layer(); 7684 if (map_obj.map_data.transit_layer) map_obj.set_transit_layer(); 7685 if (map_obj.map_data.panoramio_layer) map_obj.set_panoramic_layer(); 7686 if (map_obj.map_data.overlay_setting) map_obj.set_overlay(); 7687 if (map_obj.settings.display_45_imagery === "45") map_obj.set_45_imagery(); 7688 if (map_obj.map_data.map_visual_refresh === true) map_obj.set_visual_refresh(); 7689 7690 // Cluster markers if enabled 7691 if (map_obj.map_data.marker_cluster) map_obj.set_marker_cluster(); 7692 7693 // Enable panning control if configured 7694 if (map_obj.map_data.panning_control) map_obj.set_panning_control(); 7695 7696 // Load KML layer 7697 if (map_obj.map_data.kml_layer) map_obj.set_kml_layer(); 7698 7699 // ========================= 7700 // ð§© Part 4: Shapes, Routes, Sorting, and Listings 7701 // ========================= 7702 7703 // Create shapes (polygons, polylines, circles, rectangles) 7704 if (map_obj.map_data.shapes?.shape) { 7705 map_obj.opened_info = map_obj.infowindow_marker; 7706 7707 if (map_obj.map_data.shapes.shape.polygons) { 7708 map_obj.create_polygon(); 7709 } 7710 7711 if (map_obj.map_data.shapes.shape.polylines) { 7712 map_obj.create_polyline(); 7713 } 7714 7715 if (map_obj.map_data.shapes.shape.circles) { 7716 map_obj.create_circle(); 7717 } 7718 7719 if (map_obj.map_data.shapes.shape.rectangles) { 7720 map_obj.create_rectangle(); 7721 } 7722 } 7723 7724 // Apply default sorting if enabled (for listing or category tabs) 7725 if (map_obj.map_data.listing) { 7726 if (map_obj.map_data.listing.default_sorting && map_obj.map_data.autosort) { 7727 let data_type = ""; 7728 if (map_obj.map_data.listing.default_sorting.orderby === "listorder") { 7729 data_type = "num"; 7730 } 7731 7732 map_obj.sorting( 7733 map_obj.map_data.listing.default_sorting.orderby, 7734 map_obj.map_data.listing.default_sorting.inorder, 7735 data_type 7736 ); 7737 } 7738 } else if (map_obj.map_data.map_tabs?.category_tab?.cat_tab) { 7739 if (!map_obj.map_data.map_tabs.category_tab.cat_post_order) { 7740 map_obj.map_data.map_tabs.category_tab.cat_post_order = "asc"; 7741 } 7742 7743 if (map_obj.map_data.autosort) { 7744 map_obj.sorting("title", map_obj.map_data.map_tabs.category_tab.cat_post_order); 7745 map_obj.map_data.places_for_category_tabs = map_obj.map_data.places; 7746 map_obj.map_data.places_for_category_tabs = map_obj.sorting_inside_tabs( 7747 map_obj.map_data.places_for_category_tabs, 7748 map_obj.map_data.map_tabs.category_tab.cat_post_order 7749 ); 7750 } 7751 } 7752 7753 // ========================= 7754 // ð Part 5: Filter UI, Events & Listeners 7755 // ========================= 7756 7757 if (map_obj.map_data.listing) { 7758 7759 // Inject filters and custom filters into UI 7760 map_obj.display_filters_listing(); 7761 map_obj.custom_filters(); 7762 if ( 7763 map_obj !== "undefined" && 7764 map_obj.map_data.default_amenities != undefined && 7765 map_obj.map_data.enableAmenitiesListing != undefined && 7766 map_obj.map_data.enableAmenitiesListing 7767 ) { 7768 //WAIT WHILE LOAD AMENITIES 7769 } else { 7770 $(map_obj.container) 7771 .find(".location_pagination" + map_obj.map_data.map_property.map_id) 7772 .pagination(map_obj.show_places.length, { 7773 callback: map_obj.display_places_listing, 7774 map_data: map_obj, 7775 items_per_page: 7776 map_obj.map_data.listing.pagination.listing_per_page, 7777 prev_text: wpgmp_local.prev, 7778 next_text: wpgmp_local.next, 7779 }); 7780 } 7781 7782 7783 } 7784 7785 // ========================= 7786 // ð Part 7: Autocomplete, Events & Final Touches 7787 // ========================= 7788 7789 // Load GeoJSON data (if any) 7790 if (typeof map_obj.map_data.geojson !== "undefined") { 7791 map_obj.load_json(map_obj.map_data.geojson); 7792 } 7793 7794 7795 7796 // Register and re-register Google Autocomplete
7797 map_obj.google_auto_suggest($(".wpgmp_auto_suggest")); 7798 7799 // Optionally show center circle and marker 7800 if (map_obj.settings.show_center_circle === true) { 7801 map_obj.show_center_circle(); 7802 } 7803 7804 if (map_obj.settings.show_center_marker === true) { 7805 map_obj.show_center_marker(); 7806 } 7807 7808 // Enable drawing manager if shape editing is enabled 7809 7810 if (map_obj.map_data.shapes?.drawing_editable === true) { 7811 map_obj.enable_drawing(); 7812 } 7813 7814 // Fit bounds to markers if setting enabled 7815 if (map_obj.settings.fit_bounds === true) { 7816 map_obj.fit_bounds(); 7817 } 7818 7819 // Register any custom plugin or map-specific JS events 7820 map_obj.register_events(); 7821 7822 // Initialize accordion behavior 7823 $(map_obj.container).find(".wpgmp-accordion").accordion({ 7824 speed: "slow", 7825 }); 7826 7827 } 7828 7829 createIconElement(iconUrl, title = '', iconSize = [32, 32]) { 7830 const icon = document.createElement('img'); 7831 icon.src = iconUrl; 7832 icon.alt = title; 7833 // Only apply size if the icon is an SVG 7834 if (iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg')) { 7835 icon.style.width = `${iconSize[0]}px`; 7836 icon.style.height = `${iconSize[1]}px`; 7837 } 7838 icon.title = title; 7839 icon.style.objectFit = 'contain'; 7840 return icon; 7841 } 7842 7843 createMarker(place) { 7844 var map_obj = this; 7845 var map = map_obj.map; 7846 var iconSize = map_obj.getMarkerSize(); 7847 var image = { 7848 url: place.icon, 7849 scaledSize: new google.maps.Size(iconSize[0], iconSize[1]), 7850 }; 7851 7852 place.marker = map_obj.create_google_marker({ 7853 map: map, 7854 position: {lat:place.geometry.location.lat(),lng:place.geometry.location.lng()}, 7855 iconUrl: place.icon, 7856 }); 7857 7858 var post_info_class = "fc-infowindow-"; 7859 place.marker = place.marker; 7860 place.address = place.vicinity; 7861 place.title = place.name; 7862 place.location = {}; 7863 place.location.onclick_action = "marker"; 7864 var content = ""; 7865 7866 var temp_listing_placeholder = ""; 7867 var post_info_class = "fc-infowindow-"; 7868 if (place.source == "post") { 7869 temp_listing_placeholder = map_obj.settings.infowindow_geotags_setting; 7870 post_info_class = 7871 "wpgmp_infowindow_post fc-item-" + 7872 map_obj.settings.infowindow_post_skin.name; 7873 } else { 7874 temp_listing_placeholder = map_obj.settings.infowindow_setting; 7875 if ( 7876 map_obj.map_data.page != "edit_location" && 7877 map_obj.settings.infowindow_skin 7878 ) 7879 post_info_class = 7880 "fc-infowindow-" + map_obj.settings.infowindow_skin.name; 7881 } 7882 7883 if (typeof temp_listing_placeholder == "undefined") { 7884 temp_listing_placeholder = place.content; 7885 } 7886 7887 var marker_image = ""; 7888 var image_url = 7889 typeof place.photos !== "undefined" 7890 ? place.photos[0].getUrl({ maxWidth: 400, maxHeight: 400 }) 7891 : place.icon; 7892 marker_image = 7893 "<div class='fc-feature-img amenities_image'><img alt='" + 7894 place.vicinity + 7895 "' src='" + 7896 image_url + 7897 "' class='wpgmp_marker_image wpgmp_amenities_image' /></div>"; 7898 7899 var replaceData = { 7900 "{marker_id}": place.id, 7901 "{marker_title}": place.name, 7902 "{marker_address}": place.vicinity, 7903 "{marker_latitude}": place.geometry.location.lat(), 7904 "{marker_longitude}": place.geometry.location.lng(), 7905 "{marker_city}": "", 7906 "{marker_state}": "", 7907 "{marker_country}": "", 7908 "{marker_postal_code}": "", 7909 "{marker_zoom}": "", 7910 "{marker_icon}": place.icon, 7911 "{marker_category}": place.types[0], 7912 "{marker_message}": place.content, 7913 "{marker_image}": marker_image, 7914 }; 7915 7916 for (var prop in replaceData) { 7917 if (replaceData[prop] == undefined || replaceData[prop] == "undefined") 7918 replaceData[prop] = ""; 7919 } 7920 7921 if (temp_listing_placeholder) { 7922 temp_listing_placeholder = temp_listing_placeholder.replace( 7923 /{#if (.*?)}([\s\S]*?){\/if}/g, 7924 function (match, p1, p2) { 7925 return replaceData["{" + p1 + "}"] ? p2 : ""; 7926 } 7927 ); 7928 7929 temp_listing_placeholder = temp_listing_placeholder.replace( 7930 /{[^{}]+}/g, 7931 function (match) { 7932 if (match in replaceData) { 7933 return replaceData[match]; 7934 } else { 7935 return ""; 7936 } 7937 } 7938 ); 7939 7940 var temp_string = temp_listing_placeholder; 7941 var temp_object = $("<div/>").html(temp_string); 7942 $(temp_object) 7943 .find(".wpgmp_extra_field:contains('wpgmp_empty')") 7944 .remove(); 7945 $(temp_object).find(".wpgmp_empty").prev().remove(); 7946 $(temp_object).find(".wpgmp_empty").remove(); 7947 7948 content = $(temp_object).prop("outerHTML").toString(); 7949 } 7950 7951 if (content === "") { 7952 if ( 7953 map_obj.settings.map_infowindow_customisations === true && 7954 map_obj.settings.show_infowindow_header === true 7955 ) 7956 content = 7957 '<div class="wpgmp_infowindow ' + 7958 post_info_class + 7959 '"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">' + 7960 place.name + 7961 '</div></div><div class="wpgmp_iw_content">' + 7962 place.vicinity + 7963 "</div></div>"; 7964 else 7965 content = 7966 '<div class="wpgmp_infowindow ' + 7967 post_info_class + 7968 '"><div class="wpgmp_iw_content">' + 7969 place.content + 7970 "</div></div>"; 7971 } else { 7972 if ( 7973 map_obj.settings.map_infowindow_customisations === true && 7974 map_obj.settings.show_infowindow_header === true 7975 ) 7976 content = 7977 '<div class="wpgmp_infowindow ' + 7978 post_info_class + 7979 '"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">' + 7980 place.name + 7981 '</div></div><div class="wpgmp_iw_content">' + 7982 content + 7983 "</div></div>"; 7984 else 7985 content = 7986 '<div class="wpgmp_infowindow ' + 7987 post_info_class + 7988 '"><div class="wpgmp_iw_content">' + 7989 content + 7990 "</div></div>"; 7991 } 7992 7993 place.infowindow_data = content; 7994 place.infowindow = map_obj.infowindow_marker; 7995 var on_event = map_obj.settings.infowindow_open_event; 7996 7997 map_obj.event_listener(place.marker, on_event, function () { 7998 $.each(map_obj.places, function (key, prev_place) { 7999 prev_place.infowindow.close(); 8000 prev_place.marker.setAnimation(null); 8001 }); 8002 map_obj.openInfoWindow(place); 8003 }); 8004 8005 map_obj.places.push(place); 8006 } 8007 wpgmp_image_type_overlays() { 8008 var map_obj = this; 8009 var imageMapType = new google.maps.ImageMapType({ 8010 getTileUrl(coord, zoom) { 8011 return [
8012 "http://www.gstatic.com/io2010maps/tiles/5/L2_", 8013 zoom, 8014 "_", 8015 coord.x, 8016 "_", 8017 coord.y, 8018 ".png", 8019 ].join(""); 8020 }, 8021 tileSize: new google.maps.Size(256, 256), 8022 }); 8023 8024 map_obj.map.overlayMapTypes.push(imageMapType); 8025 } 8026 8027 get_user_position() { 8028 var map_obj = this; 8029 8030 navigator.geolocation.getCurrentPosition( 8031 function (position) { 8032 map_obj.user_lat_lng = new google.maps.LatLng( 8033 position.coords.latitude, 8034 position.coords.longitude 8035 ); 8036 }, 8037 function (ErrorPosition) {}, 8038 { 8039 enableHighAccuracy: true, 8040 timeout: 5000, 8041 maximumAge: 0, 8042 } 8043 ); 8044 } 8045 8046 wpgmp_finddata(result, type) { 8047 var component_name = ""; 8048 8049 for (var i = 0; i < result.addressComponents.length; ++i) { 8050 var component = result.addressComponents[i]; 8051 $.each(component.types, function (index, value) { 8052 if (value == type) { 8053 component_name = component.longText; 8054 } 8055 }); 8056 } 8057 8058 return component_name; 8059 } 8060 8061 clearSelection() { 8062 var map_obj = this; 8063 if (map_obj.selectedShape) { 8064 map_obj.selectedShape.setEditable(false); 8065 map_obj.selectedShape = null; 8066 } 8067 } 8068 setSelection(shape) { 8069 var map_obj = this; 8070 map_obj.clearSelection(); 8071 map_obj.selectedShape = shape; 8072 map_obj.selectedShape.setEditable(true); 8073 } 8074 deleteSelectedShape() { 8075 var map_obj = this; 8076 var key; 8077 if (map_obj.selectedShape) { 8078 for (key in map_obj.wpgmp_circles) { 8079 if (map_obj.wpgmp_circles[key] == map_obj.selectedShape) { 8080 map_obj.wpgmp_circles.splice(key, 1); 8081 } 8082 } 8083 for (key in map_obj.wpgmp_rectangles) { 8084 if (map_obj.wpgmp_rectangles[key] == map_obj.selectedShape) { 8085 map_obj.wpgmp_rectangles.splice(key, 1); 8086 } 8087 } 8088 for (key in map_obj.wpgmp_polygons) { 8089 if (map_obj.wpgmp_polygons[key] == map_obj.selectedShape) { 8090 map_obj.wpgmp_polygons.splice(key, 1); 8091 } 8092 } 8093 for (key in map_obj.wpgmp_polylines) { 8094 if (map_obj.wpgmp_polylines[key] == map_obj.selectedShape) { 8095 map_obj.wpgmp_polylines.splice(key, 1); 8096 } 8097 } 8098 map_obj.selectedShape.setMap(null); 8099 } 8100 } 8101 8102 create_google_marker({ 8103 map, 8104 position, 8105 iconUrl = null, 8106 title = '', 8107 label = '', 8108 draggable = false, 8109 clickable = true, 8110 anchorPoint = null 8111 }) { 8112 const map_obj = this; 8113 8114 const lat = parseFloat(position.lat || position.lat()); 8115 const lng = parseFloat(position.lng || position.lng()); 8116 const markerLatLng = new google.maps.LatLng(lat, lng); 8117 8118 const iconSize = map_obj.getMarkerSize?.() || [32, 32]; 8119 8120 // Default icon fallback 8121 if (!iconUrl || iconUrl.trim() === '') { 8122 iconUrl = map_obj.settings.marker_default_icon || wpgmp_local.default_marker_icon; 8123 } 8124 8125 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 8126 8127 if (map_obj.useAdvancedMarker && google.maps.marker?.AdvancedMarkerElement ) { 8128 // AdvancedMarkerElement version 8129 const iconElement = isSvg ? map_obj.createIconElement(iconUrl, title, iconSize) : map_obj.createIconElement(iconUrl, title); 8130 8131 return new google.maps.marker.AdvancedMarkerElement({ 8132 map: map, 8133 position: markerLatLng, 8134 title: title, 8135 content: iconElement, 8136 }); 8137 8138 } else { 8139 // Fallback to classic google.maps.Marker 8140 const markerOptions = { 8141 position: markerLatLng, 8142 map, 8143 title, 8144 label, 8145 draggable, 8146 clickable, 8147 }; 8148 8149 if (iconUrl) { 8150 markerOptions.icon = { 8151 url: iconUrl, 8152 }; 8153 if (isSvg) { 8154 markerOptions.icon.scaledSize = new google.maps.Size(parseInt(iconSize[0]), parseInt(iconSize[1])); 8155 } 8156 } 8157 8158 if (anchorPoint) { 8159 markerOptions.anchorPoint = new google.maps.Point(anchorPoint.x, anchorPoint.y); 8160 } 8161 8162 return new google.maps.Marker(markerOptions); 8163 } 8164 } 8165 8166 enable_drawing() { 8167 var map_obj = this; 8168 map_obj.drawingmanager = new google.maps.drawing.DrawingManager({ 8169 drawingMode: null, 8170 drawingControl: true, 8171 drawingControlOptions: { 8172 position: google.maps.ControlPosition.TOP_CENTER, 8173 drawingModes: [ 8174 google.maps.drawing.OverlayType.CIRCLE, 8175 google.maps.drawing.OverlayType.POLYGON, 8176 google.maps.drawing.OverlayType.POLYLINE, 8177 google.maps.drawing.OverlayType.RECTANGLE, 8178 ], 8179 }, 8180 8181 circleOptions: { 8182 fillColor: "#003dce", 8183 strokeColor: "#003dce", 8184 strokeWeight: "1", 8185 strokeOpacity: "0.5", 8186 zindex: 1, 8187 fillOpacity: "0.5", 8188 editable: false, 8189 draggable: false, 8190 }, 8191 polygonOptions: { 8192 fillColor: "#003dce", 8193 strokeColor: "#003dce", 8194 strokeWeight: "1", 8195 strokeOpacity: "0.5", 8196 zindex: 1, 8197 fillOpacity: "0.5", 8198 editable: false, 8199 draggable: false, 8200 }, 8201 polylineOptions: { 8202 fillColor: "#003dce", 8203 strokeColor: "#003dce", 8204 strokeWeight: "1", 8205 strokeOpacity: "0.5", 8206 zindex: 1, 8207 fillOpacity: "0.5", 8208 editable: false, 8209 draggable: false, 8210 }, 8211 rectangleOptions: { 8212 fillColor: "#003dce", 8213 strokeColor: "#003dce", 8214 strokeWeight: "1", 8215 strokeOpacity: "0.5", 8216 zindex: 1, 8217 fillOpacity: "0.5", 8218 editable: false, 8219 draggable: false, 8220 }, 8221 });
8222 map_obj.drawingmanager.setMap(map_obj.map); 8223 map_obj.event_listener( 8224 map_obj.drawingmanager, 8225 "circlecomplete", 8226 function (circle) { 8227 map_obj.wpgmp_circles.push(circle); 8228 map_obj.wpgmp_shape_complete(circle, "circle"); 8229 } 8230 ); 8231 map_obj.event_listener( 8232 map_obj.drawingmanager, 8233 "polygoncomplete", 8234 function (polygon) { 8235 map_obj.wpgmp_polygons.push(polygon); 8236 map_obj.wpgmp_shape_complete(polygon, "polygon"); 8237 } 8238 ); 8239 map_obj.event_listener( 8240 map_obj.drawingmanager, 8241 "polylinecomplete", 8242 function (polyline) { 8243 map_obj.wpgmp_polylines.push(polyline); 8244 map_obj.wpgmp_shape_complete(polyline, "polyline"); 8245 } 8246 ); 8247 map_obj.event_listener( 8248 map_obj.drawingmanager, 8249 "rectanglecomplete", 8250 function (rectangle) { 8251 map_obj.wpgmp_rectangles.push(rectangle); 8252 map_obj.wpgmp_shape_complete(rectangle, "rectangle"); 8253 } 8254 ); 8255 } 8256 8257 create_polygon() { 8258 var map_obj = this; 8259 8260 $.each(this.map_data.shapes.shape.polygons, function (index, polygon) { 8261 var path = []; 8262 $.each(polygon.cordinates, function (ind, cordinate) { 8263 var latlng = cordinate.split(","); 8264 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 8265 }); 8266 8267 polygon.reference = new google.maps.Polygon({ 8268 paths: path, 8269 strokeColor: polygon.settings.stroke_color, 8270 strokeOpacity: polygon.settings.stroke_opacity, 8271 strokeWeight: polygon.settings.stroke_weight, 8272 fillColor: polygon.settings.fill_color, 8273 fillOpacity: polygon.settings.fill_opacity, 8274 }); 8275 if (typeof map_obj.map_data.shapes != "undefined") { 8276 if (map_obj.map_data.shapes.drawing_editable === true) { 8277 map_obj.event_listener(polygon.reference, "click", function () { 8278 map_obj.setSelection(polygon.reference); 8279 map_obj.get_shapes_options(polygon.reference, "polygon"); 8280 }); 8281 } else if ( 8282 polygon.events !== undefined && 8283 (polygon.events.url !== "" || polygon.events.message !== "") 8284 ) { 8285 map_obj.event_listener(polygon.reference, "click", function () { 8286 if ( 8287 (polygon.events.url === "" || 8288 polygon.events.url === undefined) && 8289 polygon.events.message !== "" 8290 ) { 8291 var bounds = new google.maps.LatLngBounds(); 8292 polygon.reference.getPath().forEach(function (element, index) { 8293 bounds.extend(element); 8294 }); 8295 $.each(map_obj.places, function (key, place) { 8296 place.infowindow.close(); 8297 }); 8298 map_obj.opened_info.setPosition(bounds.getCenter()); 8299 if (map_obj.settings.map_infowindow_customisations === true) 8300 map_obj.opened_info.setContent( 8301 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 8302 polygon.events.message + 8303 "</div></div>" 8304 ); 8305 else map_obj.opened_info.setContent(polygon.events.message); 8306 map_obj.opened_info.open(map_obj.map, this); 8307 } else { 8308 if ( 8309 polygon.events.url !== "undefined" && 8310 polygon.events.url !== undefined 8311 ) 8312 window.location = polygon.events.url; 8313 } 8314 }); 8315 } 8316 } 8317 polygon.reference.setMap(map_obj.map); 8318 8319 map_obj.wpgmp_polygons.push(polygon.reference); 8320 8321 if (polygon.events == undefined) { 8322 polygon.events = {}; 8323 polygon.events.url = ""; 8324 polygon.events.message = ""; 8325 } 8326 8327 map_obj.wpgmp_shape_events.push({ 8328 shape: polygon.reference, 8329 url: polygon.events.url, 8330 message: polygon.events.message, 8331 }); 8332 }); 8333 } 8334
8335 create_polyline() { 8336 var map_obj = this; 8337 8338 $.each(this.map_data.shapes.shape.polylines, function (index, polyline) { 8339 var path = []; 8340 8341 if (typeof polyline.cordinates != "undefined") { 8342 $.each(polyline.cordinates, function (ind, cordinate) { 8343 var latlng = cordinate.split(","); 8344 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 8345 }); 8346 8347 polyline.reference = new google.maps.Polyline({ 8348 path: path, 8349 strokeColor: polyline.settings.stroke_color, 8350 strokeOpacity: polyline.settings.stroke_opacity, 8351 strokeWeight: polyline.settings.stroke_weight, 8352 }); 8353 8354 if (typeof map_obj.map_data.shapes != "undefined") { 8355 if (map_obj.map_data.shapes.drawing_editable === true) { 8356 map_obj.event_listener(polyline.reference, "click", function () { 8357 map_obj.setSelection(polyline.reference); 8358 map_obj.get_shapes_options(polyline.reference, "polyline"); 8359 }); 8360 } else if ( 8361 polyline.events !== undefined && 8362 (polyline.events.url !== "" || polyline.events.message !== "") 8363 ) { 8364 map_obj.event_listener(polyline.reference, "click", function () { 8365 if ( 8366 (polyline.events.url === "" || 8367 polyline.events.url === undefined) && 8368 polyline.events.message !== "" 8369 ) { 8370 var bounds = new google.maps.LatLngBounds(); 8371 polyline.reference 8372 .getPath() 8373 .forEach(function (element, index) { 8374 bounds.extend(element); 8375 }); 8376 $.each(map_obj.places, function (key, place) { 8377 place.infowindow.close(); 8378 }); 8379 map_obj.opened_info.setPosition(bounds.getCenter()); 8380 if (map_obj.settings.map_infowindow_customisations === true) 8381 map_obj.opened_info.setContent( 8382 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 8383 polyline.events.message + 8384 "</div></div>" 8385 ); 8386 else map_obj.opened_info.setContent(polyline.events.message); 8387 map_obj.opened_info.open(map_obj.map, this); 8388 } else if (polyline.events.url !== "") { 8389 if ( 8390 polyline.events.url !== "undefined" && 8391 polyline.events.url !== undefined 8392 ) 8393 window.location = polyline.events.url; 8394 } 8395 }); 8396 } 8397 } 8398 }
8399 if (typeof polyline.reference != "undefined") { 8400 polyline.reference.setMap(map_obj.map); 8401 map_obj.wpgmp_polylines.push(polyline.reference); 8402 8403 if (polyline.events == undefined) { 8404 polyline.events = {}; 8405 polyline.events.url = ""; 8406 polyline.events.message = ""; 8407 } 8408 8409 map_obj.wpgmp_shape_events.push({ 8410 shape: polyline.reference, 8411 url: polyline.events.url, 8412 message: polyline.events.message, 8413 }); 8414 } 8415 }); 8416 } 8417 event_listener(obj, type, func) { 8418 google.maps.event.addListener(obj, type, func); 8419 } 8420 create_circle() { 8421 var map_obj = this; 8422 $.each(this.map_data.shapes.shape.circles, function (index, circle) { 8423 var path; 8424 $.each(circle.cordinates, function (ind, cordinate) { 8425 var latlng = cordinate.split(","); 8426 path = new google.maps.LatLng(latlng[0], latlng[1]); 8427 }); 8428 8429 circle.reference = new google.maps.Circle({ 8430 fillColor: circle.settings.fill_color, 8431 fillOpacity: circle.settings.fill_opacity, 8432 strokeColor: circle.settings.stroke_color, 8433 strokeOpacity: circle.settings.stroke_opacity, 8434 strokeWeight: circle.settings.stroke_weight, 8435 center: path, 8436 radius: parseInt(circle.settings.radius), 8437 }); 8438 8439 if (typeof map_obj.map_data.shapes != "undefined") { 8440 if (map_obj.map_data.shapes.drawing_editable === true) { 8441 map_obj.event_listener(circle.reference, "click", function () { 8442 map_obj.setSelection(circle.reference); 8443 map_obj.get_shapes_options(circle.reference, "circle"); 8444 }); 8445 } else if ( 8446 circle.events !== undefined && 8447 (circle.events.url !== "" || circle.events.message !== "") 8448 ) { 8449 map_obj.event_listener(circle.reference, "click", function () { 8450 if ( 8451 (circle.events.url === "" || circle.events.url === undefined) && 8452 circle.events.message !== "" 8453 ) { 8454 $.each(map_obj.places, function (key, place) { 8455 place.infowindow.close(); 8456 }); 8457 map_obj.opened_info.setPosition(circle.reference.getCenter()); 8458 if (map_obj.settings.map_infowindow_customisations === true) 8459 map_obj.opened_info.setContent( 8460 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 8461 circle.events.message + 8462 "</div></div>" 8463 ); 8464 else map_obj.opened_info.setContent(circle.events.message); 8465 map_obj.opened_info.open(map_obj.map, this); 8466 } else if (circle.events.url !== "") { 8467 if ( 8468 circle.events.url !== "undefined" && 8469 circle.events.url !== undefined 8470 ) 8471 window.location = circle.events.url; 8472 } 8473 }); 8474 } 8475 } 8476 8477 circle.reference.setMap(map_obj.map); 8478 map_obj.wpgmp_circles.push(circle.reference); 8479 8480 if (circle.events == undefined) { 8481 circle.events = {}; 8482 circle.events.url = ""; 8483 circle.events.message = ""; 8484 } 8485 8486 map_obj.wpgmp_shape_events.push({ 8487 shape: circle.reference, 8488 url: circle.events.url, 8489 message: circle.events.message, 8490 }); 8491 }); 8492 } 8493 8494 create_rectangle() { 8495 var map_obj = this; 8496 $.each( 8497 this.map_data.shapes.shape.rectangles, 8498 function (index, rectangle) { 8499 var left_latlng = rectangle.cordinates[0].split(","); 8500 var right_latlng = rectangle.cordinates[1].split(","); 8501 8502 var path = new google.maps.LatLngBounds( 8503 new google.maps.LatLng(left_latlng[0], left_latlng[1]), 8504 new google.maps.LatLng(right_latlng[0], right_latlng[1]) 8505 ); 8506 8507 rectangle.reference = new google.maps.Rectangle({ 8508 bounds: path, 8509 fillColor: rectangle.settings.fill_color, 8510 fillOpacity: rectangle.settings.fill_opacity, 8511 strokeColor: rectangle.settings.stroke_color, 8512 strokeOpacity: rectangle.settings.stroke_opacity, 8513 strokeWeight: rectangle.settings.stroke_weight, 8514 }); 8515 8516 if (typeof map_obj.map_data.shapes != "undefined") { 8517 if (map_obj.map_data.shapes.drawing_editable === true) { 8518 map_obj.event_listener(rectangle.reference, "click", function () { 8519 map_obj.setSelection(rectangle.reference); 8520 map_obj.get_shapes_options(rectangle.reference, "rectangle"); 8521 }); 8522 } else if ( 8523 rectangle.events !== undefined && 8524 (rectangle.events.url !== "" || rectangle.events.message !== "") 8525 ) { 8526 map_obj.event_listener(rectangle.reference, "click", function () { 8527 if ( 8528 (rectangle.events.url === "" || 8529 rectangle.events.url === undefined) && 8530 rectangle.events.message !== "" 8531 ) { 8532 $.each(map_obj.places, function (key, place) { 8533 place.infowindow.close(); 8534 }); 8535 map_obj.opened_info.setPosition( 8536 rectangle.reference.getBounds().getCenter() 8537 ); 8538 if (map_obj.settings.map_infowindow_customisations === true) 8539 map_obj.opened_info.setContent( 8540 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 8541 rectangle.events.message + 8542 "</div></div>" 8543 ); 8544 else map_obj.opened_info.setContent(rectangle.events.message); 8545 map_obj.opened_info.open(map_obj.map, this); 8546 } else if (rectangle.events.url !== "") { 8547 if ( 8548 rectangle.events.url !== "undefined" && 8549 rectangle.events.url !== undefined 8550 ) 8551 window.location = rectangle.events.url; 8552 } 8553 }); 8554 } 8555 } 8556
8557 rectangle.reference.setMap(map_obj.map); 8558 map_obj.wpgmp_rectangles.push(rectangle.reference); 8559 8560 if (rectangle.events == undefined) { 8561 rectangle.events = {}; 8562 rectangle.events.url = ""; 8563 rectangle.events.message = ""; 8564 } 8565 8566 map_obj.wpgmp_shape_events.push({ 8567 shape: rectangle.reference, 8568 url: rectangle.events.url, 8569 message: rectangle.events.message, 8570 }); 8571 } 8572 ); 8573 } 8574 8575 get_shapes_options(shape, type) { 8576 $(".hiderow").addClass("temp_row").removeClass("hiderow"); 8577 8578 // Set value to the input 8579 $("input[name='shape_fill_color']").val(shape.fillColor); 8580 8581 // Set background color of the visible preview button (.wp-color-result) 8582 $("input[name='shape_fill_color']") 8583 .closest(".wp-picker-container") 8584 .find(".wp-color-result") 8585 .css("background-color", shape.fillColor); 8586 8587 $("input[name='shape_stroke_color']").val(shape.strokeColor); 8588 8589 // Set background color of the visible preview button (.wp-color-result) 8590 $("input[name='shape_stroke_color']") 8591 .closest(".wp-picker-container") 8592 .find(".wp-color-result") 8593 .css("background-color", shape.strokeColor); 8594 8595 $("select[name='shape_fill_opacity']").val(shape.fillOpacity); 8596 $("select[name='shape_stroke_opacity']").val(shape.strokeOpacity); 8597 $("select[name='shape_stroke_weight']").val(shape.strokeWeight); 8598 $("textarea[name='shape_path']").parent().hide(); 8599 $("input[name='shape_radius']").parent().hide(); 8600 $("input[name='shape_center']").parent().hide(); 8601 $("input[name='shape_northeast']").parent().hide(); 8602 $("input[name='shape_southwest']").parent().hide(); 8603 8604 var all_shape_events = this.wpgmp_shape_events; 8605 $.each(all_shape_events, function (i, shape_event) { 8606 if (shape_event.shape == shape) { 8607 $("input[name='shape_click_url']").val(shape_event.url); 8608 $("textarea[name='shape_click_message']").val(shape_event.message); 8609 } 8610 }); 8611 if (type == "circle") { 8612 $("input[name='shape_radius']").parent().show(); 8613 $("input[name='shape_radius']").val(shape.getRadius()); 8614 $("input[name='shape_center']").parent().show(); 8615 $("input[name='shape_center']").val( 8616 shape.getCenter().lat() + "," + shape.getCenter().lng() 8617 ); 8618 } else if (type == "rectangle") { 8619 $("input[name='shape_northeast']").parent().show(); 8620 $("input[name='shape_northeast']").val( 8621 shape.getBounds().getNorthEast().lat() + 8622 "," + 8623 shape.getBounds().getNorthEast().lng() 8624 ); 8625 $("input[name='shape_southwest']").parent().show(); 8626 $("input[name='shape_southwest']").val(
8627 shape.getBounds().getSouthWest().lat() + 8628 "," + 8629 shape.getBounds().getSouthWest().lng() 8630 ); 8631 } else { 8632 var polygon_cordinate = []; 8633 8634 var cordinates = shape.getPath(); 8635 8636 cordinates.forEach(function (latlng, index) { 8637 var latlngin = [latlng.lat(), latlng.lng()]; 8638 8639 if (latlng.lat() !== "" && latlng.lng() !== "") 8640 polygon_cordinate.push(latlngin); 8641 }); 8642 $("textarea[name='shape_path']").parent().show(); 8643 $("textarea[name='shape_path']").val(polygon_cordinate.join(" ")); 8644 } 8645 } 8646 8647 set_shapes_options(shape) { 8648 var polyOptions2 = { 8649 fillColor: $("input[name='shape_fill_color']").val(), 8650 fillOpacity: $("select[name='shape_fill_opacity']").val(), 8651 strokeColor: $("input[name='shape_stroke_color']").val(), 8652 strokeOpacity: $("select[name='shape_stroke_opacity']").val(), 8653 strokeWeight: $("select[name='shape_stroke_weight']").val(), 8654 }; 8655 shape.setOptions(polyOptions2); 8656 var all_shape_events = this.wpgmp_shape_events; 8657 $.each(all_shape_events, function (i, shape_event) { 8658 if (shape_event.shape == shape) { 8659 shape_event.url = $("input[name='shape_click_url']").val(); 8660 shape_event.message = $("textarea[name='shape_click_message']").val(); 8661 } 8662 }); 8663 } 8664 8665 wpgmp_shape_complete(shape, type) { 8666 var map_obj = this; 8667 map_obj.setSelection(shape); 8668 map_obj.drawingmanager.setDrawingMode(null); 8669 if (typeof map_obj.map_data.shapes != "undefined") { 8670 if (map_obj.map_data.shapes.drawing_editable === true) { 8671 map_obj.event_listener(shape, "click", function () { 8672 map_obj.setSelection(shape); 8673 map_obj.get_shapes_options(shape, type); 8674 }); 8675 8676 map_obj.wpgmp_shape_events.push({ 8677 shape: shape, 8678 url: "", 8679 message: "", 8680 }); 8681 } 8682 } 8683 } 8684 8685 8686 set_kml_layer() { 8687 var map_obj = this.map; 8688 8689 $.each(this.map_data.kml_layer.kml_layers_links, function (index, link) { 8690 var kmlLayerOptions = { 8691 url: link, 8692 map: map_obj, 8693 preserveViewport: true, 8694 }; 8695 8696 new google.maps.KmlLayer(kmlLayerOptions); 8697 }); 8698 } 8699 8700 set_marker_cluster() { 8701 var map_obj = this; 8702 var markers = []; 8703 var clusterStyles = [ 8704 { 8705 textColor: "black", 8706 url: map_obj.map_data.marker_cluster.icon, 8707 height: 32, 8708 width: 33, 8709 }, 8710 ]; 8711 $.each(this.places, function (index, place) { 8712 if (place.marker.getVisible() == true) { 8713 markers.push(place.marker); 8714 } 8715 }); 8716 8717 if (map_obj.map_data.marker_cluster.apply_style === true) { 8718 if (!map_obj.markerClusterer) { 8719 map_obj.markerClusterer = new MarkerClusterer( 8720 map_obj.map, 8721 {}, 8722 { 8723 gridSize: parseInt(map_obj.map_data.marker_cluster.grid), 8724 maxZoom: parseInt(map_obj.map_data.marker_cluster.max_zoom), 8725 styles: clusterStyles, 8726 } 8727 ); 8728 } 8729 8730 map_obj.markerClusterer.clearMarkers(); 8731 map_obj.markerClusterer.addMarkers(markers); 8732 8733 google.maps.event.addListener( 8734 map_obj.markerClusterer, 8735 "mouseover", 8736 function (c) { 8737 c.clusterIcon_.div_.firstChild.src = 8738 map_obj.map_data.marker_cluster.hover_icon; 8739 } 8740 ); 8741 8742 google.maps.event.addListener( 8743 map_obj.markerClusterer, 8744 "mouseout", 8745 function (c) { 8746 c.clusterIcon_.div_.firstChild.src = 8747 map_obj.map_data.marker_cluster.icon; 8748 } 8749 ); 8750 } else { 8751 if (!map_obj.markerClusterer) { 8752 map_obj.markerClusterer = new MarkerClusterer( 8753 map_obj.map, 8754 {}, 8755 { 8756 gridSize: parseInt(map_obj.map_data.marker_cluster.grid), 8757 maxZoom: parseInt(map_obj.map_data.marker_cluster.max_zoom), 8758 imagePath: map_obj.map_data.marker_cluster.image_path, 8759 } 8760 ); 8761 } 8762 8763 map_obj.markerClusterer.clearMarkers(); 8764 map_obj.markerClusterer.addMarkers(markers); 8765 } 8766 } 8767 8768 set_panning_control() { 8769 var panning_data = this.map_data.panning_control; 8770 var panning_map_obj = this.map; 8771 var map_obj = this; 8772 8773 var strictBounds = new google.maps.LatLngBounds( 8774 new google.maps.LatLng( 8775 panning_data.from_latitude, 8776 panning_data.from_longitude 8777 ), 8778 new google.maps.LatLng( 8779 panning_data.to_latitude, 8780 panning_data.to_longitude 8781 ) 8782 ); 8783 8784 google.maps.event.addListener(panning_map_obj, "dragend", function () { 8785 if (strictBounds.contains(panning_map_obj.getCenter())) return; 8786 8787 var c = panning_map_obj.getCenter(), 8788 x = c.lng(), 8789 y = c.lat(), 8790 maxX = strictBounds.getNorthEast().lng(), 8791 maxY = strictBounds.getNorthEast().lat(),
8792 minX = strictBounds.getSouthWest().lng(), 8793 minY = strictBounds.getSouthWest().lat(); 8794 8795 if (x < minX) x = minX; 8796 if (x > maxX) x = maxX; 8797 if (y < minY) y = minY; 8798 if (y > maxY) y = maxY; 8799 8800 panning_map_obj.setCenter(new google.maps.LatLng(y, x)); 8801 }); 8802 8803 google.maps.event.addListener( 8804 panning_map_obj, 8805 "zoom_changed", 8806 function () { 8807 if (panning_map_obj.getZoom() < panning_data.zoom_level) { 8808 panning_map_obj.setZoom(parseInt(map_obj.settings.zoom)); 8809 } 8810 } 8811 ); 8812 } 8813 8814 set_visual_refresh() { 8815 google.maps.visualRefresh = true; 8816 } 8817 8818 set_45_imagery() { 8819 //this.map.setTilt(45); 8820 } 8821 8822 set_overlay_generator(tileSize, options) { 8823 8824 var overlay_generator = function (tileSize, options) { 8825 8826 this.tileSize = tileSize; 8827 this.overlay_options = options; 8828 if (this.overlay_options.font_size != undefined) { 8829 this.overlay_options.font_size = this.overlay_options.font_size.replace('px', ''); 8830 } else { 8831 this.overlay_options.font_size = '16'; 8832 } 8833 if (this.overlay_options.border_width != undefined) { 8834 this.overlay_options.border_width = this.overlay_options.border_width.replace('px', ''); 8835 } else { 8836 this.overlay_options.border_width = '2'; 8837 } 8838 8839 } 8840 8841 overlay_generator.prototype.getTile = function (coord, zoom, ownerDocument) { 8842 8843 var div = ownerDocument.createElement("div"); 8844 div.innerHTML = coord; 8845 div.style.width = this.tileSize.width; 8846 div.style.height = this.tileSize.height; 8847 div.style.fontSize = this.overlay_options.font_size + "px"; 8848 div.style.borderStyle = this.overlay_options.border_style; 8849 div.style.borderWidth = this.overlay_options.border_width + "px"; 8850 div.style.borderColor = this.overlay_options.border_color; 8851 return div; 8852 }; 8853 8854 return new overlay_generator(tileSize, options); 8855 8856 } 8857 8858 set_overlay() { 8859 if (this.map_data.overlay_setting.width != undefined) { 8860 this.map_data.overlay_setting.width = 8861 this.map_data.overlay_setting.width.replace("px", ""); 8862 } else { 8863 this.map_data.overlay_setting.width = "200"; 8864 } 8865 if (this.map_data.overlay_setting.height != undefined) { 8866 this.map_data.overlay_setting.height = 8867 this.map_data.overlay_setting.height.replace("px", ""); 8868 } else { 8869 this.map_data.overlay_setting.height = "200"; 8870 } 8871 8872 this.map.overlayMapTypes.insertAt( 8873 0, 8874 this.set_overlay_generator( 8875 new google.maps.Size( 8876 this.map_data.overlay_setting.width, 8877 this.map_data.overlay_setting.height 8878 ), 8879 this.map_data.overlay_setting 8880 ) 8881 ); 8882 } 8883 8884 set_bicyle_layer() { 8885 var bikeLayer = new google.maps.BicyclingLayer(); 8886 bikeLayer.setMap(this.map); 8887 } 8888 8889 set_traffic_layer() { 8890 var traffic_layer = new google.maps.TrafficLayer(); 8891 traffic_layer.setMap(this.map); 8892 } 8893 8894 set_panoramic_layer() { 8895 var panoramic_layer = new google.maps.panoramio.PanoramioLayer(); 8896 panoramic_layer.setMap(this.map); 8897 } 8898 8899 set_transit_layer() { 8900 var transit_layer = new google.maps.TransitLayer(); 8901 transit_layer.setMap(this.map); 8902 } 8903 8904 set_weather_layer() { 8905 var weatherLayer = new google.maps.weather.WeatherLayer({ 8906 windSpeedUnit: eval( 8907 "google.maps.weather.WindSpeedUnit." + 8908 this.map_data.weather_layer.wind_unit 8909 ), 8910 temperatureUnits: eval( 8911 "google.maps.weather.TemperatureUnit." + 8912 this.map_data.weather_layer.temperature_unit 8913 ), 8914 }); 8915 8916 weatherLayer.setMap(this.map); 8917 var cloudLayer = new google.maps.weather.CloudLayer(); 8918 cloudLayer.setMap(this.map); 8919 } 8920 8921 set_streetview(latlng) { 8922 var panoOptions = { 8923 position: latlng, 8924 addressControlOptions: { 8925 position: google.maps.ControlPosition.BOTTOM_CENTER, 8926 }, 8927 linksControl: this.map_data.street_view.links_control, 8928 panControl: this.map_data.street_view.street_view_pan_control, 8929 zoomControlOptions: { 8930 style: google.maps.ZoomControlStyle.SMALL, 8931 }, 8932 enableCloseButton: this.map_data.street_view.street_view_close_button, 8933 }; 8934 if ( 8935 this.map_data.street_view.pov_heading && 8936 this.map_data.street_view.pov_pitch 8937 ) { 8938 panoOptions["pov"] = { 8939 heading: parseInt(this.map_data.street_view.pov_heading), 8940 pitch: parseInt(this.map_data.street_view.pov_pitch), 8941 }; 8942 } 8943 var panorama = new google.maps.StreetViewPanorama( 8944 this.element, 8945 panoOptions 8946 ); 8947 } 8948 8949 /** 8950 * Handles post-load setup for Google Maps 8951 * Includes center logic, infowindow cleanup, amenities load, and UI skinning 8952 */ 8953map_loaded() { 8954 const map_obj = this; 8955 const map = map_obj.map; 8956 8957 // Ensure Google map is fully loaded and properly centered after resize 8958 google.maps.event.addListenerOnce(map, "idle", function () { 8959 const center = map.getCenter(); 8960 google.maps.event.trigger(map, "resize"); 8961 map.setCenter(center); 8962 }); 8963 8964 // Optionally center map by user's location 8965 if (map_obj.settings.center_by_nearest === true) { 8966 map_obj.center_by_nearest(); 8967 } 8968 8969 // Close all open infowindows on map click 8970 if (map_obj.settings.close_infowindow_on_map_click === true) { 8971 google.maps.event.addListener(map, "click", function () { 8972 map_obj.places?.forEach((place) => { 8973 place.infowindow?.close(); 8974 place.marker?.setAnimation(null); 8975 }); 8976 }); 8977 } 8978 8979 8980 8981 // DOM Ready styling for Infobox (if custom infowindow skin is active) 8982 google.maps.event.addListener(map_obj.infobox, "domready", function () { 8983 const $outer = $(map_obj.container).find(".infoBox"); 8984 const needsSkin = 8985 $outer.find(".fc-infowindow-default").length === 0 && 8986 $outer.find(".fc-item-default").length === 0 && 8987 $outer.find(".wpgmp_infowindow").length > 0; 8988 8989 //accordian 8990 $outer.on('click', ".fc-accordion-tab", function () { 8991 if ($(this).hasClass('active')) { 8992 $(this).removeClass('active'); 8993 var acc_child = $(this).next().removeClass('active'); 8994 } else { 8995 $(".fc-accordion-tab").removeClass('active'); 8996 $(".fc-accordion dd").removeClass('active'); 8997 $(this).addClass('active'); 8998 var acc_child = $(this).next().addClass('active'); 8999 } 9000 }); 9001 9002 if (needsSkin) { 9003 $outer.find(".wpgmp_infowindow").prepend('<div class="infowindow-close"></div>'); 9004 9005 $(".infowindow-close").click(() => { 9006 map_obj.places?.forEach((place) => { 9007 place.infowindow?.close(); 9008 place.marker?.setAnimation(null); 9009 }); 9010 }); 9011 9012 if ( 9013 $outer.find(".fc-infowindow-fano").length === 0 && 9014 $outer.find(".fc-item-fano").length === 0 9015 ) { 9016 $outer.addClass("infoBoxTail"); 9017 } else { 9018 $outer.removeClass("infoBoxTail"); 9019 } 9020 } 9021 }); 9022 9023} 9024 9025 wpgmpInitializeInfoBox() { 9026 var InfoBox = function (opt_opts) { 9027 opt_opts = opt_opts || {}; 9028 9029 google.maps.OverlayView.apply(this, arguments); 9030 9031 // Standard options (in common with google.maps.InfoWindow): 9032 // 9033 this.content_ = opt_opts.content || ""; 9034 this.disableAutoPan_ = opt_opts.disableAutoPan || false; 9035 this.maxWidth_ = opt_opts.maxWidth || 0; 9036 this.pixelOffset_ = opt_opts.pixelOffset || new google.maps.Size(0, 0); 9037 this.position_ = opt_opts.position || new google.maps.LatLng(0, 0); 9038 this.zIndex_ = opt_opts.zIndex || null; 9039 9040 // Additional options (unique to InfoBox): 9041 // 9042 this.boxClass_ = opt_opts.boxClass || "infoBox"; 9043 this.boxStyle_ = opt_opts.boxStyle || {}; 9044 this.closeBoxMargin_ = opt_opts.closeBoxMargin || "2px"; 9045 this.closeBoxURL_ = 9046 opt_opts.closeBoxURL || 9047 "//www.google.com/intl/en_us/mapfiles/close.gif"; 9048 if (opt_opts.closeBoxURL === "") { 9049 this.closeBoxURL_ = ""; 9050 } 9051 this.closeBoxTitle_ = opt_opts.closeBoxTitle || " Close "; 9052 this.infoBoxClearance_ = 9053 opt_opts.infoBoxClearance || new google.maps.Size(1, 1); 9054 9055 if (typeof opt_opts.visible === "undefined") { 9056 if (typeof opt_opts.isHidden === "undefined") { 9057 opt_opts.visible = true; 9058 } else { 9059 opt_opts.visible = !opt_opts.isHidden; 9060 } 9061 } 9062 this.isHidden_ = !opt_opts.visible; 9063 9064 this.alignBottom_ = opt_opts.alignBottom || false; 9065 this.pane_ = opt_opts.pane || "floatPane"; 9066 this.enableEventPropagation_ = opt_opts.enableEventPropagation || false; 9067 9068 this.div_ = null; 9069 this.closeListener_ = null; 9070 this.moveListener_ = null; 9071 this.contextListener_ = null; 9072 this.eventListeners_ = null; 9073 this.fixedWidthSet_ = null; 9074 }; 9075 9076 InfoBox.prototype = new google.maps.OverlayView(); 9077 9078 /** 9079 * Creates the DIV representing the InfoBox. 9080 * @private 9081 */ 9082 InfoBox.prototype.createInfoBoxDiv_ = function () { 9083 var i; 9084 var events; 9085 var bw; 9086 var me = this; 9087 9088 // This handler prevents an event in the InfoBox from being passed on to the map. 9089 // 9090 var cancelHandler = function (e) { 9091 e.cancelBubble = true; 9092 if (e.stopPropagation) { 9093 e.stopPropagation(); 9094 } 9095 }; 9096 9097 // This handler ignores the current event in the InfoBox and conditionally prevents 9098 // the event from being passed on to the map. It is used for the contextmenu event. 9099 // 9100 var ignoreHandler = function (e) { 9101 e.returnValue = false;
9102 9103 if (e.preventDefault) { 9104 e.preventDefault(); 9105 } 9106 9107 if (!me.enableEventPropagation_) { 9108 cancelHandler(e); 9109 } 9110 }; 9111 9112 if (!this.div_) { 9113 this.div_ = document.createElement("div"); 9114 9115 this.setBoxStyle_(); 9116 9117 if (typeof this.content_.nodeType === "undefined") { 9118 this.div_.innerHTML = this.getCloseBoxImg_() + this.content_; 9119 } else { 9120 this.div_.innerHTML = this.getCloseBoxImg_(); 9121 this.div_.appendChild(this.content_); 9122 } 9123 9124 // Add the InfoBox DIV to the DOM 9125 this.getPanes()[this.pane_].appendChild(this.div_); 9126 9127 this.addClickHandler_(); 9128 9129 if (this.div_.style.width) { 9130 this.fixedWidthSet_ = true; 9131 } else { 9132 if ( 9133 this.maxWidth_ !== 0 && 9134 this.div_.offsetWidth > this.maxWidth_ 9135 ) { 9136 this.div_.style.width = this.maxWidth_; 9137 this.div_.style.overflow = "auto"; 9138 this.fixedWidthSet_ = true; 9139 } else { 9140 // The following code is needed to overcome problems with MSIE 9141 9142 bw = this.getBoxWidths_(); 9143 9144 this.div_.style.width = 9145 this.div_.offsetWidth - bw.left - bw.right + "px"; 9146 this.fixedWidthSet_ = false; 9147 } 9148 } 9149 9150 this.panBox_(this.disableAutoPan_); 9151 9152 if (!this.enableEventPropagation_) { 9153 this.eventListeners_ = []; 9154 9155 // Cancel event propagation. 9156 // 9157 // Note: mousemove not included (to resolve Issue 152) 9158 events = [ 9159 "mousedown", 9160 "mouseover", 9161 "mouseout", 9162 "mouseup", 9163 "click", 9164 "dblclick", 9165 "touchstart", 9166 "touchend", 9167 "touchmove", 9168 ]; 9169 9170 for (i = 0; i < events.length; i++) { 9171 this.eventListeners_.push( 9172 this.div_.addEventListener( 9173 events[i], 9174 cancelHandler 9175 ) 9176 ); 9177 } 9178 9179 // Workaround for Google bug that causes the cursor to change to a pointer 9180 // when the mouse moves over a marker underneath InfoBox. 9181 this.eventListeners_.push( 9182 this.div_.addEventListener( 9183 "mouseover", 9184 function (e) { 9185 this.style.cursor = "default"; 9186 } 9187 ) 9188 ); 9189 } 9190 9191 this.contextListener_ = this.div_.addEventListener( 9192 "contextmenu", 9193 ignoreHandler 9194 ); 9195 9196 /** 9197 * This event is fired when the DIV containing the InfoBox's content is attached to the DOM. 9198 * @name InfoBox#domready 9199 * @event 9200 */ 9201 google.maps.event.trigger(this, "domready"); 9202 } 9203 }; 9204 9205 /** 9206 * Returns the HTML <IMG> tag for the close box. 9207 * @private 9208 */ 9209 InfoBox.prototype.getCloseBoxImg_ = function () { 9210 var img = ""; 9211 9212 if (this.closeBoxURL_ !== "") { 9213 img = "<img"; 9214 img += " src='" + this.closeBoxURL_ + "'"; 9215 img += " align=right"; // Do this because Opera chokes on style='float: right;' 9216 img += " title='" + this.closeBoxTitle_ + "'"; 9217 img += " style='"; 9218 img += " position: relative;"; // Required by MSIE 9219 img += " cursor: pointer;"; 9220 img += " margin: " + this.closeBoxMargin_ + ";"; 9221 img += "'>"; 9222 } 9223 9224 return img; 9225 }; 9226 9227 /** 9228 * Adds the click handler to the InfoBox close box. 9229 * @private 9230 */ 9231 InfoBox.prototype.addClickHandler_ = function () { 9232 var closeBox; 9233 9234 if (this.closeBoxURL_ !== "") { 9235 closeBox = this.div_.firstChild; 9236 this.closeListener_ = closeBox.addEventListener( 9237 "click", 9238 this.getCloseClickHandler_() 9239 ); 9240 } else { 9241 this.closeListener_ = null; 9242 } 9243 }; 9244 9245 /** 9246 * Returns the function to call when the user clicks the close box of an InfoBox. 9247 * @private 9248 */ 9249 InfoBox.prototype.getCloseClickHandler_ = function () { 9250 var me = this; 9251 9252 return function (e) { 9253 // 1.0.3 fix: Always prevent propagation of a close box click to the map: 9254 e.cancelBubble = true; 9255 9256 if (e.stopPropagation) { 9257 e.stopPropagation(); 9258 } 9259 9260 /**
9261 * This event is fired when the InfoBox's close box is clicked. 9262 * @name InfoBox#closeclick 9263 * @event 9264 */ 9265 google.maps.event.trigger(me, "closeclick"); 9266 9267 me.close(); 9268 }; 9269 }; 9270 9271 /** 9272 * Pans the map so that the InfoBox appears entirely within the map's visible area. 9273 * @private 9274 */ 9275 InfoBox.prototype.panBox_ = function (disablePan) { 9276 var map; 9277 var bounds; 9278 var xOffset = 0, 9279 yOffset = 0; 9280 9281 if (!disablePan) { 9282 map = this.getMap(); 9283 9284 if (map instanceof google.maps.Map) { 9285 // Only pan if attached to map, not panorama 9286 9287 if (!map.getBounds().contains(this.position_)) { 9288 // Marker not in visible area of map, so set center 9289 // of map to the marker position first. 9290 map.setCenter(this.position_); 9291 } 9292 9293 var iwOffsetX = this.pixelOffset_.width; 9294 var iwOffsetY = this.pixelOffset_.height; 9295 var iwWidth = this.div_.offsetWidth; 9296 var iwHeight = this.div_.offsetHeight; 9297 var padX = this.infoBoxClearance_.width; 9298 var padY = this.infoBoxClearance_.height; 9299 9300 if (map.panToBounds.length == 2) { 9301 // Using projection.fromLatLngToContainerPixel to compute the infowindow position 9302 // does not work correctly anymore for JS Maps API v3.32 and above if there is a 9303 // previous synchronous call that causes the map to animate (e.g. setCenter when 9304 // the position is not within bounds). Hence, we are using panToBounds with 9305 // padding instead, which works synchronously. 9306 var padding = { 9307 left: 0, 9308 right: 0, 9309 top: 0, 9310 bottom: 0, 9311 }; 9312 padding.left = -iwOffsetX + padX; 9313 padding.right = iwOffsetX + iwWidth + padX; 9314 if (this.alignBottom_) { 9315 padding.top = -iwOffsetY + padY + iwHeight; 9316 padding.bottom = iwOffsetY + padY; 9317 } else { 9318 padding.top = -iwOffsetY + padY; 9319 padding.bottom = iwOffsetY + iwHeight + padY; 9320 } 9321 map.panToBounds( 9322 new google.maps.LatLngBounds(this.position_), 9323 padding 9324 ); 9325 } else { 9326 var mapDiv = map.getDiv(); 9327 var mapWidth = mapDiv.offsetWidth; 9328 var mapHeight = mapDiv.offsetHeight; 9329 var pixPosition = this.getProjection().fromLatLngToContainerPixel( 9330 this.position_ 9331 ); 9332 9333 if (pixPosition.x < -iwOffsetX + padX) { 9334 xOffset = pixPosition.x + iwOffsetX - padX; 9335 } else if ( 9336 pixPosition.x + iwWidth + iwOffsetX + padX > 9337 mapWidth 9338 ) { 9339 xOffset = pixPosition.x + iwWidth + iwOffsetX + padX - mapWidth; 9340 } 9341 if (this.alignBottom_) { 9342 if (pixPosition.y < -iwOffsetY + padY + iwHeight) { 9343 yOffset = pixPosition.y + iwOffsetY - padY - iwHeight; 9344 } else if (pixPosition.y + iwOffsetY + padY > mapHeight) { 9345 yOffset = pixPosition.y + iwOffsetY + padY - mapHeight; 9346 } 9347 } else { 9348 if (pixPosition.y < -iwOffsetY + padY) { 9349 yOffset = pixPosition.y + iwOffsetY - padY; 9350 } else if ( 9351 pixPosition.y + iwHeight + iwOffsetY + padY > 9352 mapHeight 9353 ) { 9354 yOffset = 9355 pixPosition.y + iwHeight + iwOffsetY + padY - mapHeight; 9356 } 9357 } 9358 9359 if (!(xOffset === 0 && yOffset === 0)) { 9360 // Move the map to the shifted center. 9361 // 9362 var c = map.getCenter(); 9363 map.panBy(xOffset, yOffset); 9364 } 9365 } 9366 } 9367 } 9368 }; 9369 9370 /** 9371 * Sets the style of the InfoBox by setting the style sheet and applying 9372 * other specific styles requested. 9373 * @private 9374 */ 9375 InfoBox.prototype.setBoxStyle_ = function () { 9376 var i, boxStyle; 9377 9378 if (this.div_) { 9379 // Apply style values from the style sheet defined in the boxClass parameter: 9380 this.div_.className = this.boxClass_; 9381 9382 // Clear existing inline style values: 9383 this.div_.style.cssText = ""; 9384 9385 // Apply style values defined in the boxStyle parameter: 9386 boxStyle = this.boxStyle_; 9387 for (i in boxStyle) { 9388 if (boxStyle.hasOwnProperty(i)) { 9389 this.div_.style[i] = boxStyle[i]; 9390 } 9391 } 9392 9393 // Fix for iOS disappearing InfoBox problem. 9394 // See http://stackoverflow.com/questions/9229535/google-maps-markers-disappear-at-certain-zoom-level-only-on-iphone-ipad 9395 // Required: use "matrix" technique to specify transforms in order to avoid this bug. 9396 if ( 9397 typeof this.div_.style.WebkitTransform === "undefined" || 9398 (this.div_.style.WebkitTransform.indexOf("translateZ") === -1 && 9399 this.div_.style.WebkitTransform.indexOf("matrix") === -1) 9400 ) { 9401 this.div_.style.WebkitTransform = "translateZ(0)"; 9402 } 9403
vendor: 6,831 bytes, lines 9404-9602
9404 // Fix up opacity style for benefit of MSIE: 9405 // 9406 if ( 9407 typeof this.div_.style.opacity !== "undefined" && 9408 this.div_.style.opacity !== "" 9409 ) { 9410 // See http://www.quirksmode.org/css/opacity.html 9411 this.div_.style.MsFilter = 9412 '"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + 9413 this.div_.style.opacity * 100 + 9414 ')"'; 9415 this.div_.style.filter = 9416 "alpha(opacity=" + this.div_.style.opacity * 100 + ")"; 9417 } 9418 9419 // Apply required styles: 9420 // 9421 this.div_.style.position = "absolute"; 9422 this.div_.style.visibility = "hidden"; 9423 if (this.zIndex_ !== null) { 9424 this.div_.style.zIndex = this.zIndex_; 9425 } 9426 } 9427 }; 9428 9429 /** 9430 * Get the widths of the borders of the InfoBox. 9431 * @private 9432 * @return {Object} widths object (top, bottom left, right) 9433 */ 9434 InfoBox.prototype.getBoxWidths_ = function () { 9435 var computedStyle; 9436 var bw = { 9437 top: 0, 9438 bottom: 0, 9439 left: 0, 9440 right: 0, 9441 }; 9442 var box = this.div_; 9443 9444 if (document.defaultView && document.defaultView.getComputedStyle) { 9445 computedStyle = box.ownerDocument.defaultView.getComputedStyle( 9446 box, 9447 "" 9448 ); 9449 9450 if (computedStyle) { 9451 // The computed styles are always in pixel units (good!) 9452 bw.top = parseInt(computedStyle.borderTopWidth, 10) || 0; 9453 bw.bottom = parseInt(computedStyle.borderBottomWidth, 10) || 0; 9454 bw.left = parseInt(computedStyle.borderLeftWidth, 10) || 0; 9455 bw.right = parseInt(computedStyle.borderRightWidth, 10) || 0; 9456 } 9457 } else if (document.documentElement.currentStyle) { 9458 // MSIE 9459 9460 if (box.currentStyle) { 9461 // The current styles may not be in pixel units, but assume they are (bad!) 9462 bw.top = parseInt(box.currentStyle.borderTopWidth, 10) || 0; 9463 bw.bottom = parseInt(box.currentStyle.borderBottomWidth, 10) || 0; 9464 bw.left = parseInt(box.currentStyle.borderLeftWidth, 10) || 0; 9465 bw.right = parseInt(box.currentStyle.borderRightWidth, 10) || 0; 9466 } 9467 } 9468 9469 return bw; 9470 }; 9471 9472 /** 9473 * Invoked when <tt>close</tt> is called. Do not call it directly. 9474 */ 9475 InfoBox.prototype.onRemove = function () { 9476 if (this.div_) { 9477 this.div_.parentNode.removeChild(this.div_); 9478 this.div_ = null; 9479 } 9480 }; 9481 9482 /** 9483 * Draws the InfoBox based on the current map projection and zoom level. 9484 */ 9485 InfoBox.prototype.draw = function () { 9486 this.createInfoBoxDiv_(); 9487 9488 var pixPosition = this.getProjection().fromLatLngToDivPixel( 9489 this.position_ 9490 ); 9491 9492 this.div_.style.left = pixPosition.x + this.pixelOffset_.width + "px"; 9493 9494 if (this.alignBottom_) { 9495 this.div_.style.bottom = 9496 -(pixPosition.y + this.pixelOffset_.height) + "px"; 9497 } else { 9498 this.div_.style.top = pixPosition.y + this.pixelOffset_.height + "px"; 9499 } 9500 9501 if (this.isHidden_) { 9502 this.div_.style.visibility = "hidden"; 9503 } else { 9504 this.div_.style.visibility = "visible"; 9505 } 9506 }; 9507 9508 /** 9509 * Sets the options for the InfoBox. Note that changes to the <tt>maxWidth</tt>, 9510 * <tt>closeBoxMargin</tt>, <tt>closeBoxTitle</tt>, <tt>closeBoxURL</tt>, and 9511 * <tt>enableEventPropagation</tt> properties have no affect until the current 9512 * InfoBox is <tt>close</tt>d and a new one is <tt>open</tt>ed. 9513 * @param {InfoBoxOptions} opt_opts 9514 */ 9515 InfoBox.prototype.setOptions = function (opt_opts) { 9516 if (typeof opt_opts.boxClass !== "undefined") { 9517 // Must be first 9518 9519 this.boxClass_ = opt_opts.boxClass; 9520 this.setBoxStyle_(); 9521 } 9522 if (typeof opt_opts.boxStyle !== "undefined") { 9523 // Must be second 9524 9525 this.boxStyle_ = opt_opts.boxStyle; 9526 this.setBoxStyle_(); 9527 } 9528 if (typeof opt_opts.content !== "undefined") { 9529 this.setContent(opt_opts.content); 9530 } 9531 if (typeof opt_opts.disableAutoPan !== "undefined") { 9532 this.disableAutoPan_ = opt_opts.disableAutoPan; 9533 } 9534 if (typeof opt_opts.maxWidth !== "undefined") { 9535 this.maxWidth_ = opt_opts.maxWidth; 9536 } 9537 if (typeof opt_opts.pixelOffset !== "undefined") { 9538 this.pixelOffset_ = opt_opts.pixelOffset; 9539 } 9540 if (typeof opt_opts.alignBottom !== "undefined") { 9541 this.alignBottom_ = opt_opts.alignBottom; 9542 } 9543 if (typeof opt_opts.position !== "undefined") { 9544 this.setPosition(opt_opts.position); 9545 } 9546 if (typeof opt_opts.zIndex !== "undefined") { 9547 this.setZIndex(opt_opts.zIndex); 9548 } 9549 if (typeof opt_opts.closeBoxMargin !== "undefined") { 9550 this.closeBoxMargin_ = opt_opts.closeBoxMargin; 9551 } 9552 if (typeof opt_opts.closeBoxURL !== "undefined") { 9553 this.closeBoxURL_ = opt_opts.closeBoxURL; 9554 } 9555 if (typeof opt_opts.closeBoxTitle !== "undefined") { 9556 this.closeBoxTitle_ = opt_opts.closeBoxTitle; 9557 } 9558 if (typeof opt_opts.infoBoxClearance !== "undefined") { 9559 this.infoBoxClearance_ = opt_opts.infoBoxClearance; 9560 } 9561 if (typeof opt_opts.isHidden !== "undefined") { 9562 this.isHidden_ = opt_opts.isHidden; 9563 } 9564 if (typeof opt_opts.visible !== "undefined") { 9565 this.isHidden_ = !opt_opts.visible; 9566 } 9567 if (typeof opt_opts.enableEventPropagation !== "undefined") { 9568 this.enableEventPropagation_ = opt_opts.enableEventPropagation; 9569 } 9570 9571 if (this.div_) { 9572 this.draw(); 9573 } 9574 }; 9575 9576 /** 9577 * Sets the content of the InfoBox. 9578 * The content can be plain text or an HTML DOM node. 9579 * @param {string|Node} content 9580 */ 9581 InfoBox.prototype.setContent = function (content) { 9582 this.content_ = content; 9583 9584 if (this.div_) { 9585 if (this.closeListener_) { 9586 google.maps.event.removeListener(this.closeListener_); 9587 this.closeListener_ = null; 9588 } 9589 9590 // Odd code required to make things work with MSIE. 9591 // 9592 if (!this.fixedWidthSet_) { 9593 this.div_.style.width = ""; 9594 } 9595 9596 if (typeof content.nodeType === "undefined") { 9597 this.div_.innerHTML = this.getCloseBoxImg_() + content; 9598 } else { 9599 this.div_.innerHTML = this.getCloseBoxImg_(); 9600 this.div_.appendChild(content); 9601 } 9602
9603 // Perverse code required to make things work with MSIE. 9604 // (Ensures the close box does, in fact, float to the right.) 9605 // 9606 if (!this.fixedWidthSet_) { 9607 this.div_.style.width = this.div_.offsetWidth + "px"; 9608 if (typeof content.nodeType === "undefined") { 9609 this.div_.innerHTML = this.getCloseBoxImg_() + content; 9610 } else { 9611 this.div_.innerHTML = this.getCloseBoxImg_(); 9612 this.div_.appendChild(content); 9613 } 9614 } 9615 9616 this.addClickHandler_(); 9617 } 9618 9619 /** 9620 * This event is fired when the content of the InfoBox changes. 9621 * @name InfoBox#content_changed 9622 * @event 9623 */ 9624 google.maps.event.trigger(this, "content_changed"); 9625 }; 9626 9627 /** 9628 * Sets the geographic location of the InfoBox. 9629 * @param {LatLng} latlng 9630 */ 9631 InfoBox.prototype.setPosition = function (latlng) { 9632 this.position_ = latlng; 9633 9634 if (this.div_) { 9635 this.draw(); 9636 } 9637 9638 /** 9639 * This event is fired when the position of the InfoBox changes. 9640 * @name InfoBox#position_changed 9641 * @event 9642 */ 9643 google.maps.event.trigger(this, "position_changed"); 9644 }; 9645 9646 /** 9647 * Sets the zIndex style for the InfoBox. 9648 * @param {number} index 9649 */ 9650 InfoBox.prototype.setZIndex = function (index) { 9651 this.zIndex_ = index; 9652 9653 if (this.div_) { 9654 this.div_.style.zIndex = index; 9655 } 9656 9657 /** 9658 * This event is fired when the zIndex of the InfoBox changes. 9659 * @name InfoBox#zindex_changed 9660 * @event 9661 */ 9662 google.maps.event.trigger(this, "zindex_changed"); 9663 }; 9664 9665 /** 9666 * Sets the visibility of the InfoBox. 9667 * @param {boolean} isVisible 9668 */ 9669 InfoBox.prototype.setVisible = function (isVisible) { 9670 this.isHidden_ = !isVisible; 9671 if (this.div_) { 9672 this.div_.style.visibility = this.isHidden_ ? "hidden" : "visible"; 9673 } 9674 }; 9675 9676 /** 9677 * Returns the content of the InfoBox. 9678 * @returns {string} 9679 */ 9680 InfoBox.prototype.getContent = function () { 9681 return this.content_; 9682 }; 9683 9684 /** 9685 * Returns the geographic location of the InfoBox. 9686 * @returns {LatLng} 9687 */ 9688 InfoBox.prototype.getPosition = function () { 9689 return this.position_; 9690 }; 9691 9692 /** 9693 * Returns the zIndex for the InfoBox. 9694 * @returns {number} 9695 */ 9696 InfoBox.prototype.getZIndex = function () { 9697 return this.zIndex_; 9698 }; 9699 9700 /** 9701 * Returns a flag indicating whether the InfoBox is visible. 9702 * @returns {boolean} 9703 */ 9704 InfoBox.prototype.getVisible = function () { 9705 var isVisible; 9706 9707 if (typeof this.getMap() === "undefined" || this.getMap() === null) { 9708 isVisible = false; 9709 } else { 9710 isVisible = !this.isHidden_; 9711 } 9712 return isVisible; 9713 }; 9714 9715 /** 9716 * Returns the width of the InfoBox in pixels. 9717 * @returns {number} 9718 */ 9719 InfoBox.prototype.getWidth = function () { 9720 var width = null; 9721 9722 if (this.div_) { 9723 width = this.div_.offsetWidth; 9724 } 9725 9726 return width; 9727 }; 9728 9729 /** 9730 * Returns the height of the InfoBox in pixels. 9731 * @returns {number} 9732 */ 9733 InfoBox.prototype.getHeight = function () { 9734 var height = null; 9735 9736 if (this.div_) { 9737 height = this.div_.offsetHeight; 9738 } 9739 9740 return height; 9741 }; 9742 9743 /** 9744 * Shows the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.] 9745 */ 9746 InfoBox.prototype.show = function () { 9747 this.isHidden_ = false; 9748 if (this.div_) { 9749 this.div_.style.visibility = "visible"; 9750 } 9751 }; 9752 9753 /** 9754 * Hides the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.] 9755 */ 9756 InfoBox.prototype.hide = function () { 9757 this.isHidden_ = true; 9758 if (this.div_) { 9759 this.div_.style.visibility = "hidden"; 9760 } 9761 }; 9762 9763 /** 9764 * Adds the InfoBox to the specified map or Street View panorama. If <tt>anchor</tt> 9765 * (usually a <tt>google.maps.Marker</tt>) is specified, the position 9766 * of the InfoBox is set to the position of the <tt>anchor</tt>. If the
9767 * anchor is dragged to a new location, the InfoBox moves as well. 9768 * @param {Map|StreetViewPanorama} map 9769 * @param {MVCObject} [anchor] 9770 */ 9771 InfoBox.prototype.open = function (map, anchor) { 9772 var me = this; 9773 9774 if (anchor) { 9775 this.setPosition(anchor.getPosition()); // BUG FIX 2/17/2018: needed for v3.32 9776 this.moveListener_ = google.maps.event.addListener( 9777 anchor, 9778 "position_changed", 9779 function () { 9780 me.setPosition(this.getPosition()); 9781 } 9782 ); 9783 } 9784 9785 this.setMap(map); 9786 9787 if (this.div_) { 9788 this.panBox_(this.disableAutoPan_); // BUG FIX 2/17/2018: add missing parameter 9789 } 9790 }; 9791 9792 /** 9793 * Removes the InfoBox from the map. 9794 */ 9795 InfoBox.prototype.close = function () { 9796 var i; 9797 9798 if (this.closeListener_) { 9799 google.maps.event.removeListener(this.closeListener_); 9800 this.closeListener_ = null; 9801 } 9802 9803 if (this.eventListeners_) { 9804 for (i = 0; i < this.eventListeners_.length; i++) { 9805 google.maps.event.removeListener(this.eventListeners_[i]); 9806 } 9807 this.eventListeners_ = null; 9808 } 9809 9810 if (this.moveListener_) { 9811 google.maps.event.removeListener(this.moveListener_); 9812 this.moveListener_ = null; 9813 } 9814 9815 if (this.contextListener_) { 9816 google.maps.event.removeListener(this.contextListener_); 9817 this.contextListener_ = null; 9818 } 9819 9820 this.setMap(null); 9821 }; 9822 9823 return new InfoBox(); 9824 } 9825 } 9826 9827 window.WpgmpGoogleMaps = WpgmpGoogleMaps; 9828})(jQuery, window, document); 9829 9830/** 9831 * WpgmpLeafletMaps class - extends BaseMaps for Leaflet provider. 9832 */ 9833 9834(function ($, window, document) { 9835 class WpgmpLeafletMaps extends WpgmpBaseMaps { 9836 constructor(element, map_data = {}, places = []) { 9837 super(element, map_data, places); 9838 9839 const options = this.map_data.map_options; 9840 this.settings = $.extend( 9841 { 9842 min_zoom: "0", 9843 9844 max_zoom: "19", 9845 9846 zoom: "5", 9847 9848 map_type_id: "mapbox.streets", 9849 9850 scroll_wheel: true, 9851 9852 map_visual_refresh: false, 9853 9854 full_screen_control: false, 9855 9856 full_screen_control_position: "bottomright", 9857 9858 zoom_control: true, 9859 9860 zoom_control_style: "SMALL", 9861 9862 zoom_control_position: "topleft", 9863 9864 map_type_control: true, 9865 9866 map_type_control_style: "HORIZONTAL_BAR", 9867 9868 map_type_control_position: "topright", 9869 9870 scale_control: true, 9871 9872 overview_map_control: true, 9873 9874 center_lat: "40.6153983", 9875 9876 center_lng: "-74.2535216", 9877 9878 draggable: true, 9879 9880 gesture: "auto", 9881 9882 infowindow_open_event: "click", 9883 map_tile_url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", 9884 search_control: false, 9885 locateme_control: false, 9886 map_type_control: false, 9887 }, 9888 {}, 9889 options 9890 ); 9891 9892 this.container = $("div[rel='" + $(this.element).attr("id") + "']"); 9893 9894 this.places = []; 9895 9896 this.show_places = []; 9897 9898 this.categories = {}; 9899 9900 this.tabs = []; 9901 9902 this.per_page_value = 0; 9903 9904 this.last_remove_cat_id = ""; 9905 9906 this.last_selected_cat_id = ""; 9907 9908 this.last_category_chkbox_action = ""; 9909 9910 this.search_area = ""; 9911 9912 this.url_filters = []; 9913 9914 this.mbAttr = 9915 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>'; 9916 9917 this.mbURL = ""; 9918 9919 this.isMobile = false; 9920 9921 this.bingmaplayers = {}; 9922 this.infowindow_marker = L.popup({ 9923 closeOnClick: this.settings.close_infowindow_on_map_click === true, 9924 }); 9925 } 9926 9927 /** 9928 * Initializes and renders the Leaflet map with full configuration. 9929 * 9930 * Breakdown of steps: 9931 * 1. Device & screen detection with mobile-specific settings 9932 * 2. Leaflet map initialization using selected provider (Mapbox, or Custom Tile) 9933 * 3. Adds common map controls (zoom, scale, fullscreen, locate) 9934 * 4. Registers dynamic map style switchers and dropdown UI controls 9935 * 5. Builds and displays markers, adjusts layout responsively 9936 * 6. Sets up listings, filtering, sorting, and pagination 9937 * 7. Handles GeoJSON, marker interactions, and scroll-to behavior 9938 * 8. Configures category/location tabs, filter checkboxes, and dynamic content toggles 9939 * 9. Enables accordion UI, autosuggest search, and direction panel logic 9940 * 10. Registers all final event listeners (print, radius change, per-page switch, etc.) 9941 */ 9942 9943 init() { 9944 const map_obj = this; 9945 9946 // Fix default Leaflet marker icon path 9947 delete L.Icon.Default.prototype._getIconUrl; 9948 9949 L.Icon.Default.mergeOptions({ 9950 iconRetinaUrl: wpgmp_local.default_marker_icon, 9951 iconUrl: wpgmp_local.default_marker_icon, 9952 shadowUrl: wpgmp_local.default_marker_icon, 9953 }); 9954 9955 // -------------------------------------------------- 9956 // 1. Device Detection and Responsive Settings 9957 // -------------------------------------------------- 9958 const screenWidth = $(window).width(); 9959 const screenType = 9960 screenWidth <= 480 9961 ? "smartphones" 9962 : screenWidth <= 768 9963 ? "ipads" 9964 : screenWidth >= 1824 9965 ? "large-screens" 9966 : "desktop"; 9967 9968 map_obj.isMobile = 9969 screenType !== "desktop" && map_obj.settings.mobile_specific === true; 9970 9971 if (map_obj.isMobile) { 9972 const screenConfig = map_obj.settings.screens?.[screenType]; 9973 9974 if (screenConfig) {
9975 Object.assign(map_obj.settings, { 9976 width_mobile: screenConfig.map_width_mobile, 9977 height_mobile: screenConfig.map_height_mobile, 9978 zoom: parseInt(screenConfig.map_zoom_level_mobile), 9979 draggable: screenConfig.map_draggable_mobile !== "false", 9980 scroll_wheel: screenConfig.map_scrolling_wheel_mobile !== "false", 9981 }); 9982 } else { 9983 map_obj.settings.width_mobile = ""; 9984 map_obj.settings.height_mobile = ""; 9985 } 9986 9987 if (map_obj.settings.width_mobile) 9988 $(map_obj.element).css("width", map_obj.settings.width_mobile); 9989 9990 if (map_obj.settings.height_mobile) 9991 $(map_obj.element).css("height", map_obj.settings.height_mobile); 9992 } 9993 9994 // -------------------------------------------------- 9995 // 2. Map Options 9996 // -------------------------------------------------- 9997 const center = L.latLng( 9998 map_obj.settings.center_lat, 9999 map_obj.settings.center_lng 10000 ); 10001 10002 const options = { 10003 center, 10004 zoom: parseInt(map_obj.settings.zoom), 10005 minZoom: parseInt(map_obj.settings.min_zoom), 10006 maxZoom: parseInt(map_obj.settings.max_zoom), 10007 scrollWheelZoom: map_obj.settings.scroll_wheel !== "true", 10008 doubleClickZoom: map_obj.settings.doubleclickzoom === true, 10009 dragging: map_obj.settings.draggable, 10010 zoomControl: false, 10011 attributionControl: map_obj.settings.attribution_screen_control, 10012 closePopupOnClick: 10013 map_obj.settings.close_infowindow_on_map_click === true, 10014 }; 10015 10016 // -------------------------------------------------- 10017 // 3. Map Provider Setup 10018 // -------------------------------------------------- 10019 const provider = 10020 map_obj.settings.tiles_provider || 10021 wpgmp_local.tiles_provider || 10022 "OpenStreetMap.Mapnik"; 10023 const mapElement = map_obj.element; 10024 try { 10025 // Special case: Bing Maps (not supported by Leaflet Providers) 10026 try { 10027 // Special case: Bing Maps (not in Leaflet Providers) 10028 if (provider === "bingmap" && wpgmp_local.wpomp_bingmap_key) { 10029 const apiKey = wpgmp_local.wpomp_bingmap_key; 10030 const defaults = { key: apiKey, detectRetina: true }; 10031 map_obj.bingmaplayers = {}; 10032 10033 [ 10034 "Aerial", 10035 "AerialWithLabelsOnDemand", 10036 "RoadOnDemand", 10037 "CanvasDark", 10038 "CanvasLight", 10039 "CanvasGray", 10040 ].forEach((type) => { 10041 map_obj.bingmaplayers[type] = L.bingLayer({ 10042 ...defaults, 10043 imagerySet: type, 10044 }); 10045 }); 10046 10047 map_obj.bingmaplayers["CanvasGray"].addTo(map_obj.map); 10048 } 10049 // Standard Leaflet Providers support nested "BasemapAT.grau", "CartoDB.Positron", etc. 10050 else { 10051 map_obj.map = L.map(mapElement, options); 10052 L.tileLayer 10053 .provider(provider, { accessToken: wpgmp_local.wpgmp_mapbox_key }) 10054 .addTo(map_obj.map); 10055 } 10056 } catch (error) { 10057 console.error( 10058 "Error loading map tiles from provider:", 10059 provider, 10060 error 10061 ); 10062 } 10063 } catch (error) { 10064 console.error("Error initializing tile layer:", error); 10065 } 10066 10067 // -------------------------------------------------- 10068 // 4. Controls (Zoom, Scale, Fullscreen, Locate) 10069 // -------------------------------------------------- 10070 if (map_obj.settings.scale_control) { 10071 L.control.scale({ position: "bottomleft" }).addTo(map_obj.map); 10072 } 10073 10074 if (map_obj.settings.zoom_control === true) { 10075 L.control 10076 .zoom({ 10077 position: map_obj.settings.zoom_control_position, 10078 }) 10079 .addTo(map_obj.map); 10080 } 10081 10082 if (map_obj.settings.full_screen_control === true) { 10083 map_obj.map.addControl( 10084 new L.Control.Fullscreen({ 10085 position: map_obj.settings.full_screen_control_position, 10086 }) 10087 ); 10088 } 10089 10090 if (map_obj.map_data.page === "edit_location") { 10091 setTimeout(() => map_obj.map.invalidateSize(true), 300); 10092 } 10093 10094 // -------------------------------------------------- 10095 // 5. Map Type Control / Style Dropdowns 10096 // -------------------------------------------------- 10097 if (map_obj.settings.map_type_control) { 10098 let mapStylesMarkup = map_obj.settings.openstreet_styles_markup; 10099 if (provider === "mapbox") 10100 mapStylesMarkup = map_obj.settings.map_box_styles_markup; 10101 10102 const MapStyleControl = L.Control.extend({ 10103 options: { position: map_obj.settings.map_type_control_position }, 10104 onAdd() { 10105 const div = L.DomUtil.create("div", "info legend"); 10106 div.innerHTML = mapStylesMarkup; 10107 div.firstChild.onmousedown = div.firstChild.ondblclick = 10108 L.DomEvent.stopPropagation; 10109 return div; 10110 }, 10111 }); 10112 10113 map_obj.map.addControl(new MapStyleControl()); 10114 10115 // Map style dropdowns for providers 10116 $(document).on("change", "select.wpomp_map_type", function () { 10117 const config = map_obj.settings.openstreet_styles[$(this).val()]; 10118 L.tileLayer(config, { 10119 maxZoom: parseInt(map_obj.settings.max_zoom), 10120 }).addTo(map_obj.map); 10121 }); 10122 10123 $(document).on("change", "select.wpomp_mapbox_type", function () { 10124 const tile_url = `https://api.mapbox.com/styles/v1/mapbox/${$( 10125 this 10126 ).val()}/tiles/{z}/{x}/{y}?access_token=${
10127 wpgmp_local.wpgmp_mapbox_key 10128 }`; 10129 L.tileLayer(tile_url, { 10130 maxZoom: parseInt(map_obj.settings.max_zoom), 10131 }).addTo(map_obj.map); 10132 }); 10133 } 10134 10135 // Further sections to be optimized next: 10136 // - Marker creation, listing integration, and filters 10137 // - Event bindings and route controls 10138 // -------------------------------------------------- 10139 // 6. Marker Creation, Responsive Layout & Listings 10140 // -------------------------------------------------- 10141 10142 // Create and display all markers 10143 map_obj.create_markers(); 10144 map_obj.display_markers(); 10145 10146 // Load Google Fonts if defined 10147 if (typeof map_obj.settings.google_fonts !== "undefined") { 10148 map_obj.load_google_fonts(map_obj.settings.google_fonts); 10149 } 10150 10151 // Capture initial HTML listing content for advanced template 10152 if (map_obj.map_data.map_options?.advance_template === true) { 10153 const listingEl = document.querySelector( 10154 '[data-listing-content="true"][data-wpgmp-map-id]' 10155 ); 10156 if (listingEl?.innerHTML) { 10157 map_obj.map_data.listing.listing_placeholder = listingEl.innerHTML; 10158 } 10159 } 10160 10161 // Fire map loaded hook 10162 map_obj.map_loaded(); 10163 // Adjust layout based on screen/mobile settings 10164 map_obj.responsive_map(); 10165 10166 // Show search control box if enabled 10167 if (map_obj.settings.search_control === true) { 10168 map_obj.show_search_control(); 10169 } 10170 10171 // Show locateme control if enabled 10172 if (map_obj.settings.locateme_control === true) { 10173 map_obj.register_locate_me_control(); 10174 } 10175 10176 // Further sections to be optimized next: 10177 // - Listing pagination & sorting 10178 // - Filter UI and update handlers 10179 // - Tabs, accordions, events, and route direction logic 10180 10181 // -------------------------------------------------- 10182 // 7. Listing Pagination, Sorting, and Filters 10183 // -------------------------------------------------- 10184 10185 const listing = map_obj.map_data.listing; 10186 10187 // Sort default if defined 10188 if (listing?.default_sorting) { 10189 const sort = listing.default_sorting; 10190 const dataType = sort.orderby === "listorder" ? "num" : ""; 10191 map_obj.sorting(sort.orderby, sort.inorder, dataType); 10192 } 10193 10194 // If no listing, but tab filters exist (e.g. category tab sorting) 10195 const tabs = map_obj.map_data.map_tabs; 10196 if (!listing && tabs?.category_tab?.cat_tab) { 10197 const catTab = tabs.category_tab; 10198 const order = catTab.cat_post_order ?? "asc"; 10199 map_obj.sorting("title", order); 10200 } 10201 10202 // Pagination UI 10203 if (listing) { 10204 $(map_obj.container).on("click", ".categories_filter_reset_btn", () => { 10205 $(map_obj.container) 10206 .find(".wpgmp_filter_wrappers select") 10207 .each(function () { 10208 $(this).val($(this).find("option:first").val()); 10209 }); 10210 10211 $(".wpgmp_search_input").val(""); 10212 map_obj.update_filters(); 10213 }); 10214 10215 // Custom filters 10216 map_obj.display_filters_listing(); 10217 map_obj.custom_filters(); 10218 10219 // Pagination plugin 10220 $(map_obj.container) 10221 .find(`.location_pagination${map_obj.map_data.map_property.map_id}`) 10222 .pagination(map_obj.show_places.length, { 10223 callback: map_obj.display_places_listing, 10224 map_data: map_obj, 10225 items_per_page: listing.pagination.listing_per_page, 10226 prev_text: wpgmp_local.prev, 10227 next_text: wpgmp_local.next, 10228 }); 10229 } 10230 10231 // Further sections to be optimized next: 10232 // - Tabs, accordions, direction panels 10233 // - Marker detail click and scroll to view 10234 10235 // -------------------------------------------------- 10236 // 9. Accordion, Auto Suggest, Directions Panel, Events 10237 // -------------------------------------------------- 10238 10239 $(map_obj.container) 10240 .find(".wpgmp-accordion") 10241 .accordion({ speed: "slow" }); 10242 10243 map_obj.google_auto_suggest($(".wpgmp_auto_suggest")); 10244 10245 // -------------------------------------------------- 10246 // 10. Final Event Registration 10247 // -------------------------------------------------- 10248 10249 map_obj.register_events(); 10250 } 10251 10252 event_listener(obj, type, func) { 10253 if (obj && typeof obj.on === "function") { 10254 obj.on(type, func); 10255 } else { 10256 console.warn("event_listener: .on() is not a function for", obj); 10257 } 10258 } 10259 10260 create_leaflet_marker({ 10261 map, 10262 position, // [lat, lng] 10263 iconUrl = "", 10264 popupAnchor = [0, -30], 10265 draggable = false, 10266 title = "", 10267 isDivIcon = false, 10268 label = "", 10269 customClass = "wpgmp-custom-label-icon", 10270 addToMap = true, 10271 }) { 10272 var map_obj = this; 10273 let icon; 10274 var iconSize = map_obj.getMarkerSize(); 10275 10276 if (!iconUrl || iconUrl.trim() === "") { 10277 iconUrl = 10278 map_obj.settings.marker_default_icon || 10279 wpgmp_local.default_marker_icon; 10280 } 10281 10282 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 10283 10284 if (isDivIcon) { 10285 const divIconOptions = { 10286 className: customClass, 10287 html: `<div class="wpgmp-marker-label">${label}</div>`, 10288 }; 10289 10290 if (isSvg) { 10291 divIconOptions.iconSize = iconSize; 10292 divIconOptions.iconAnchor = [iconSize[0] / 2, iconSize[1] / 2]; 10293 } 10294 10295 icon = L.divIcon(divIconOptions); 10296 10297 } else { 10298 const iconOptions = { 10299 iconUrl, 10300 iconAnchor: [iconSize[0] / 2, iconSize[1]], 10301 popupAnchor, 10302 }; 10303 10304 // Only apply iconSize if SVG 10305 if (isSvg) { 10306 iconOptions.iconSize = iconSize; 10307 } 10308 10309 icon = L.icon(iconOptions); 10310 10311 } 10312 10313 const marker = L.marker(position, { 10314 icon, 10315 draggable, 10316 title, 10317 }); 10318 10319 if (addToMap && map) { 10320 marker.addTo(map); 10321 } 10322 10323 return marker; 10324 } 10325 10326 map_loaded() { 10327 const map_obj = this; 10328 const map = map_obj.map; 10329 10330 // Center map using current location or static marker 10331 if (map_obj.settings.center_by_nearest === true) { 10332 map_obj.center_by_nearest(); 10333 } else if (map_obj.settings.show_center_marker === true) { 10334 map_obj.show_center_marker(); 10335 } 10336 10337 // Show center circle if manually positioned 10338 if ( 10339 map_obj.settings.center_by_nearest === false && 10340 map_obj.settings.show_center_circle === true 10341 ) { 10342 map_obj.show_center_circle(); 10343 } 10344 10345 // Fit bounds to all markers if enabled 10346 if (map_obj.settings.fit_bounds === true) { 10347 map_obj.fit_bounds(); 10348 } 10349 10350 function adjustLeafletPopup(popup) { 10351 const popupEl = popup.getElement(); 10352 if (!popupEl) return; 10353 10354 const wrapper = popupEl.querySelector(".leaflet-popup-content-wrapper"); 10355 const content = popupEl.querySelector(".leaflet-popup-content"); 10356 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 10357 10358 if (wrapper) { 10359 wrapper.classList.add("wpgmp-infowindow-addon"); 10360 wrapper.removeAttribute("style"); 10361 } 10362 if (content) { 10363 content.removeAttribute("style"); 10364 } 10365 10366 // Calculate the popup width and center it 10367 const rect = popupEl.getBoundingClientRect(); 10368 const width = rect.width || 200; // fallback if rect is 0 10369 popupEl.style.left = `-${width / 2}px`; 10370 popupEl.style.bottom = `${markerSize[1] / 2}px`; 10371 } 10372 10373 10374 // Remove inline styling for Leaflet popups and apply custom class 10375 map.on("popupopen", function (e) { 10376 adjustLeafletPopup(e.popup); 10377 }); 10378 10379 map.on("zoomend", function () { 10380 const openPopup = map._popup; // Leaflet stores currently open popup here 10381 if (openPopup) { 10382 adjustLeafletPopup(openPopup); 10383 } 10384 }); 10385 10386 10387 } 10388 } 10389 10390 window.WpgmpLeafletMaps = WpgmpLeafletMaps; 10391})(jQuery, window, document); 10392 10393class WpgmpMapFactory { 10394 create(provider, element, options, places) { 10395 // Use fallback if provider is missing 10396 provider = provider || (options?.provider) || 'google'; 10397 options.provider = provider; // enforce for downstream use 10398 10399 switch (provider.toLowerCase()) { 10400 case 'leaflet': 10401 return new WpgmpLeafletMaps(element, options, places); 10402 case 'google': 10403 return new WpgmpGoogleMaps(element, options, places); 10404 default: 10405 console.warn(`Unknown provider "${provider}". Falling back to Google Maps.`); 10406 return new WpgmpGoogleMaps(element, options, places); 10407 } 10408 } 10409} 10410(function ($, window, document) { 10411 "use strict"; 10412 10413 $.fn.maps = function (options = {}, places = []) { 10414 return this.each(function () { 10415 const stepLabel = `[wpgmp/maps]`; 10416 10417 if (typeof options === 'string') { 10418 try { 10419 options = JSON.parse(atob(options)); 10420 if (wpgmp_local.debug_mode) { 10421 console.log(`${stepLabel} [Step 1] Options decoded from base64`, options); 10422 } 10423 } catch (e) { 10424 console.error(`${stepLabel} [Step 1] Failed to decode options:`, e); 10425 options = {}; 10426 } 10427 } 10428 10429 if (!$.data(this, "wpgmp_maps")) { 10430 let provider = wpgmp_local.map_provider || "google"; 10431 if (provider !== "google") { 10432 provider = "leaflet"; 10433 } 10434 10435 if (wpgmp_local.debug_mode) { 10436 console.log(`${stepLabel} [Step 2] Preparing to initialize map...`); 10437 console.log(`${stepLabel} Provider: ${provider}`); 10438 console.log(`${stepLabel} Target Element:`, this); 10439 console.log(`${stepLabel} Options:`, options); 10440 } 10441 10442 setTimeout(() => { 10443 const instance = new WpgmpMapFactory().create(provider, this, options, places); 10444 instance.init(); 10445 $.data(this, "wpgmp_maps", instance); 10446 10447 if (wpgmp_local.debug_mode) { 10448 console.log(`${stepLabel} [Step 3] Map instance created and initialized.`); 10449 } 10450 10451 // ð Internal event to signal complete readiness 10452 if (wpgmp_local.debug_mode) { 10453 console.log(`${stepLabel} [Step 4] Events dispatched: wpgmpInstanceReady, wpgmpLoaded`); 10454 } 10455 const internalEvent = new CustomEvent("wpgmpInstanceReady", { 10456 detail: { element: this, instance, provider }, 10457 }); 10458 document.dispatchEvent(internalEvent); 10459 10460 // External/public event 10461 const externalEvent = new CustomEvent("wpgmpLoaded", { 10462 detail: { element: this, instance, provider }, 10463 }); 10464 document.dispatchEvent(externalEvent); 10465 10466 10467 10468 }, wpgmp_local.set_timeout); 10469 } else { 10470 if (wpgmp_local.debug_mode) { 10471 console.log(`${stepLabel} [Skipped] Map already initialized on element:`, this); 10472 } 10473 } 10474 }); 10475 }; 10476})(jQuery, window, document); 10477 10478function wpgmpInitMap() { 10479 jQuery(document).ready(function ($) { 10480 var stepLabel = `[wpgmpInitMap]`; 10481 10482 if (!$.fn.maps) { 10483 if (wpgmp_local.debug_mode) { 10484 console.warn(`${stepLabel} [Abort] $.fn.maps not defined`); 10485 } 10486 return; 10487 } 10488 10489 // â STEP 1: Initialize each map 10490 $(".wpgmp_map").each(function () { 10491 stepLabel = `[wpgmpShowMap]`; 10492 const mapId = $(this).data("map-id"); 10493 const mapVarName = "mapdata" + mapId; 10494 const mapData = window.wpgmp?.[mapVarName]; 10495 10496 if (mapData) { 10497 if (wpgmp_local.debug_mode) { 10498 console.log(`${stepLabel} [Step 1] Map data found for ID: ${mapId}`); 10499 } 10500 $("#map" + mapId).maps(mapData); 10501 } else { 10502 if (wpgmp_local.debug_mode) { 10503 console.warn(`${stepLabel} [Step 1] Map data missing for ID: ${mapId}, retrying in ${wpgmp_local.set_timeout}ms...`); 10504 } 10505 10506 setTimeout(() => { 10507 const retryData = window.wpgmp?.[mapVarName]; 10508 if (retryData) { 10509 if (wpgmp_local.debug_mode) { 10510 console.log(`${stepLabel} [Step 1] Retry succeeded for ID: ${mapId}`); 10511 } 10512 $("#map" + mapId).maps(retryData); 10513 } else { 10514 console.error(`${stepLabel} [Step 1] Retry failed: Map data still missing for ID: ${mapId}`); 10515 } 10516 }, wpgmp_local.set_timeout); 10517 } 10518 }); 10519
10520 // â STEP 2: Listen for internal complete signal 10521 document.addEventListener("wpgmpInstanceReady", function (e) { 10522 const { element, instance, provider } = e.detail; 10523 const mapId = $(element).data("map-id"); 10524 10525 if (wpgmp_local.debug_mode) { 10526 console.log(`${stepLabel} [Step 2] Map fully initialized.`); 10527 console.log(`${stepLabel} Map ID: ${mapId}`); 10528 console.log(`${stepLabel} Provider: ${provider}`); 10529 console.log(`${stepLabel} Instance:`, instance); 10530 } 10531 }); 10532 10533 // â STEP 3: Dispatch global ready signal 10534 window.wpgmpInitialized = true; 10535 stepLabel = `[wpgmpInitMap]`; 10536 setTimeout(() => { 10537 if (wpgmp_local.debug_mode) { 10538 console.log(`${stepLabel} [Step 1] Global event dispatched: wpgmpReady`); 10539 } 10540 document.dispatchEvent(new Event("wpgmpReady")); 10541 }, wpgmp_local.set_timeout); 10542 }); 10543}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.