]> git.openstreetmap.org Git - rails.git/blob - vendor/assets/iD/iD.js
30b72e692b4feeb93b1c5a2c9b761c5063a54642
[rails.git] / vendor / assets / iD / iD.js
1 (function(exports) {
2
3   var bootstrap = (typeof exports.bootstrap === "object") ?
4     exports.bootstrap :
5     (exports.bootstrap = {});
6
7   bootstrap.tooltip = function() {
8
9     var tooltip = function(selection) {
10         selection.each(setup);
11       },
12       animation = d3.functor(false),
13       html = d3.functor(false),
14       title = function() {
15         var title = this.getAttribute("data-original-title");
16         if (title) {
17           return title;
18         } else {
19           title = this.getAttribute("title");
20           this.removeAttribute("title");
21           this.setAttribute("data-original-title", title);
22         }
23         return title;
24       },
25       over = "mouseenter.tooltip",
26       out = "mouseleave.tooltip",
27       placements = "top left bottom right".split(" "),
28       placement = d3.functor("top");
29
30     tooltip.title = function(_) {
31       if (arguments.length) {
32         title = d3.functor(_);
33         return tooltip;
34       } else {
35         return title;
36       }
37     };
38
39     tooltip.html = function(_) {
40       if (arguments.length) {
41         html = d3.functor(_);
42         return tooltip;
43       } else {
44         return html;
45       }
46     };
47
48     tooltip.placement = function(_) {
49       if (arguments.length) {
50         placement = d3.functor(_);
51         return tooltip;
52       } else {
53         return placement;
54       }
55     };
56
57     tooltip.show = function(selection) {
58       selection.each(show);
59     };
60
61     tooltip.hide = function(selection) {
62       selection.each(hide);
63     };
64
65     tooltip.toggle = function(selection) {
66       selection.each(toggle);
67     };
68
69     tooltip.destroy = function(selection) {
70       selection
71         .on(over, null)
72         .on(out, null)
73         .attr("title", function() {
74           return this.getAttribute("data-original-title") || this.getAttribute("title");
75         })
76         .attr("data-original-title", null)
77         .select(".tooltip")
78         .remove();
79     };
80
81     function setup() {
82       var root = d3.select(this),
83           animate = animation.apply(this, arguments),
84           tip = root.append("div")
85             .attr("class", "tooltip");
86
87       if (animate) {
88         tip.classed("fade", true);
89       }
90
91       // TODO "inside" checks?
92
93       tip.append("div")
94         .attr("class", "tooltip-arrow");
95       tip.append("div")
96         .attr("class", "tooltip-inner");
97
98       var place = placement.apply(this, arguments);
99       tip.classed(place, true);
100
101       root.on(over, show);
102       root.on(out, hide);
103     }
104
105     function show() {
106       var root = d3.select(this),
107           content = title.apply(this, arguments),
108           tip = root.select(".tooltip")
109             .classed("in", true),
110           markup = html.apply(this, arguments),
111           innercontent = tip.select(".tooltip-inner")[markup ? "html" : "text"](content),
112           place = placement.apply(this, arguments),
113           outer = getPosition(root.node()),
114           inner = getPosition(tip.node()),
115           pos;
116
117       switch (place) {
118         case "top":
119           pos = {x: outer.x + (outer.w - inner.w) / 2, y: outer.y - inner.h};
120           break;
121         case "right":
122           pos = {x: outer.x + outer.w, y: outer.y + (outer.h - inner.h) / 2};
123           break;
124         case "left":
125           pos = {x: outer.x - inner.w, y: outer.y + (outer.h - inner.h) / 2};
126           break;
127         case "bottom":
128           pos = {x: Math.max(0, outer.x + (outer.w - inner.w) / 2), y: outer.y + outer.h};
129           break;
130       }
131
132       tip.style(pos ?
133         {left: ~~pos.x + "px", top: ~~pos.y + "px"} :
134         {left: null, top: null});
135
136       this.tooltipVisible = true;
137     }
138
139     function hide() {
140       d3.select(this).select(".tooltip")
141         .classed("in", false);
142
143       this.tooltipVisible = false;
144     }
145
146     function toggle() {
147       if (this.tooltipVisible) {
148         hide.apply(this, arguments);
149       } else {
150         show.apply(this, arguments);
151       }
152     }
153
154     return tooltip;
155   };
156
157   function getPosition(node) {
158     var mode = d3.select(node).style('position');
159     if (mode === 'absolute' || mode === 'static') {
160       return {
161         x: node.offsetLeft,
162         y: node.offsetTop,
163         w: node.offsetWidth,
164         h: node.offsetHeight
165       };
166     } else {
167       return {
168         x: 0,
169         y: 0,
170         w: node.offsetWidth,
171         h: node.offsetHeight
172       };
173     }
174   }
175
176 })(this);
177 !function(){
178   var d3 = {version: "3.5.5"}; // semver
179 d3.ascending = d3_ascending;
180
181 function d3_ascending(a, b) {
182   return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
183 }
184 d3.descending = function(a, b) {
185   return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
186 };
187 d3.min = function(array, f) {
188   var i = -1,
189       n = array.length,
190       a,
191       b;
192   if (arguments.length === 1) {
193     while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }
194     while (++i < n) if ((b = array[i]) != null && a > b) a = b;
195   } else {
196     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = b; break; }
197     while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
198   }
199   return a;
200 };
201 d3.max = function(array, f) {
202   var i = -1,
203       n = array.length,
204       a,
205       b;
206   if (arguments.length === 1) {
207     while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }
208     while (++i < n) if ((b = array[i]) != null && b > a) a = b;
209   } else {
210     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = b; break; }
211     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
212   }
213   return a;
214 };
215 d3.extent = function(array, f) {
216   var i = -1,
217       n = array.length,
218       a,
219       b,
220       c;
221   if (arguments.length === 1) {
222     while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }
223     while (++i < n) if ((b = array[i]) != null) {
224       if (a > b) a = b;
225       if (c < b) c = b;
226     }
227   } else {
228     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = c = b; break; }
229     while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
230       if (a > b) a = b;
231       if (c < b) c = b;
232     }
233   }
234   return [a, c];
235 };
236 function d3_number(x) {
237   return x === null ? NaN : +x;
238 }
239
240 function d3_numeric(x) {
241   return !isNaN(x);
242 }
243
244 d3.sum = function(array, f) {
245   var s = 0,
246       n = array.length,
247       a,
248       i = -1;
249   if (arguments.length === 1) {
250     while (++i < n) if (d3_numeric(a = +array[i])) s += a; // zero and null are equivalent
251   } else {
252     while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;
253   }
254   return s;
255 };
256
257 d3.mean = function(array, f) {
258   var s = 0,
259       n = array.length,
260       a,
261       i = -1,
262       j = n;
263   if (arguments.length === 1) {
264     while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;
265   } else {
266     while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
267   }
268   if (j) return s / j;
269 };
270 // R-7 per <http://en.wikipedia.org/wiki/Quantile>
271 d3.quantile = function(values, p) {
272   var H = (values.length - 1) * p + 1,
273       h = Math.floor(H),
274       v = +values[h - 1],
275       e = H - h;
276   return e ? v + e * (values[h] - v) : v;
277 };
278
279 d3.median = function(array, f) {
280   var numbers = [],
281       n = array.length,
282       a,
283       i = -1;
284   if (arguments.length === 1) {
285     while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);
286   } else {
287     while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
288   }
289   if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
290 };
291
292 d3.variance = function(array, f) {
293   var n = array.length,
294       m = 0,
295       a,
296       d,
297       s = 0,
298       i = -1,
299       j = 0;
300   if (arguments.length === 1) {
301     while (++i < n) {
302       if (d3_numeric(a = d3_number(array[i]))) {
303         d = a - m;
304         m += d / ++j;
305         s += d * (a - m);
306       }
307     }
308   } else {
309     while (++i < n) {
310       if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {
311         d = a - m;
312         m += d / ++j;
313         s += d * (a - m);
314       }
315     }
316   }
317   if (j > 1) return s / (j - 1);
318 };
319
320 d3.deviation = function() {
321   var v = d3.variance.apply(this, arguments);
322   return v ? Math.sqrt(v) : v;
323 };
324
325 function d3_bisector(compare) {
326   return {
327     left: function(a, x, lo, hi) {
328       if (arguments.length < 3) lo = 0;
329       if (arguments.length < 4) hi = a.length;
330       while (lo < hi) {
331         var mid = lo + hi >>> 1;
332         if (compare(a[mid], x) < 0) lo = mid + 1;
333         else hi = mid;
334       }
335       return lo;
336     },
337     right: function(a, x, lo, hi) {
338       if (arguments.length < 3) lo = 0;
339       if (arguments.length < 4) hi = a.length;
340       while (lo < hi) {
341         var mid = lo + hi >>> 1;
342         if (compare(a[mid], x) > 0) hi = mid;
343         else lo = mid + 1;
344       }
345       return lo;
346     }
347   };
348 }
349
350 var d3_bisect = d3_bisector(d3_ascending);
351 d3.bisectLeft = d3_bisect.left;
352 d3.bisect = d3.bisectRight = d3_bisect.right;
353
354 d3.bisector = function(f) {
355   return d3_bisector(f.length === 1
356       ? function(d, x) { return d3_ascending(f(d), x); }
357       : f);
358 };
359 d3.shuffle = function(array, i0, i1) {
360   if ((m = arguments.length) < 3) { i1 = array.length; if (m < 2) i0 = 0; }
361   var m = i1 - i0, t, i;
362   while (m) {
363     i = Math.random() * m-- | 0;
364     t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
365   }
366   return array;
367 };
368 d3.permute = function(array, indexes) {
369   var i = indexes.length, permutes = new Array(i);
370   while (i--) permutes[i] = array[indexes[i]];
371   return permutes;
372 };
373 d3.pairs = function(array) {
374   var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
375   while (i < n) pairs[i] = [p0 = p1, p1 = array[++i]];
376   return pairs;
377 };
378
379 d3.zip = function() {
380   if (!(n = arguments.length)) return [];
381   for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) {
382     for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n;) {
383       zip[j] = arguments[j][i];
384     }
385   }
386   return zips;
387 };
388
389 function d3_zipLength(d) {
390   return d.length;
391 }
392
393 d3.transpose = function(matrix) {
394   return d3.zip.apply(d3, matrix);
395 };
396 d3.keys = function(map) {
397   var keys = [];
398   for (var key in map) keys.push(key);
399   return keys;
400 };
401 d3.values = function(map) {
402   var values = [];
403   for (var key in map) values.push(map[key]);
404   return values;
405 };
406 d3.entries = function(map) {
407   var entries = [];
408   for (var key in map) entries.push({key: key, value: map[key]});
409   return entries;
410 };
411 d3.merge = function(arrays) {
412   var n = arrays.length,
413       m,
414       i = -1,
415       j = 0,
416       merged,
417       array;
418
419   while (++i < n) j += arrays[i].length;
420   merged = new Array(j);
421
422   while (--n >= 0) {
423     array = arrays[n];
424     m = array.length;
425     while (--m >= 0) {
426       merged[--j] = array[m];
427     }
428   }
429
430   return merged;
431 };
432 var abs = Math.abs;
433
434 d3.range = function(start, stop, step) {
435   if (arguments.length < 3) {
436     step = 1;
437     if (arguments.length < 2) {
438       stop = start;
439       start = 0;
440     }
441   }
442   if ((stop - start) / step === Infinity) throw new Error("infinite range");
443   var range = [],
444        k = d3_range_integerScale(abs(step)),
445        i = -1,
446        j;
447   start *= k, stop *= k, step *= k;
448   if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k);
449   else while ((j = start + step * ++i) < stop) range.push(j / k);
450   return range;
451 };
452
453 function d3_range_integerScale(x) {
454   var k = 1;
455   while (x * k % 1) k *= 10;
456   return k;
457 }
458 function d3_class(ctor, properties) {
459   for (var key in properties) {
460     Object.defineProperty(ctor.prototype, key, {
461       value: properties[key],
462       enumerable: false
463     });
464   }
465 }
466
467 d3.map = function(object, f) {
468   var map = new d3_Map;
469   if (object instanceof d3_Map) {
470     object.forEach(function(key, value) { map.set(key, value); });
471   } else if (Array.isArray(object)) {
472     var i = -1,
473         n = object.length,
474         o;
475     if (arguments.length === 1) while (++i < n) map.set(i, object[i]);
476     else while (++i < n) map.set(f.call(object, o = object[i], i), o);
477   } else {
478     for (var key in object) map.set(key, object[key]);
479   }
480   return map;
481 };
482
483 function d3_Map() {
484   this._ = Object.create(null);
485 }
486
487 var d3_map_proto = "__proto__",
488     d3_map_zero = "\0";
489
490 d3_class(d3_Map, {
491   has: d3_map_has,
492   get: function(key) {
493     return this._[d3_map_escape(key)];
494   },
495   set: function(key, value) {
496     return this._[d3_map_escape(key)] = value;
497   },
498   remove: d3_map_remove,
499   keys: d3_map_keys,
500   values: function() {
501     var values = [];
502     for (var key in this._) values.push(this._[key]);
503     return values;
504   },
505   entries: function() {
506     var entries = [];
507     for (var key in this._) entries.push({key: d3_map_unescape(key), value: this._[key]});
508     return entries;
509   },
510   size: d3_map_size,
511   empty: d3_map_empty,
512   forEach: function(f) {
513     for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
514   }
515 });
516
517 function d3_map_escape(key) {
518   return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
519 }
520
521 function d3_map_unescape(key) {
522   return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
523 }
524
525 function d3_map_has(key) {
526   return d3_map_escape(key) in this._;
527 }
528
529 function d3_map_remove(key) {
530   return (key = d3_map_escape(key)) in this._ && delete this._[key];
531 }
532
533 function d3_map_keys() {
534   var keys = [];
535   for (var key in this._) keys.push(d3_map_unescape(key));
536   return keys;
537 }
538
539 function d3_map_size() {
540   var size = 0;
541   for (var key in this._) ++size;
542   return size;
543 }
544
545 function d3_map_empty() {
546   for (var key in this._) return false;
547   return true;
548 }
549
550 d3.nest = function() {
551   var nest = {},
552       keys = [],
553       sortKeys = [],
554       sortValues,
555       rollup;
556
557   function map(mapType, array, depth) {
558     if (depth >= keys.length) return rollup
559         ? rollup.call(nest, array) : (sortValues
560         ? array.sort(sortValues)
561         : array);
562
563     var i = -1,
564         n = array.length,
565         key = keys[depth++],
566         keyValue,
567         object,
568         setter,
569         valuesByKey = new d3_Map,
570         values;
571
572     while (++i < n) {
573       if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
574         values.push(object);
575       } else {
576         valuesByKey.set(keyValue, [object]);
577       }
578     }
579
580     if (mapType) {
581       object = mapType();
582       setter = function(keyValue, values) {
583         object.set(keyValue, map(mapType, values, depth));
584       };
585     } else {
586       object = {};
587       setter = function(keyValue, values) {
588         object[keyValue] = map(mapType, values, depth);
589       };
590     }
591
592     valuesByKey.forEach(setter);
593     return object;
594   }
595
596   function entries(map, depth) {
597     if (depth >= keys.length) return map;
598
599     var array = [],
600         sortKey = sortKeys[depth++];
601
602     map.forEach(function(key, keyMap) {
603       array.push({key: key, values: entries(keyMap, depth)});
604     });
605
606     return sortKey
607         ? array.sort(function(a, b) { return sortKey(a.key, b.key); })
608         : array;
609   }
610
611   nest.map = function(array, mapType) {
612     return map(mapType, array, 0);
613   };
614
615   nest.entries = function(array) {
616     return entries(map(d3.map, array, 0), 0);
617   };
618
619   nest.key = function(d) {
620     keys.push(d);
621     return nest;
622   };
623
624   // Specifies the order for the most-recently specified key.
625   // Note: only applies to entries. Map keys are unordered!
626   nest.sortKeys = function(order) {
627     sortKeys[keys.length - 1] = order;
628     return nest;
629   };
630
631   // Specifies the order for leaf values.
632   // Applies to both maps and entries array.
633   nest.sortValues = function(order) {
634     sortValues = order;
635     return nest;
636   };
637
638   nest.rollup = function(f) {
639     rollup = f;
640     return nest;
641   };
642
643   return nest;
644 };
645
646 d3.set = function(array) {
647   var set = new d3_Set;
648   if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);
649   return set;
650 };
651
652 function d3_Set() {
653   this._ = Object.create(null);
654 }
655
656 d3_class(d3_Set, {
657   has: d3_map_has,
658   add: function(key) {
659     this._[d3_map_escape(key += "")] = true;
660     return key;
661   },
662   remove: d3_map_remove,
663   values: d3_map_keys,
664   size: d3_map_size,
665   empty: d3_map_empty,
666   forEach: function(f) {
667     for (var key in this._) f.call(this, d3_map_unescape(key));
668   }
669 });
670 d3.behavior = {};
671 var d3_document = this.document;
672
673 function d3_documentElement(node) {
674   return node
675       && (node.ownerDocument // node is a Node
676       || node.document // node is a Window
677       || node).documentElement; // node is a Document
678 }
679
680 function d3_window(node) {
681   return node
682       && ((node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
683         || (node.document && node) // node is a Window
684         || node.defaultView); // node is a Document
685 }
686 // Copies a variable number of methods from source to target.
687 d3.rebind = function(target, source) {
688   var i = 1, n = arguments.length, method;
689   while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
690   return target;
691 };
692
693 // Method is assumed to be a standard D3 getter-setter:
694 // If passed with no arguments, gets the value.
695 // If passed with arguments, sets the value and returns the target.
696 function d3_rebind(target, source, method) {
697   return function() {
698     var value = method.apply(source, arguments);
699     return value === source ? target : value;
700   };
701 }
702 function d3_vendorSymbol(object, name) {
703   if (name in object) return name;
704   name = name.charAt(0).toUpperCase() + name.slice(1);
705   for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
706     var prefixName = d3_vendorPrefixes[i] + name;
707     if (prefixName in object) return prefixName;
708   }
709 }
710
711 var d3_vendorPrefixes = ["webkit", "ms", "moz", "Moz", "o", "O"];
712 var d3_arraySlice = [].slice,
713     d3_array = function(list) { return d3_arraySlice.call(list); }; // conversion for NodeLists
714 function d3_noop() {}
715
716 d3.dispatch = function() {
717   var dispatch = new d3_dispatch,
718       i = -1,
719       n = arguments.length;
720   while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
721   return dispatch;
722 };
723
724 function d3_dispatch() {}
725
726 d3_dispatch.prototype.on = function(type, listener) {
727   var i = type.indexOf("."),
728       name = "";
729
730   // Extract optional namespace, e.g., "click.foo"
731   if (i >= 0) {
732     name = type.slice(i + 1);
733     type = type.slice(0, i);
734   }
735
736   if (type) return arguments.length < 2
737       ? this[type].on(name)
738       : this[type].on(name, listener);
739
740   if (arguments.length === 2) {
741     if (listener == null) for (type in this) {
742       if (this.hasOwnProperty(type)) this[type].on(name, null);
743     }
744     return this;
745   }
746 };
747
748 function d3_dispatch_event(dispatch) {
749   var listeners = [],
750       listenerByName = new d3_Map;
751
752   function event() {
753     var z = listeners, // defensive reference
754         i = -1,
755         n = z.length,
756         l;
757     while (++i < n) if (l = z[i].on) l.apply(this, arguments);
758     return dispatch;
759   }
760
761   event.on = function(name, listener) {
762     var l = listenerByName.get(name),
763         i;
764
765     // return the current listener, if any
766     if (arguments.length < 2) return l && l.on;
767
768     // remove the old listener, if any (with copy-on-write)
769     if (l) {
770       l.on = null;
771       listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
772       listenerByName.remove(name);
773     }
774
775     // add the new listener, if any
776     if (listener) listeners.push(listenerByName.set(name, {on: listener}));
777
778     return dispatch;
779   };
780
781   return event;
782 }
783
784 d3.event = null;
785
786 function d3_eventPreventDefault() {
787   d3.event.preventDefault();
788 }
789
790 function d3_eventCancel() {
791   d3.event.preventDefault();
792   d3.event.stopPropagation();
793 }
794
795 function d3_eventSource() {
796   var e = d3.event, s;
797   while (s = e.sourceEvent) e = s;
798   return e;
799 }
800
801 // Like d3.dispatch, but for custom events abstracting native UI events. These
802 // events have a target component (such as a brush), a target element (such as
803 // the svg:g element containing the brush) and the standard arguments `d` (the
804 // target element's data) and `i` (the selection index of the target element).
805 function d3_eventDispatch(target) {
806   var dispatch = new d3_dispatch,
807       i = 0,
808       n = arguments.length;
809
810   while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
811
812   // Creates a dispatch context for the specified `thiz` (typically, the target
813   // DOM element that received the source event) and `argumentz` (typically, the
814   // data `d` and index `i` of the target element). The returned function can be
815   // used to dispatch an event to any registered listeners; the function takes a
816   // single argument as input, being the event to dispatch. The event must have
817   // a "type" attribute which corresponds to a type registered in the
818   // constructor. This context will automatically populate the "sourceEvent" and
819   // "target" attributes of the event, as well as setting the `d3.event` global
820   // for the duration of the notification.
821   dispatch.of = function(thiz, argumentz) {
822     return function(e1) {
823       try {
824         var e0 =
825         e1.sourceEvent = d3.event;
826         e1.target = target;
827         d3.event = e1;
828         dispatch[e1.type].apply(thiz, argumentz);
829       } finally {
830         d3.event = e0;
831       }
832     };
833   };
834
835   return dispatch;
836 }
837 d3.requote = function(s) {
838   return s.replace(d3_requote_re, "\\$&");
839 };
840
841 var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
842 var d3_subclass = {}.__proto__?
843
844 // Until ECMAScript supports array subclassing, prototype injection works well.
845 function(object, prototype) {
846   object.__proto__ = prototype;
847 }:
848
849 // And if your browser doesn't support __proto__, we'll use direct extension.
850 function(object, prototype) {
851   for (var property in prototype) object[property] = prototype[property];
852 };
853
854 function d3_selection(groups) {
855   d3_subclass(groups, d3_selectionPrototype);
856   return groups;
857 }
858
859 var d3_select = function(s, n) { return n.querySelector(s); },
860     d3_selectAll = function(s, n) { return n.querySelectorAll(s); },
861     d3_selectMatches = function(n, s) {
862       var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, "matchesSelector")];
863       d3_selectMatches = function(n, s) {
864         return d3_selectMatcher.call(n, s);
865       };
866       return d3_selectMatches(n, s);
867     };
868
869 // Prefer Sizzle, if available.
870 if (typeof Sizzle === "function") {
871   d3_select = function(s, n) { return Sizzle(s, n)[0] || null; };
872   d3_selectAll = Sizzle;
873   d3_selectMatches = Sizzle.matchesSelector;
874 }
875
876 d3.selection = function() {
877   return d3.select(d3_document.documentElement);
878 };
879
880 var d3_selectionPrototype = d3.selection.prototype = [];
881
882
883 d3_selectionPrototype.select = function(selector) {
884   var subgroups = [],
885       subgroup,
886       subnode,
887       group,
888       node;
889
890   selector = d3_selection_selector(selector);
891
892   for (var j = -1, m = this.length; ++j < m;) {
893     subgroups.push(subgroup = []);
894     subgroup.parentNode = (group = this[j]).parentNode;
895     for (var i = -1, n = group.length; ++i < n;) {
896       if (node = group[i]) {
897         subgroup.push(subnode = selector.call(node, node.__data__, i, j));
898         if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
899       } else {
900         subgroup.push(null);
901       }
902     }
903   }
904
905   return d3_selection(subgroups);
906 };
907
908 function d3_selection_selector(selector) {
909   return typeof selector === "function" ? selector : function() {
910     return d3_select(selector, this);
911   };
912 }
913
914 d3_selectionPrototype.selectAll = function(selector) {
915   var subgroups = [],
916       subgroup,
917       node;
918
919   selector = d3_selection_selectorAll(selector);
920
921   for (var j = -1, m = this.length; ++j < m;) {
922     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
923       if (node = group[i]) {
924         subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));
925         subgroup.parentNode = node;
926       }
927     }
928   }
929
930   return d3_selection(subgroups);
931 };
932
933 function d3_selection_selectorAll(selector) {
934   return typeof selector === "function" ? selector : function() {
935     return d3_selectAll(selector, this);
936   };
937 }
938 var d3_nsPrefix = {
939   svg: "http://www.w3.org/2000/svg",
940   xhtml: "http://www.w3.org/1999/xhtml",
941   xlink: "http://www.w3.org/1999/xlink",
942   xml: "http://www.w3.org/XML/1998/namespace",
943   xmlns: "http://www.w3.org/2000/xmlns/"
944 };
945
946 d3.ns = {
947   prefix: d3_nsPrefix,
948   qualify: function(name) {
949     var i = name.indexOf(":"),
950         prefix = name;
951     if (i >= 0) {
952       prefix = name.slice(0, i);
953       name = name.slice(i + 1);
954     }
955     return d3_nsPrefix.hasOwnProperty(prefix)
956         ? {space: d3_nsPrefix[prefix], local: name}
957         : name;
958   }
959 };
960
961 d3_selectionPrototype.attr = function(name, value) {
962   if (arguments.length < 2) {
963
964     // For attr(string), return the attribute value for the first node.
965     if (typeof name === "string") {
966       var node = this.node();
967       name = d3.ns.qualify(name);
968       return name.local
969           ? node.getAttributeNS(name.space, name.local)
970           : node.getAttribute(name);
971     }
972
973     // For attr(object), the object specifies the names and values of the
974     // attributes to set or remove. The values may be functions that are
975     // evaluated for each element.
976     for (value in name) this.each(d3_selection_attr(value, name[value]));
977     return this;
978   }
979
980   return this.each(d3_selection_attr(name, value));
981 };
982
983 function d3_selection_attr(name, value) {
984   name = d3.ns.qualify(name);
985
986   // For attr(string, null), remove the attribute with the specified name.
987   function attrNull() {
988     this.removeAttribute(name);
989   }
990   function attrNullNS() {
991     this.removeAttributeNS(name.space, name.local);
992   }
993
994   // For attr(string, string), set the attribute with the specified name.
995   function attrConstant() {
996     this.setAttribute(name, value);
997   }
998   function attrConstantNS() {
999     this.setAttributeNS(name.space, name.local, value);
1000   }
1001
1002   // For attr(string, function), evaluate the function for each element, and set
1003   // or remove the attribute as appropriate.
1004   function attrFunction() {
1005     var x = value.apply(this, arguments);
1006     if (x == null) this.removeAttribute(name);
1007     else this.setAttribute(name, x);
1008   }
1009   function attrFunctionNS() {
1010     var x = value.apply(this, arguments);
1011     if (x == null) this.removeAttributeNS(name.space, name.local);
1012     else this.setAttributeNS(name.space, name.local, x);
1013   }
1014
1015   return value == null
1016       ? (name.local ? attrNullNS : attrNull) : (typeof value === "function"
1017       ? (name.local ? attrFunctionNS : attrFunction)
1018       : (name.local ? attrConstantNS : attrConstant));
1019 }
1020 function d3_collapse(s) {
1021   return s.trim().replace(/\s+/g, " ");
1022 }
1023
1024 d3_selectionPrototype.classed = function(name, value) {
1025   if (arguments.length < 2) {
1026
1027     // For classed(string), return true only if the first node has the specified
1028     // class or classes. Note that even if the browser supports DOMTokenList, it
1029     // probably doesn't support it on SVG elements (which can be animated).
1030     if (typeof name === "string") {
1031       var node = this.node(),
1032           n = (name = d3_selection_classes(name)).length,
1033           i = -1;
1034       if (value = node.classList) {
1035         while (++i < n) if (!value.contains(name[i])) return false;
1036       } else {
1037         value = node.getAttribute("class");
1038         while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
1039       }
1040       return true;
1041     }
1042
1043     // For classed(object), the object specifies the names of classes to add or
1044     // remove. The values may be functions that are evaluated for each element.
1045     for (value in name) this.each(d3_selection_classed(value, name[value]));
1046     return this;
1047   }
1048
1049   // Otherwise, both a name and a value are specified, and are handled as below.
1050   return this.each(d3_selection_classed(name, value));
1051 };
1052
1053 function d3_selection_classedRe(name) {
1054   return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
1055 }
1056
1057 function d3_selection_classes(name) {
1058   return (name + "").trim().split(/^|\s+/);
1059 }
1060
1061 // Multiple class names are allowed (e.g., "foo bar").
1062 function d3_selection_classed(name, value) {
1063   name = d3_selection_classes(name).map(d3_selection_classedName);
1064   var n = name.length;
1065
1066   function classedConstant() {
1067     var i = -1;
1068     while (++i < n) name[i](this, value);
1069   }
1070
1071   // When the value is a function, the function is still evaluated only once per
1072   // element even if there are multiple class names.
1073   function classedFunction() {
1074     var i = -1, x = value.apply(this, arguments);
1075     while (++i < n) name[i](this, x);
1076   }
1077
1078   return typeof value === "function"
1079       ? classedFunction
1080       : classedConstant;
1081 }
1082
1083 function d3_selection_classedName(name) {
1084   var re = d3_selection_classedRe(name);
1085   return function(node, value) {
1086     if (c = node.classList) return value ? c.add(name) : c.remove(name);
1087     var c = node.getAttribute("class") || "";
1088     if (value) {
1089       re.lastIndex = 0;
1090       if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name));
1091     } else {
1092       node.setAttribute("class", d3_collapse(c.replace(re, " ")));
1093     }
1094   };
1095 }
1096
1097 d3_selectionPrototype.style = function(name, value, priority) {
1098   var n = arguments.length;
1099   if (n < 3) {
1100
1101     // For style(object) or style(object, string), the object specifies the
1102     // names and values of the attributes to set or remove. The values may be
1103     // functions that are evaluated for each element. The optional string
1104     // specifies the priority.
1105     if (typeof name !== "string") {
1106       if (n < 2) value = "";
1107       for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
1108       return this;
1109     }
1110
1111     // For style(string), return the computed style value for the first node.
1112     if (n < 2) {
1113       var node = this.node();
1114       return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);
1115     }
1116
1117     // For style(string, string) or style(string, function), use the default
1118     // priority. The priority is ignored for style(string, null).
1119     priority = "";
1120   }
1121
1122   // Otherwise, a name, value and priority are specified, and handled as below.
1123   return this.each(d3_selection_style(name, value, priority));
1124 };
1125
1126 function d3_selection_style(name, value, priority) {
1127
1128   // For style(name, null) or style(name, null, priority), remove the style
1129   // property with the specified name. The priority is ignored.
1130   function styleNull() {
1131     this.style.removeProperty(name);
1132   }
1133
1134   // For style(name, string) or style(name, string, priority), set the style
1135   // property with the specified name, using the specified priority.
1136   function styleConstant() {
1137     this.style.setProperty(name, value, priority);
1138   }
1139
1140   // For style(name, function) or style(name, function, priority), evaluate the
1141   // function for each element, and set or remove the style property as
1142   // appropriate. When setting, use the specified priority.
1143   function styleFunction() {
1144     var x = value.apply(this, arguments);
1145     if (x == null) this.style.removeProperty(name);
1146     else this.style.setProperty(name, x, priority);
1147   }
1148
1149   return value == null
1150       ? styleNull : (typeof value === "function"
1151       ? styleFunction : styleConstant);
1152 }
1153
1154 d3_selectionPrototype.property = function(name, value) {
1155   if (arguments.length < 2) {
1156
1157     // For property(string), return the property value for the first node.
1158     if (typeof name === "string") return this.node()[name];
1159
1160     // For property(object), the object specifies the names and values of the
1161     // properties to set or remove. The values may be functions that are
1162     // evaluated for each element.
1163     for (value in name) this.each(d3_selection_property(value, name[value]));
1164     return this;
1165   }
1166
1167   // Otherwise, both a name and a value are specified, and are handled as below.
1168   return this.each(d3_selection_property(name, value));
1169 };
1170
1171 function d3_selection_property(name, value) {
1172
1173   // For property(name, null), remove the property with the specified name.
1174   function propertyNull() {
1175     delete this[name];
1176   }
1177
1178   // For property(name, string), set the property with the specified name.
1179   function propertyConstant() {
1180     this[name] = value;
1181   }
1182
1183   // For property(name, function), evaluate the function for each element, and
1184   // set or remove the property as appropriate.
1185   function propertyFunction() {
1186     var x = value.apply(this, arguments);
1187     if (x == null) delete this[name];
1188     else this[name] = x;
1189   }
1190
1191   return value == null
1192       ? propertyNull : (typeof value === "function"
1193       ? propertyFunction : propertyConstant);
1194 }
1195
1196 d3_selectionPrototype.text = function(value) {
1197   return arguments.length
1198       ? this.each(typeof value === "function"
1199       ? function() { var v = value.apply(this, arguments); this.textContent = v == null ? "" : v; } : value == null
1200       ? function() { if (this.textContent !== "") this.textContent = ""; }
1201       : function() { if (this.textContent !== value) this.textContent = value; })
1202       : this.node().textContent;
1203 };
1204
1205 d3_selectionPrototype.html = function(value) {
1206   return arguments.length
1207       ? this.each(typeof value === "function"
1208       ? function() { var v = value.apply(this, arguments); this.innerHTML = v == null ? "" : v; } : value == null
1209       ? function() { this.innerHTML = ""; }
1210       : function() { this.innerHTML = value; })
1211       : this.node().innerHTML;
1212 };
1213
1214 d3_selectionPrototype.append = function(name) {
1215   name = d3_selection_creator(name);
1216   return this.select(function() {
1217     return this.appendChild(name.apply(this, arguments));
1218   });
1219 };
1220
1221 function d3_selection_creator(name) {
1222
1223   function create() {
1224     var document = this.ownerDocument,
1225         namespace = this.namespaceURI;
1226     return namespace
1227         ? document.createElementNS(namespace, name)
1228         : document.createElement(name);
1229   }
1230
1231   function createNS() {
1232     return this.ownerDocument.createElementNS(name.space, name.local);
1233   }
1234
1235   return typeof name === "function" ? name
1236       : (name = d3.ns.qualify(name)).local ? createNS
1237       : create;
1238 }
1239
1240 d3_selectionPrototype.insert = function(name, before) {
1241   name = d3_selection_creator(name);
1242   before = d3_selection_selector(before);
1243   return this.select(function() {
1244     return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);
1245   });
1246 };
1247
1248 // TODO remove(selector)?
1249 // TODO remove(node)?
1250 // TODO remove(function)?
1251 d3_selectionPrototype.remove = function() {
1252   return this.each(d3_selectionRemove);
1253 };
1254
1255 function d3_selectionRemove() {
1256   var parent = this.parentNode;
1257   if (parent) parent.removeChild(this);
1258 }
1259
1260 d3_selectionPrototype.data = function(value, key) {
1261   var i = -1,
1262       n = this.length,
1263       group,
1264       node;
1265
1266   // If no value is specified, return the first value.
1267   if (!arguments.length) {
1268     value = new Array(n = (group = this[0]).length);
1269     while (++i < n) {
1270       if (node = group[i]) {
1271         value[i] = node.__data__;
1272       }
1273     }
1274     return value;
1275   }
1276
1277   function bind(group, groupData) {
1278     var i,
1279         n = group.length,
1280         m = groupData.length,
1281         n0 = Math.min(n, m),
1282         updateNodes = new Array(m),
1283         enterNodes = new Array(m),
1284         exitNodes = new Array(n),
1285         node,
1286         nodeData;
1287
1288     if (key) {
1289       var nodeByKeyValue = new d3_Map,
1290           keyValues = new Array(n),
1291           keyValue;
1292
1293       for (i = -1; ++i < n;) {
1294         if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) {
1295           exitNodes[i] = node; // duplicate selection key
1296         } else {
1297           nodeByKeyValue.set(keyValue, node);
1298         }
1299         keyValues[i] = keyValue;
1300       }
1301
1302       for (i = -1; ++i < m;) {
1303         if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {
1304           enterNodes[i] = d3_selection_dataNode(nodeData);
1305         } else if (node !== true) { // no duplicate data key
1306           updateNodes[i] = node;
1307           node.__data__ = nodeData;
1308         }
1309         nodeByKeyValue.set(keyValue, true);
1310       }
1311
1312       for (i = -1; ++i < n;) {
1313         if (nodeByKeyValue.get(keyValues[i]) !== true) {
1314           exitNodes[i] = group[i];
1315         }
1316       }
1317     } else {
1318       for (i = -1; ++i < n0;) {
1319         node = group[i];
1320         nodeData = groupData[i];
1321         if (node) {
1322           node.__data__ = nodeData;
1323           updateNodes[i] = node;
1324         } else {
1325           enterNodes[i] = d3_selection_dataNode(nodeData);
1326         }
1327       }
1328       for (; i < m; ++i) {
1329         enterNodes[i] = d3_selection_dataNode(groupData[i]);
1330       }
1331       for (; i < n; ++i) {
1332         exitNodes[i] = group[i];
1333       }
1334     }
1335
1336     enterNodes.update
1337         = updateNodes;
1338
1339     enterNodes.parentNode
1340         = updateNodes.parentNode
1341         = exitNodes.parentNode
1342         = group.parentNode;
1343
1344     enter.push(enterNodes);
1345     update.push(updateNodes);
1346     exit.push(exitNodes);
1347   }
1348
1349   var enter = d3_selection_enter([]),
1350       update = d3_selection([]),
1351       exit = d3_selection([]);
1352
1353   if (typeof value === "function") {
1354     while (++i < n) {
1355       bind(group = this[i], value.call(group, group.parentNode.__data__, i));
1356     }
1357   } else {
1358     while (++i < n) {
1359       bind(group = this[i], value);
1360     }
1361   }
1362
1363   update.enter = function() { return enter; };
1364   update.exit = function() { return exit; };
1365   return update;
1366 };
1367
1368 function d3_selection_dataNode(data) {
1369   return {__data__: data};
1370 }
1371
1372 d3_selectionPrototype.datum = function(value) {
1373   return arguments.length
1374       ? this.property("__data__", value)
1375       : this.property("__data__");
1376 };
1377
1378 d3_selectionPrototype.filter = function(filter) {
1379   var subgroups = [],
1380       subgroup,
1381       group,
1382       node;
1383
1384   if (typeof filter !== "function") filter = d3_selection_filter(filter);
1385
1386   for (var j = 0, m = this.length; j < m; j++) {
1387     subgroups.push(subgroup = []);
1388     subgroup.parentNode = (group = this[j]).parentNode;
1389     for (var i = 0, n = group.length; i < n; i++) {
1390       if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
1391         subgroup.push(node);
1392       }
1393     }
1394   }
1395
1396   return d3_selection(subgroups);
1397 };
1398
1399 function d3_selection_filter(selector) {
1400   return function() {
1401     return d3_selectMatches(this, selector);
1402   };
1403 }
1404
1405 d3_selectionPrototype.order = function() {
1406   for (var j = -1, m = this.length; ++j < m;) {
1407     for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
1408       if (node = group[i]) {
1409         if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
1410         next = node;
1411       }
1412     }
1413   }
1414   return this;
1415 };
1416
1417 d3_selectionPrototype.sort = function(comparator) {
1418   comparator = d3_selection_sortComparator.apply(this, arguments);
1419   for (var j = -1, m = this.length; ++j < m;) this[j].sort(comparator);
1420   return this.order();
1421 };
1422
1423 function d3_selection_sortComparator(comparator) {
1424   if (!arguments.length) comparator = d3_ascending;
1425   return function(a, b) {
1426     return a && b ? comparator(a.__data__, b.__data__) : !a - !b;
1427   };
1428 }
1429
1430 d3_selectionPrototype.each = function(callback) {
1431   return d3_selection_each(this, function(node, i, j) {
1432     callback.call(node, node.__data__, i, j);
1433   });
1434 };
1435
1436 function d3_selection_each(groups, callback) {
1437   for (var j = 0, m = groups.length; j < m; j++) {
1438     for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
1439       if (node = group[i]) callback(node, i, j);
1440     }
1441   }
1442   return groups;
1443 }
1444
1445 d3_selectionPrototype.call = function(callback) {
1446   var args = d3_array(arguments);
1447   callback.apply(args[0] = this, args);
1448   return this;
1449 };
1450
1451 d3_selectionPrototype.empty = function() {
1452   return !this.node();
1453 };
1454
1455 d3_selectionPrototype.node = function() {
1456   for (var j = 0, m = this.length; j < m; j++) {
1457     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
1458       var node = group[i];
1459       if (node) return node;
1460     }
1461   }
1462   return null;
1463 };
1464
1465 d3_selectionPrototype.size = function() {
1466   var n = 0;
1467   d3_selection_each(this, function() { ++n; });
1468   return n;
1469 };
1470
1471 function d3_selection_enter(selection) {
1472   d3_subclass(selection, d3_selection_enterPrototype);
1473   return selection;
1474 }
1475
1476 var d3_selection_enterPrototype = [];
1477
1478 d3.selection.enter = d3_selection_enter;
1479 d3.selection.enter.prototype = d3_selection_enterPrototype;
1480
1481 d3_selection_enterPrototype.append = d3_selectionPrototype.append;
1482 d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
1483 d3_selection_enterPrototype.node = d3_selectionPrototype.node;
1484 d3_selection_enterPrototype.call = d3_selectionPrototype.call;
1485 d3_selection_enterPrototype.size = d3_selectionPrototype.size;
1486
1487
1488 d3_selection_enterPrototype.select = function(selector) {
1489   var subgroups = [],
1490       subgroup,
1491       subnode,
1492       upgroup,
1493       group,
1494       node;
1495
1496   for (var j = -1, m = this.length; ++j < m;) {
1497     upgroup = (group = this[j]).update;
1498     subgroups.push(subgroup = []);
1499     subgroup.parentNode = group.parentNode;
1500     for (var i = -1, n = group.length; ++i < n;) {
1501       if (node = group[i]) {
1502         subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));
1503         subnode.__data__ = node.__data__;
1504       } else {
1505         subgroup.push(null);
1506       }
1507     }
1508   }
1509
1510   return d3_selection(subgroups);
1511 };
1512
1513 d3_selection_enterPrototype.insert = function(name, before) {
1514   if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);
1515   return d3_selectionPrototype.insert.call(this, name, before);
1516 };
1517
1518 function d3_selection_enterInsertBefore(enter) {
1519   var i0, j0;
1520   return function(d, i, j) {
1521     var group = enter[j].update,
1522         n = group.length,
1523         node;
1524     if (j != j0) j0 = j, i0 = 0;
1525     if (i >= i0) i0 = i + 1;
1526     while (!(node = group[i0]) && ++i0 < n);
1527     return node;
1528   };
1529 }
1530
1531 // TODO fast singleton implementation?
1532 d3.select = function(node) {
1533   var group;
1534   if (typeof node === "string") {
1535     group = [d3_select(node, d3_document)];
1536     group.parentNode = d3_document.documentElement;
1537   } else {
1538     group = [node];
1539     group.parentNode = d3_documentElement(node);
1540   }
1541   return d3_selection([group]);
1542 };
1543
1544 d3.selectAll = function(nodes) {
1545   var group;
1546   if (typeof nodes === "string") {
1547     group = d3_array(d3_selectAll(nodes, d3_document));
1548     group.parentNode = d3_document.documentElement;
1549   } else {
1550     group = nodes;
1551     group.parentNode = null;
1552   }
1553   return d3_selection([group]);
1554 };
1555
1556 d3_selectionPrototype.on = function(type, listener, capture) {
1557   var n = arguments.length;
1558   if (n < 3) {
1559
1560     // For on(object) or on(object, boolean), the object specifies the event
1561     // types and listeners to add or remove. The optional boolean specifies
1562     // whether the listener captures events.
1563     if (typeof type !== "string") {
1564       if (n < 2) listener = false;
1565       for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
1566       return this;
1567     }
1568
1569     // For on(string), return the listener for the first node.
1570     if (n < 2) return (n = this.node()["__on" + type]) && n._;
1571
1572     // For on(string, function), use the default capture.
1573     capture = false;
1574   }
1575
1576   // Otherwise, a type, listener and capture are specified, and handled as below.
1577   return this.each(d3_selection_on(type, listener, capture));
1578 };
1579
1580 function d3_selection_on(type, listener, capture) {
1581   var name = "__on" + type,
1582       i = type.indexOf("."),
1583       wrap = d3_selection_onListener;
1584
1585   if (i > 0) type = type.slice(0, i);
1586   var filter = d3_selection_onFilters.get(type);
1587   if (filter) type = filter, wrap = d3_selection_onFilter;
1588
1589   function onRemove() {
1590     var l = this[name];
1591     if (l) {
1592       this.removeEventListener(type, l, l.$);
1593       delete this[name];
1594     }
1595   }
1596
1597   function onAdd() {
1598     var l = wrap(listener, d3_array(arguments));
1599     if (typeof Raven !== 'undefined') l = Raven.wrap(l);
1600     onRemove.call(this);
1601     this.addEventListener(type, this[name] = l, l.$ = capture);
1602     l._ = listener;
1603   }
1604
1605   function removeAll() {
1606     var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"),
1607         match;
1608     for (var name in this) {
1609       if (match = name.match(re)) {
1610         var l = this[name];
1611         this.removeEventListener(match[1], l, l.$);
1612         delete this[name];
1613       }
1614     }
1615   }
1616
1617   return i
1618       ? listener ? onAdd : onRemove
1619       : listener ? d3_noop : removeAll;
1620 }
1621
1622 var d3_selection_onFilters = d3.map({
1623   mouseenter: "mouseover",
1624   mouseleave: "mouseout"
1625 });
1626
1627 if (d3_document) {
1628   d3_selection_onFilters.forEach(function(k) {
1629     if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
1630   });
1631 }
1632
1633 function d3_selection_onListener(listener, argumentz) {
1634   return function(e) {
1635     var o = d3.event; // Events can be reentrant (e.g., focus).
1636     d3.event = e;
1637     argumentz[0] = this.__data__;
1638     try {
1639       listener.apply(this, argumentz);
1640     } finally {
1641       d3.event = o;
1642     }
1643   };
1644 }
1645
1646 function d3_selection_onFilter(listener, argumentz) {
1647   var l = d3_selection_onListener(listener, argumentz);
1648   return function(e) {
1649     var target = this, related = e.relatedTarget;
1650     if (!related || (related !== target && !(related.compareDocumentPosition(target) & 8))) {
1651       l.call(target, e);
1652     }
1653   };
1654 }
1655
1656 var d3_event_dragSelect,
1657     d3_event_dragId = 0;
1658
1659 function d3_event_dragSuppress(node) {
1660   var name = ".dragsuppress-" + ++d3_event_dragId,
1661       click = "click" + name,
1662       w = d3.select(d3_window(node))
1663           .on("touchmove" + name, d3_eventPreventDefault)
1664           .on("dragstart" + name, d3_eventPreventDefault)
1665           .on("selectstart" + name, d3_eventPreventDefault);
1666
1667   if (d3_event_dragSelect == null) {
1668     d3_event_dragSelect = "onselectstart" in node ? false
1669         : d3_vendorSymbol(node.style, "userSelect");
1670   }
1671
1672   if (d3_event_dragSelect) {
1673     var style = d3_documentElement(node).style,
1674         select = style[d3_event_dragSelect];
1675     style[d3_event_dragSelect] = "none";
1676   }
1677
1678   return function(suppressClick) {
1679     w.on(name, null);
1680     if (d3_event_dragSelect) style[d3_event_dragSelect] = select;
1681     if (suppressClick) { // suppress the next click, but only if it’s immediate
1682       var off = function() { w.on(click, null); };
1683       w.on(click, function() { d3_eventCancel(); off(); }, true);
1684       setTimeout(off, 0);
1685     }
1686   };
1687 }
1688
1689 d3.mouse = function(container) {
1690   return d3_mousePoint(container, d3_eventSource());
1691 };
1692
1693 // https://bugs.webkit.org/show_bug.cgi?id=44083
1694 var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
1695
1696 function d3_mousePoint(container, e) {
1697   if (e.changedTouches) e = e.changedTouches[0];
1698   var svg = container.ownerSVGElement || container;
1699   if (svg.createSVGPoint) {
1700     var point = svg.createSVGPoint();
1701     if (d3_mouse_bug44083 < 0) {
1702       var window = d3_window(container);
1703       if (window.scrollX || window.scrollY) {
1704         svg = d3.select("body").append("svg").style({
1705           position: "absolute",
1706           top: 0,
1707           left: 0,
1708           margin: 0,
1709           padding: 0,
1710           border: "none"
1711         }, "important");
1712         var ctm = svg[0][0].getScreenCTM();
1713         d3_mouse_bug44083 = !(ctm.f || ctm.e);
1714         svg.remove();
1715       }
1716     }
1717     if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY;
1718     else point.x = e.clientX, point.y = e.clientY;
1719     point = point.matrixTransform(container.getScreenCTM().inverse());
1720     return [point.x, point.y];
1721   }
1722   var rect = container.getBoundingClientRect();
1723   return [e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop];
1724 };
1725
1726 d3.touches = function(container, touches) {
1727   if (arguments.length < 2) touches = d3_eventSource().touches;
1728   return touches ? d3_array(touches).map(function(touch) {
1729     var point = d3_mousePoint(container, touch);
1730     point.identifier = touch.identifier;
1731     return point;
1732   }) : [];
1733 };
1734 var ε = 1e-6,
1735     ε2 = ε * ε,
1736     π = Math.PI,
1737     τ = 2 * π,
1738     τε = τ - ε,
1739     halfπ = π / 2,
1740     d3_radians = π / 180,
1741     d3_degrees = 180 / π;
1742
1743 function d3_sgn(x) {
1744   return x > 0 ? 1 : x < 0 ? -1 : 0;
1745 }
1746
1747 // Returns the 2D cross product of AB and AC vectors, i.e., the z-component of
1748 // the 3D cross product in a quadrant I Cartesian coordinate system (+x is
1749 // right, +y is up). Returns a positive value if ABC is counter-clockwise,
1750 // negative if clockwise, and zero if the points are collinear.
1751 function d3_cross2d(a, b, c) {
1752   return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
1753 }
1754
1755 function d3_acos(x) {
1756   return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
1757 }
1758
1759 function d3_asin(x) {
1760   return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);
1761 }
1762
1763 function d3_sinh(x) {
1764   return ((x = Math.exp(x)) - 1 / x) / 2;
1765 }
1766
1767 function d3_cosh(x) {
1768   return ((x = Math.exp(x)) + 1 / x) / 2;
1769 }
1770
1771 function d3_tanh(x) {
1772   return ((x = Math.exp(2 * x)) - 1) / (x + 1);
1773 }
1774
1775 function d3_haversin(x) {
1776   return (x = Math.sin(x / 2)) * x;
1777 }
1778
1779 var ρ = Math.SQRT2,
1780     ρ2 = 2,
1781     ρ4 = 4;
1782
1783 // p0 = [ux0, uy0, w0]
1784 // p1 = [ux1, uy1, w1]
1785 d3.interpolateZoom = function(p0, p1) {
1786   var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
1787       ux1 = p1[0], uy1 = p1[1], w1 = p1[2];
1788
1789   var dx = ux1 - ux0,
1790       dy = uy1 - uy0,
1791       d2 = dx * dx + dy * dy,
1792       d1 = Math.sqrt(d2),
1793       b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1),
1794       b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1),
1795       r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
1796       r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1),
1797       dr = r1 - r0,
1798       S = (dr || Math.log(w1 / w0)) / ρ;
1799
1800   function interpolate(t) {
1801     var s = t * S;
1802     if (dr) {
1803       // General case.
1804       var coshr0 = d3_cosh(r0),
1805           u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
1806       return [
1807         ux0 + u * dx,
1808         uy0 + u * dy,
1809         w0 * coshr0 / d3_cosh(ρ * s + r0)
1810       ];
1811     }
1812     // Special case for u0 ~= u1.
1813     return [
1814       ux0 + t * dx,
1815       uy0 + t * dy,
1816       w0 * Math.exp(ρ * s)
1817     ];
1818   }
1819
1820   interpolate.duration = S * 1000;
1821
1822   return interpolate;
1823 };
1824
1825 d3.behavior.zoom = function() {
1826   var view = {x: 0, y: 0, k: 1},
1827       translate0, // translate when we started zooming (to avoid drift)
1828       center0, // implicit desired position of translate0 after zooming
1829       center, // explicit desired position of translate0 after zooming
1830       size = [960, 500], // viewport size; required for zoom interpolation
1831       scaleExtent = d3_behavior_zoomInfinity,
1832       duration = 250,
1833       zooming = 0,
1834       mousedown = "mousedown.zoom",
1835       mousemove = "mousemove.zoom",
1836       mouseup = "mouseup.zoom",
1837       mousewheelTimer,
1838       touchstart = "touchstart.zoom",
1839       touchtime, // time of last touchstart (to detect double-tap)
1840       event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"),
1841       x0,
1842       x1,
1843       y0,
1844       y1;
1845
1846   // Lazily determine the DOM’s support for Wheel events.
1847   // https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/wheel
1848   if (!d3_behavior_zoomWheel) {
1849     d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); }, "wheel")
1850         : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { return d3.event.wheelDelta; }, "mousewheel")
1851         : (d3_behavior_zoomDelta = function() { return -d3.event.detail; }, "MozMousePixelScroll");
1852   }
1853
1854   function zoom(g) {
1855     g   .on(mousedown, mousedowned)
1856         .on(d3_behavior_zoomWheel + ".zoom", mousewheeled)
1857         .on("dblclick.zoom", dblclicked)
1858         .on(touchstart, touchstarted);
1859   }
1860
1861   zoom.event = function(g) {
1862     g.each(function() {
1863       var dispatch = event.of(this, arguments),
1864           view1 = view;
1865       if (d3_transitionInheritId) {
1866         d3.select(this).transition()
1867             .each("start.zoom", function() {
1868               view = this.__chart__ || {x: 0, y: 0, k: 1}; // pre-transition state
1869               zoomstarted(dispatch);
1870             })
1871             .tween("zoom:zoom", function() {
1872               var dx = size[0],
1873                   dy = size[1],
1874                   cx = center0 ? center0[0] : dx / 2,
1875                   cy = center0 ? center0[1] : dy / 2,
1876                   i = d3.interpolateZoom(
1877                     [(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k],
1878                     [(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k]
1879                   );
1880               return function(t) {
1881                 var l = i(t), k = dx / l[2];
1882                 this.__chart__ = view = {x: cx - l[0] * k, y: cy - l[1] * k, k: k};
1883                 zoomed(dispatch);
1884               };
1885             })
1886             .each("interrupt.zoom", function() {
1887               zoomended(dispatch);
1888             })
1889             .each("end.zoom", function() {
1890               zoomended(dispatch);
1891             });
1892       } else {
1893         this.__chart__ = view;
1894         zoomstarted(dispatch);
1895         zoomed(dispatch);
1896         zoomended(dispatch);
1897       }
1898     });
1899   }
1900
1901   zoom.translate = function(_) {
1902     if (!arguments.length) return [view.x, view.y];
1903     view = {x: +_[0], y: +_[1], k: view.k}; // copy-on-write
1904     rescale();
1905     return zoom;
1906   };
1907
1908   zoom.scale = function(_) {
1909     if (!arguments.length) return view.k;
1910     view = {x: view.x, y: view.y, k: +_}; // copy-on-write
1911     rescale();
1912     return zoom;
1913   };
1914
1915   zoom.scaleExtent = function(_) {
1916     if (!arguments.length) return scaleExtent;
1917     scaleExtent = _ == null ? d3_behavior_zoomInfinity : [+_[0], +_[1]];
1918     return zoom;
1919   };
1920
1921   zoom.center = function(_) {
1922     if (!arguments.length) return center;
1923     center = _ && [+_[0], +_[1]];
1924     return zoom;
1925   };
1926
1927   zoom.size = function(_) {
1928     if (!arguments.length) return size;
1929     size = _ && [+_[0], +_[1]];
1930     return zoom;
1931   };
1932
1933   zoom.duration = function(_) {
1934     if (!arguments.length) return duration;
1935     duration = +_; // TODO function based on interpolateZoom distance?
1936     return zoom;
1937   };
1938
1939   zoom.x = function(z) {
1940     if (!arguments.length) return x1;
1941     x1 = z;
1942     x0 = z.copy();
1943     view = {x: 0, y: 0, k: 1}; // copy-on-write
1944     return zoom;
1945   };
1946
1947   zoom.y = function(z) {
1948     if (!arguments.length) return y1;
1949     y1 = z;
1950     y0 = z.copy();
1951     view = {x: 0, y: 0, k: 1}; // copy-on-write
1952     return zoom;
1953   };
1954
1955   function location(p) {
1956     return [(p[0] - view.x) / view.k, (p[1] - view.y) / view.k];
1957   }
1958
1959   function point(l) {
1960     return [l[0] * view.k + view.x, l[1] * view.k + view.y];
1961   }
1962
1963   function scaleTo(s) {
1964     view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
1965   }
1966
1967   function translateTo(p, l) {
1968     l = point(l);
1969     view.x += p[0] - l[0];
1970     view.y += p[1] - l[1];
1971   }
1972
1973   function zoomTo(that, p, l, k) {
1974     that.__chart__ = {x: view.x, y: view.y, k: view.k};
1975
1976     scaleTo(Math.pow(2, k));
1977     translateTo(center0 = p, l);
1978
1979     that = d3.select(that);
1980     if (duration > 0) that = that.transition().duration(duration);
1981     that.call(zoom.event);
1982   }
1983
1984   function rescale() {
1985     if (x1) x1.domain(x0.range().map(function(x) { return (x - view.x) / view.k; }).map(x0.invert));
1986     if (y1) y1.domain(y0.range().map(function(y) { return (y - view.y) / view.k; }).map(y0.invert));
1987   }
1988
1989   function zoomstarted(dispatch) {
1990     if (!zooming++) dispatch({type: "zoomstart"});
1991   }
1992
1993   function zoomed(dispatch) {
1994     rescale();
1995     dispatch({type: "zoom", scale: view.k, translate: [view.x, view.y]});
1996   }
1997
1998   function zoomended(dispatch) {
1999     if (!--zooming) dispatch({type: "zoomend"});
2000     center0 = null;
2001   }
2002
2003   function mousedowned() {
2004     var that = this,
2005         target = d3.event.target,
2006         dispatch = event.of(that, arguments),
2007         dragged = 0,
2008         subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended),
2009         location0 = location(d3.mouse(that)),
2010         dragRestore = d3_event_dragSuppress(that);
2011
2012     d3_selection_interrupt.call(that);
2013     zoomstarted(dispatch);
2014
2015     function moved() {
2016       dragged = 1;
2017       translateTo(d3.mouse(that), location0);
2018       zoomed(dispatch);
2019     }
2020
2021     function ended() {
2022       subject.on(mousemove, null).on(mouseup, null);
2023       dragRestore(dragged && d3.event.target === target);
2024       zoomended(dispatch);
2025     }
2026   }
2027
2028   // These closures persist for as long as at least one touch is active.
2029   function touchstarted() {
2030     var that = this,
2031         dispatch = event.of(that, arguments),
2032         locations0 = {}, // touchstart locations
2033         distance0 = 0, // distance² between initial touches
2034         scale0, // scale when we started touching
2035         zoomName = ".zoom-" + d3.event.changedTouches[0].identifier,
2036         touchmove = "touchmove" + zoomName,
2037         touchend = "touchend" + zoomName,
2038         targets = [],
2039         subject = d3.select(that),
2040         dragRestore = d3_event_dragSuppress(that);
2041
2042     started();
2043     zoomstarted(dispatch);
2044
2045     // Workaround for Chrome issue 412723: the touchstart listener must be set
2046     // after the touchmove listener.
2047     subject.on(mousedown, null).on(touchstart, started); // prevent duplicate events
2048
2049     // Updates locations of any touches in locations0.
2050     function relocate() {
2051       var touches = d3.touches(that);
2052       scale0 = view.k;
2053       touches.forEach(function(t) {
2054         if (t.identifier in locations0) locations0[t.identifier] = location(t);
2055       });
2056       return touches;
2057     }
2058
2059     // Temporarily override touchstart while gesture is active.
2060     function started() {
2061
2062       // Listen for touchmove and touchend on the target of touchstart.
2063       var target = d3.event.target;
2064       d3.select(target).on(touchmove, moved).on(touchend, ended);
2065       targets.push(target);
2066
2067       // Only track touches started on the same subject element.
2068       var changed = d3.event.changedTouches;
2069       for (var i = 0, n = changed.length; i < n; ++i) {
2070         locations0[changed[i].identifier] = null;
2071       }
2072
2073       var touches = relocate(),
2074           now = Date.now();
2075
2076       if (touches.length === 1) {
2077         if (now - touchtime < 500) { // dbltap
2078           var p = touches[0];
2079           zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);
2080           d3_eventPreventDefault();
2081         }
2082         touchtime = now;
2083       } else if (touches.length > 1) {
2084         var p = touches[0], q = touches[1],
2085             dx = p[0] - q[0], dy = p[1] - q[1];
2086         distance0 = dx * dx + dy * dy;
2087       }
2088     }
2089
2090     function moved() {
2091       var touches = d3.touches(that),
2092           p0, l0,
2093           p1, l1;
2094
2095       d3_selection_interrupt.call(that);
2096
2097       for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
2098         p1 = touches[i];
2099         if (l1 = locations0[p1.identifier]) {
2100           if (l0) break;
2101           p0 = p1, l0 = l1;
2102         }
2103       }
2104
2105       if (l1) {
2106         var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1,
2107             scale1 = distance0 && Math.sqrt(distance1 / distance0);
2108         p0 = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];
2109         l0 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
2110         scaleTo(scale1 * scale0);
2111       }
2112
2113       touchtime = null;
2114       translateTo(p0, l0);
2115       zoomed(dispatch);
2116     }
2117
2118     function ended() {
2119       // If there are any globally-active touches remaining, remove the ended
2120       // touches from locations0.
2121       if (d3.event.touches.length) {
2122         var changed = d3.event.changedTouches;
2123         for (var i = 0, n = changed.length; i < n; ++i) {
2124           delete locations0[changed[i].identifier];
2125         }
2126         // If locations0 is not empty, then relocate and continue listening for
2127         // touchmove and touchend.
2128         for (var identifier in locations0) {
2129           return void relocate(); // locations may have detached due to rotation
2130         }
2131       }
2132       // Otherwise, remove touchmove and touchend listeners.
2133       d3.selectAll(targets).on(zoomName, null);
2134       subject.on(mousedown, mousedowned).on(touchstart, touchstarted);
2135       dragRestore();
2136       zoomended(dispatch);
2137     }
2138   }
2139
2140   function mousewheeled() {
2141     var dispatch = event.of(this, arguments);
2142     if (mousewheelTimer) clearTimeout(mousewheelTimer);
2143     else translate0 = location(center0 = center || d3.mouse(this)), d3_selection_interrupt.call(this), zoomstarted(dispatch);
2144     mousewheelTimer = setTimeout(function() { mousewheelTimer = null; zoomended(dispatch); }, 50);
2145     d3_eventPreventDefault();
2146     scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
2147     translateTo(center0, translate0);
2148     zoomed(dispatch);
2149   }
2150
2151   function dblclicked() {
2152     var p = d3.mouse(this),
2153         k = Math.log(view.k) / Math.LN2;
2154
2155     zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);
2156   }
2157
2158   return d3.rebind(zoom, event, "on");
2159 };
2160
2161 var d3_behavior_zoomInfinity = [0, Infinity], // default scale extent
2162     d3_behavior_zoomDelta, // initialized lazily
2163     d3_behavior_zoomWheel;
2164 function d3_functor(v) {
2165   return typeof v === "function" ? v : function() { return v; };
2166 }
2167
2168 d3.functor = d3_functor;
2169
2170 d3.touch = function(container, touches, identifier) {
2171   if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;
2172   if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {
2173     if ((touch = touches[i]).identifier === identifier) {
2174       return d3_mousePoint(container, touch);
2175     }
2176   }
2177 };
2178
2179 var d3_timer_queueHead,
2180     d3_timer_queueTail,
2181     d3_timer_interval, // is an interval (or frame) active?
2182     d3_timer_timeout, // is a timeout active?
2183     d3_timer_active, // active timer object
2184     d3_timer_frame = this[d3_vendorSymbol(this, "requestAnimationFrame")] || function(callback) { setTimeout(callback, 17); };
2185
2186 // The timer will continue to fire until callback returns true.
2187 d3.timer = function(callback, delay, then) {
2188   var n = arguments.length;
2189   if (n < 2) delay = 0;
2190   if (n < 3) then = Date.now();
2191
2192   // Add the callback to the tail of the queue.
2193   var time = then + delay, timer = {c: callback, t: time, f: false, n: null};
2194   if (d3_timer_queueTail) d3_timer_queueTail.n = timer;
2195   else d3_timer_queueHead = timer;
2196   d3_timer_queueTail = timer;
2197
2198   // Start animatin'!
2199   if (!d3_timer_interval) {
2200     d3_timer_timeout = clearTimeout(d3_timer_timeout);
2201     d3_timer_interval = 1;
2202     d3_timer_frame(d3_timer_step);
2203   }
2204 };
2205
2206 function d3_timer_step() {
2207   var now = d3_timer_mark(),
2208       delay = d3_timer_sweep() - now;
2209   if (delay > 24) {
2210     if (isFinite(delay)) {
2211       clearTimeout(d3_timer_timeout);
2212       d3_timer_timeout = setTimeout(d3_timer_step, delay);
2213     }
2214     d3_timer_interval = 0;
2215   } else {
2216     d3_timer_interval = 1;
2217     d3_timer_frame(d3_timer_step);
2218   }
2219 }
2220
2221 d3.timer.flush = function() {
2222   d3_timer_mark();
2223   d3_timer_sweep();
2224 };
2225
2226 function d3_timer_mark() {
2227   var now = Date.now();
2228   d3_timer_active = d3_timer_queueHead;
2229   while (d3_timer_active) {
2230     if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t);
2231     d3_timer_active = d3_timer_active.n;
2232   }
2233   return now;
2234 }
2235
2236 // Flush after callbacks to avoid concurrent queue modification.
2237 // Returns the time of the earliest active timer, post-sweep.
2238 function d3_timer_sweep() {
2239   var t0,
2240       t1 = d3_timer_queueHead,
2241       time = Infinity;
2242   while (t1) {
2243     if (t1.f) {
2244       t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
2245     } else {
2246       if (t1.t < time) time = t1.t;
2247       t1 = (t0 = t1).n;
2248     }
2249   }
2250   d3_timer_queueTail = t0;
2251   return time;
2252 }
2253 d3.geo = {};
2254
2255 d3.geo.stream = function(object, listener) {
2256   if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
2257     d3_geo_streamObjectType[object.type](object, listener);
2258   } else {
2259     d3_geo_streamGeometry(object, listener);
2260   }
2261 };
2262
2263 function d3_geo_streamGeometry(geometry, listener) {
2264   if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {
2265     d3_geo_streamGeometryType[geometry.type](geometry, listener);
2266   }
2267 }
2268
2269 var d3_geo_streamObjectType = {
2270   Feature: function(feature, listener) {
2271     d3_geo_streamGeometry(feature.geometry, listener);
2272   },
2273   FeatureCollection: function(object, listener) {
2274     var features = object.features, i = -1, n = features.length;
2275     while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);
2276   }
2277 };
2278
2279 var d3_geo_streamGeometryType = {
2280   Sphere: function(object, listener) {
2281     listener.sphere();
2282   },
2283   Point: function(object, listener) {
2284     object = object.coordinates;
2285     listener.point(object[0], object[1], object[2]);
2286   },
2287   MultiPoint: function(object, listener) {
2288     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2289     while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);
2290   },
2291   LineString: function(object, listener) {
2292     d3_geo_streamLine(object.coordinates, listener, 0);
2293   },
2294   MultiLineString: function(object, listener) {
2295     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2296     while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);
2297   },
2298   Polygon: function(object, listener) {
2299     d3_geo_streamPolygon(object.coordinates, listener);
2300   },
2301   MultiPolygon: function(object, listener) {
2302     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2303     while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);
2304   },
2305   GeometryCollection: function(object, listener) {
2306     var geometries = object.geometries, i = -1, n = geometries.length;
2307     while (++i < n) d3_geo_streamGeometry(geometries[i], listener);
2308   }
2309 };
2310
2311 function d3_geo_streamLine(coordinates, listener, closed) {
2312   var i = -1, n = coordinates.length - closed, coordinate;
2313   listener.lineStart();
2314   while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);
2315   listener.lineEnd();
2316 }
2317
2318 function d3_geo_streamPolygon(coordinates, listener) {
2319   var i = -1, n = coordinates.length;
2320   listener.polygonStart();
2321   while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);
2322   listener.polygonEnd();
2323 }
2324
2325 d3.geo.length = function(object) {
2326   d3_geo_lengthSum = 0;
2327   d3.geo.stream(object, d3_geo_length);
2328   return d3_geo_lengthSum;
2329 };
2330
2331 var d3_geo_lengthSum;
2332
2333 var d3_geo_length = {
2334   sphere: d3_noop,
2335   point: d3_noop,
2336   lineStart: d3_geo_lengthLineStart,
2337   lineEnd: d3_noop,
2338   polygonStart: d3_noop,
2339   polygonEnd: d3_noop
2340 };
2341
2342 function d3_geo_lengthLineStart() {
2343   var λ0, sinφ0, cosφ0;
2344
2345   d3_geo_length.point = function(λ, φ) {
2346     λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
2347     d3_geo_length.point = nextPoint;
2348   };
2349
2350   d3_geo_length.lineEnd = function() {
2351     d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
2352   };
2353
2354   function nextPoint(λ, φ) {
2355     var sinφ = Math.sin(φ *= d3_radians),
2356         cosφ = Math.cos(φ),
2357         t = abs((λ *= d3_radians) - λ0),
2358         cosΔλ = Math.cos(t);
2359     d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
2360     λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
2361   }
2362 }
2363 function d3_identity(d) {
2364   return d;
2365 }
2366 function d3_true() {
2367   return true;
2368 }
2369
2370 function d3_geo_spherical(cartesian) {
2371   return [
2372     Math.atan2(cartesian[1], cartesian[0]),
2373     d3_asin(cartesian[2])
2374   ];
2375 }
2376
2377 function d3_geo_sphericalEqual(a, b) {
2378   return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;
2379 }
2380
2381 // General spherical polygon clipping algorithm: takes a polygon, cuts it into
2382 // visible line segments and rejoins the segments by interpolating along the
2383 // clip edge.
2384 function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {
2385   var subject = [],
2386       clip = [];
2387
2388   segments.forEach(function(segment) {
2389     if ((n = segment.length - 1) <= 0) return;
2390     var n, p0 = segment[0], p1 = segment[n];
2391
2392     // If the first and last points of a segment are coincident, then treat as
2393     // a closed ring.
2394     // TODO if all rings are closed, then the winding order of the exterior
2395     // ring should be checked.
2396     if (d3_geo_sphericalEqual(p0, p1)) {
2397       listener.lineStart();
2398       for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
2399       listener.lineEnd();
2400       return;
2401     }
2402
2403     var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true),
2404         b = new d3_geo_clipPolygonIntersection(p0, null, a, false);
2405     a.o = b;
2406     subject.push(a);
2407     clip.push(b);
2408     a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);
2409     b = new d3_geo_clipPolygonIntersection(p1, null, a, true);
2410     a.o = b;
2411     subject.push(a);
2412     clip.push(b);
2413   });
2414   clip.sort(compare);
2415   d3_geo_clipPolygonLinkCircular(subject);
2416   d3_geo_clipPolygonLinkCircular(clip);
2417   if (!subject.length) return;
2418
2419   for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {
2420     clip[i].e = entry = !entry;
2421   }
2422
2423   var start = subject[0],
2424       points,
2425       point;
2426   while (1) {
2427     // Find first unvisited intersection.
2428     var current = start,
2429         isSubject = true;
2430     while (current.v) if ((current = current.n) === start) return;
2431     points = current.z;
2432     listener.lineStart();
2433     do {
2434       current.v = current.o.v = true;
2435       if (current.e) {
2436         if (isSubject) {
2437           for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);
2438         } else {
2439           interpolate(current.x, current.n.x, 1, listener);
2440         }
2441         current = current.n;
2442       } else {
2443         if (isSubject) {
2444           points = current.p.z;
2445           for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);
2446         } else {
2447           interpolate(current.x, current.p.x, -1, listener);
2448         }
2449         current = current.p;
2450       }
2451       current = current.o;
2452       points = current.z;
2453       isSubject = !isSubject;
2454     } while (!current.v);
2455     listener.lineEnd();
2456   }
2457 }
2458
2459 function d3_geo_clipPolygonLinkCircular(array) {
2460   if (!(n = array.length)) return;
2461   var n,
2462       i = 0,
2463       a = array[0],
2464       b;
2465   while (++i < n) {
2466     a.n = b = array[i];
2467     b.p = a;
2468     a = b;
2469   }
2470   a.n = b = array[0];
2471   b.p = a;
2472 }
2473
2474 function d3_geo_clipPolygonIntersection(point, points, other, entry) {
2475   this.x = point;
2476   this.z = points;
2477   this.o = other; // another intersection
2478   this.e = entry; // is an entry?
2479   this.v = false; // visited
2480   this.n = this.p = null; // next & previous
2481 }
2482
2483 function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
2484   return function(rotate, listener) {
2485     var line = clipLine(listener),
2486         rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);
2487
2488     var clip = {
2489       point: point,
2490       lineStart: lineStart,
2491       lineEnd: lineEnd,
2492       polygonStart: function() {
2493         clip.point = pointRing;
2494         clip.lineStart = ringStart;
2495         clip.lineEnd = ringEnd;
2496         segments = [];
2497         polygon = [];
2498       },
2499       polygonEnd: function() {
2500         clip.point = point;
2501         clip.lineStart = lineStart;
2502         clip.lineEnd = lineEnd;
2503
2504         segments = d3.merge(segments);
2505         var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
2506         if (segments.length) {
2507           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2508           d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
2509         } else if (clipStartInside) {
2510           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2511           listener.lineStart();
2512           interpolate(null, null, 1, listener);
2513           listener.lineEnd();
2514         }
2515         if (polygonStarted) listener.polygonEnd(), polygonStarted = false;
2516         segments = polygon = null;
2517       },
2518       sphere: function() {
2519         listener.polygonStart();
2520         listener.lineStart();
2521         interpolate(null, null, 1, listener);
2522         listener.lineEnd();
2523         listener.polygonEnd();
2524       }
2525     };
2526
2527     function point(λ, φ) {
2528       var point = rotate(λ, φ);
2529       if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);
2530     }
2531     function pointLine(λ, φ) {
2532       var point = rotate(λ, φ);
2533       line.point(point[0], point[1]);
2534     }
2535     function lineStart() { clip.point = pointLine; line.lineStart(); }
2536     function lineEnd() { clip.point = point; line.lineEnd(); }
2537
2538     var segments;
2539
2540     var buffer = d3_geo_clipBufferListener(),
2541         ringListener = clipLine(buffer),
2542         polygonStarted = false,
2543         polygon,
2544         ring;
2545
2546     function pointRing(λ, φ) {
2547       ring.push([λ, φ]);
2548       var point = rotate(λ, φ);
2549       ringListener.point(point[0], point[1]);
2550     }
2551
2552     function ringStart() {
2553       ringListener.lineStart();
2554       ring = [];
2555     }
2556
2557     function ringEnd() {
2558       pointRing(ring[0][0], ring[0][1]);
2559       ringListener.lineEnd();
2560
2561       var clean = ringListener.clean(),
2562           ringSegments = buffer.buffer(),
2563           segment,
2564           n = ringSegments.length;
2565
2566       ring.pop();
2567       polygon.push(ring);
2568       ring = null;
2569
2570       if (!n) return;
2571
2572       // No intersections.
2573       if (clean & 1) {
2574         segment = ringSegments[0];
2575         var n = segment.length - 1,
2576             i = -1,
2577             point;
2578         if (n > 0) {
2579           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2580           listener.lineStart();
2581           while (++i < n) listener.point((point = segment[i])[0], point[1]);
2582           listener.lineEnd();
2583         }
2584         return;
2585       }
2586
2587       // Rejoin connected segments.
2588       // TODO reuse bufferListener.rejoin()?
2589       if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
2590
2591       segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
2592     }
2593
2594     return clip;
2595   };
2596 }
2597
2598 function d3_geo_clipSegmentLength1(segment) {
2599   return segment.length > 1;
2600 }
2601
2602 function d3_geo_clipBufferListener() {
2603   var lines = [],
2604       line;
2605   return {
2606     lineStart: function() { lines.push(line = []); },
2607     point: function(λ, φ) { line.push([λ, φ]); },
2608     lineEnd: d3_noop,
2609     buffer: function() {
2610       var buffer = lines;
2611       lines = [];
2612       line = null;
2613       return buffer;
2614     },
2615     rejoin: function() {
2616       if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
2617     }
2618   };
2619 }
2620
2621 // Intersection points are sorted along the clip edge. For both antimeridian
2622 // cutting and circle clipping, the same comparison is used.
2623 function d3_geo_clipSort(a, b) {
2624   return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1])
2625        - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
2626 }
2627
2628 var d3_geo_clipAntimeridian = d3_geo_clip(
2629     d3_true,
2630     d3_geo_clipAntimeridianLine,
2631     d3_geo_clipAntimeridianInterpolate,
2632     [-π, -π / 2]);
2633
2634 // Takes a line and cuts into visible segments. Return values:
2635 //   0: there were intersections or the line was empty.
2636 //   1: no intersections.
2637 //   2: there were intersections, and the first and last segments should be
2638 //      rejoined.
2639 function d3_geo_clipAntimeridianLine(listener) {
2640   var λ0 = NaN,
2641       φ0 = NaN,
2642       sλ0 = NaN,
2643       clean; // no intersections
2644
2645   return {
2646     lineStart: function() {
2647       listener.lineStart();
2648       clean = 1;
2649     },
2650     point: function(λ1, φ1) {
2651       var sλ1 = λ1 > 0 ? π : -π,
2652           dλ = abs(λ1 - λ0);
2653       if (abs(dλ - π) < ε) { // line crosses a pole
2654         listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);
2655         listener.point(sλ0, φ0);
2656         listener.lineEnd();
2657         listener.lineStart();
2658         listener.point(sλ1, φ0);
2659         listener.point(λ1, φ0);
2660         clean = 0;
2661       } else if (sλ0 !== sλ1 && dλ >= π) { // line crosses antimeridian
2662         // handle degeneracies
2663         if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;
2664         if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;
2665         φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);
2666         listener.point(sλ0, φ0);
2667         listener.lineEnd();
2668         listener.lineStart();
2669         listener.point(sλ1, φ0);
2670         clean = 0;
2671       }
2672       listener.point(λ0 = λ1, φ0 = φ1);
2673       sλ0 = sλ1;
2674     },
2675     lineEnd: function() {
2676       listener.lineEnd();
2677       λ0 = φ0 = NaN;
2678     },
2679     // if there are intersections, we always rejoin the first and last segments.
2680     clean: function() { return 2 - clean; }
2681   };
2682 }
2683
2684 function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
2685   var cosφ0,
2686       cosφ1,
2687       sinλ0_λ1 = Math.sin(λ0 - λ1);
2688   return abs(sinλ0_λ1) > ε
2689       ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1)
2690                  - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0))
2691                  / (cosφ0 * cosφ1 * sinλ0_λ1))
2692       : (φ0 + φ1) / 2;
2693 }
2694
2695 function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {
2696   var φ;
2697   if (from == null) {
2698     φ = direction * halfπ;
2699     listener.point(-π,  φ);
2700     listener.point( 0,  φ);
2701     listener.point( π,  φ);
2702     listener.point( π,  0);
2703     listener.point( π, -φ);
2704     listener.point( 0, -φ);
2705     listener.point(-π, -φ);
2706     listener.point(-π,  0);
2707     listener.point(-π,  φ);
2708   } else if (abs(from[0] - to[0]) > ε) {
2709     var s = from[0] < to[0] ? π : -π;
2710     φ = direction * s / 2;
2711     listener.point(-s, φ);
2712     listener.point( 0, φ);
2713     listener.point( s, φ);
2714   } else {
2715     listener.point(to[0], to[1]);
2716   }
2717 }
2718 // TODO
2719 // cross and scale return new vectors,
2720 // whereas add and normalize operate in-place
2721
2722 function d3_geo_cartesian(spherical) {
2723   var λ = spherical[0],
2724       φ = spherical[1],
2725       cosφ = Math.cos(φ);
2726   return [
2727     cosφ * Math.cos(λ),
2728     cosφ * Math.sin(λ),
2729     Math.sin(φ)
2730   ];
2731 }
2732
2733 function d3_geo_cartesianDot(a, b) {
2734   return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
2735 }
2736
2737 function d3_geo_cartesianCross(a, b) {
2738   return [
2739     a[1] * b[2] - a[2] * b[1],
2740     a[2] * b[0] - a[0] * b[2],
2741     a[0] * b[1] - a[1] * b[0]
2742   ];
2743 }
2744
2745 function d3_geo_cartesianAdd(a, b) {
2746   a[0] += b[0];
2747   a[1] += b[1];
2748   a[2] += b[2];
2749 }
2750
2751 function d3_geo_cartesianScale(vector, k) {
2752   return [
2753     vector[0] * k,
2754     vector[1] * k,
2755     vector[2] * k
2756   ];
2757 }
2758
2759 function d3_geo_cartesianNormalize(d) {
2760   var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
2761   d[0] /= l;
2762   d[1] /= l;
2763   d[2] /= l;
2764 }
2765 function d3_geo_compose(a, b) {
2766
2767   function compose(x, y) {
2768     return x = a(x, y), b(x[0], x[1]);
2769   }
2770
2771   if (a.invert && b.invert) compose.invert = function(x, y) {
2772     return x = b.invert(x, y), x && a.invert(x[0], x[1]);
2773   };
2774
2775   return compose;
2776 }
2777
2778 function d3_geo_equirectangular(λ, φ) {
2779   return [λ, φ];
2780 }
2781
2782 (d3.geo.equirectangular = function() {
2783   return d3_geo_projection(d3_geo_equirectangular);
2784 }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
2785
2786 d3.geo.rotation = function(rotate) {
2787   rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);
2788
2789   function forward(coordinates) {
2790     coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
2791     return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
2792   }
2793
2794   forward.invert = function(coordinates) {
2795     coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
2796     return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
2797   };
2798
2799   return forward;
2800 };
2801
2802 function d3_geo_identityRotation(λ, φ) {
2803   return [λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ];
2804 }
2805
2806 d3_geo_identityRotation.invert = d3_geo_equirectangular;
2807
2808 // Note: |δλ| must be < 2π
2809 function d3_geo_rotation(δλ, δφ, δγ) {
2810   return δλ ? (δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ))
2811     : d3_geo_rotationλ(δλ))
2812     : (δφ || δγ ? d3_geo_rotationφγ(δφ, δγ)
2813     : d3_geo_identityRotation);
2814 }
2815
2816 function d3_geo_forwardRotationλ(δλ) {
2817   return function(λ, φ) {
2818     return λ += δλ, [λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ];
2819   };
2820 }
2821
2822 function d3_geo_rotationλ(δλ) {
2823   var rotation = d3_geo_forwardRotationλ(δλ);
2824   rotation.invert = d3_geo_forwardRotationλ(-δλ);
2825   return rotation;
2826 }
2827
2828 function d3_geo_rotationφγ(δφ, δγ) {
2829   var cosδφ = Math.cos(δφ),
2830       sinδφ = Math.sin(δφ),
2831       cosδγ = Math.cos(δγ),
2832       sinδγ = Math.sin(δγ);
2833
2834   function rotation(λ, φ) {
2835     var cosφ = Math.cos(φ),
2836         x = Math.cos(λ) * cosφ,
2837         y = Math.sin(λ) * cosφ,
2838         z = Math.sin(φ),
2839         k = z * cosδφ + x * sinδφ;
2840     return [
2841       Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ),
2842       d3_asin(k * cosδγ + y * sinδγ)
2843     ];
2844   }
2845
2846   rotation.invert = function(λ, φ) {
2847     var cosφ = Math.cos(φ),
2848         x = Math.cos(λ) * cosφ,
2849         y = Math.sin(λ) * cosφ,
2850         z = Math.sin(φ),
2851         k = z * cosδγ - y * sinδγ;
2852     return [
2853       Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ),
2854       d3_asin(k * cosδφ - x * sinδφ)
2855     ];
2856   };
2857
2858   return rotation;
2859 }
2860
2861 d3.geo.circle = function() {
2862   var origin = [0, 0],
2863       angle,
2864       precision = 6,
2865       interpolate;
2866
2867   function circle() {
2868     var center = typeof origin === "function" ? origin.apply(this, arguments) : origin,
2869         rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert,
2870         ring = [];
2871
2872     interpolate(null, null, 1, {
2873       point: function(x, y) {
2874         ring.push(x = rotate(x, y));
2875         x[0] *= d3_degrees, x[1] *= d3_degrees;
2876       }
2877     });
2878
2879     return {type: "Polygon", coordinates: [ring]};
2880   }
2881
2882   circle.origin = function(x) {
2883     if (!arguments.length) return origin;
2884     origin = x;
2885     return circle;
2886   };
2887
2888   circle.angle = function(x) {
2889     if (!arguments.length) return angle;
2890     interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);
2891     return circle;
2892   };
2893
2894   circle.precision = function(_) {
2895     if (!arguments.length) return precision;
2896     interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);
2897     return circle;
2898   };
2899
2900   return circle.angle(90);
2901 };
2902
2903 // Interpolates along a circle centered at [0°, 0°], with a given radius and
2904 // precision.
2905 function d3_geo_circleInterpolate(radius, precision) {
2906   var cr = Math.cos(radius),
2907       sr = Math.sin(radius);
2908   return function(from, to, direction, listener) {
2909     var step = direction * precision;
2910     if (from != null) {
2911       from = d3_geo_circleAngle(cr, from);
2912       to = d3_geo_circleAngle(cr, to);
2913       if (direction > 0 ? from < to: from > to) from += direction * τ;
2914     } else {
2915       from = radius + direction * τ;
2916       to = radius - .5 * step;
2917     }
2918     for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {
2919       listener.point((point = d3_geo_spherical([
2920         cr,
2921         -sr * Math.cos(t),
2922         -sr * Math.sin(t)
2923       ]))[0], point[1]);
2924     }
2925   };
2926 }
2927
2928 // Signed angle of a cartesian point relative to [cr, 0, 0].
2929 function d3_geo_circleAngle(cr, point) {
2930   var a = d3_geo_cartesian(point);
2931   a[0] -= cr;
2932   d3_geo_cartesianNormalize(a);
2933   var angle = d3_acos(-a[1]);
2934   return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
2935 }
2936 // Adds floating point numbers with twice the normal precision.
2937 // Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and
2938 // Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)
2939 // 305–363 (1997).
2940 // Code adapted from GeographicLib by Charles F. F. Karney,
2941 // http://geographiclib.sourceforge.net/
2942 // See lib/geographiclib/LICENSE for details.
2943
2944 function d3_adder() {}
2945
2946 d3_adder.prototype = {
2947   s: 0, // rounded value
2948   t: 0, // exact error
2949   add: function(y) {
2950     d3_adderSum(y, this.t, d3_adderTemp);
2951     d3_adderSum(d3_adderTemp.s, this.s, this);
2952     if (this.s) this.t += d3_adderTemp.t;
2953     else this.s = d3_adderTemp.t;
2954   },
2955   reset: function() {
2956     this.s = this.t = 0;
2957   },
2958   valueOf: function() {
2959     return this.s;
2960   }
2961 };
2962
2963 var d3_adderTemp = new d3_adder;
2964
2965 function d3_adderSum(a, b, o) {
2966   var x = o.s = a + b, // a + b
2967       bv = x - a, av = x - bv; // b_virtual & a_virtual
2968   o.t = (a - av) + (b - bv); // a_roundoff + b_roundoff
2969 }
2970
2971 d3.geo.area = function(object) {
2972   d3_geo_areaSum = 0;
2973   d3.geo.stream(object, d3_geo_area);
2974   return d3_geo_areaSum;
2975 };
2976
2977 var d3_geo_areaSum,
2978     d3_geo_areaRingSum = new d3_adder;
2979
2980 var d3_geo_area = {
2981   sphere: function() { d3_geo_areaSum += 4 * π; },
2982   point: d3_noop,
2983   lineStart: d3_noop,
2984   lineEnd: d3_noop,
2985
2986   // Only count area for polygon rings.
2987   polygonStart: function() {
2988     d3_geo_areaRingSum.reset();
2989     d3_geo_area.lineStart = d3_geo_areaRingStart;
2990   },
2991   polygonEnd: function() {
2992     var area = 2 * d3_geo_areaRingSum;
2993     d3_geo_areaSum += area < 0 ? 4 * π + area : area;
2994     d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
2995   }
2996 };
2997
2998 function d3_geo_areaRingStart() {
2999   var λ00, φ00, λ0, cosφ0, sinφ0; // start point and previous point
3000
3001   // For the first point, …
3002   d3_geo_area.point = function(λ, φ) {
3003     d3_geo_area.point = nextPoint;
3004     λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), sinφ0 = Math.sin(φ);
3005   };
3006
3007   // For subsequent points, …
3008   function nextPoint(λ, φ) {
3009     λ *= d3_radians;
3010     φ = φ * d3_radians / 2 + π / 4; // half the angular distance from south pole
3011
3012     // Spherical excess E for a spherical triangle with vertices: south pole,
3013     // previous point, current point.  Uses a formula derived from Cagnoli’s
3014     // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
3015     var dλ = λ - λ0,
3016         sdλ = dλ >= 0 ? 1 : -1,
3017         adλ = sdλ * dλ,
3018         cosφ = Math.cos(φ),
3019         sinφ = Math.sin(φ),
3020         k = sinφ0 * sinφ,
3021         u = cosφ0 * cosφ + k * Math.cos(adλ),
3022         v = k * sdλ * Math.sin(adλ);
3023     d3_geo_areaRingSum.add(Math.atan2(v, u));
3024
3025     // Advance the previous points.
3026     λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
3027   }
3028
3029   // For the last point, return to the start.
3030   d3_geo_area.lineEnd = function() {
3031     nextPoint(λ00, φ00);
3032   };
3033 }
3034
3035 function d3_geo_pointInPolygon(point, polygon) {
3036   var meridian = point[0],
3037       parallel = point[1],
3038       meridianNormal = [Math.sin(meridian), -Math.cos(meridian), 0],
3039       polarAngle = 0,
3040       winding = 0;
3041   d3_geo_areaRingSum.reset();
3042
3043   for (var i = 0, n = polygon.length; i < n; ++i) {
3044     var ring = polygon[i],
3045         m = ring.length;
3046     if (!m) continue;
3047     var point0 = ring[0],
3048         λ0 = point0[0],
3049         φ0 = point0[1] / 2 + π / 4,
3050         sinφ0 = Math.sin(φ0),
3051         cosφ0 = Math.cos(φ0),
3052         j = 1;
3053
3054     while (true) {
3055       if (j === m) j = 0;
3056       point = ring[j];
3057       var λ = point[0],
3058           φ = point[1] / 2 + π / 4,
3059           sinφ = Math.sin(φ),
3060           cosφ = Math.cos(φ),
3061           dλ = λ - λ0,
3062           sdλ = dλ >= 0 ? 1 : -1,
3063           adλ = sdλ * dλ,
3064           antimeridian = adλ > π,
3065           k = sinφ0 * sinφ;
3066       d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
3067
3068       polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
3069
3070       // Are the longitudes either side of the point's meridian, and are the
3071       // latitudes smaller than the parallel?
3072       if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
3073         var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
3074         d3_geo_cartesianNormalize(arc);
3075         var intersection = d3_geo_cartesianCross(meridianNormal, arc);
3076         d3_geo_cartesianNormalize(intersection);
3077         var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
3078         if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
3079           winding += antimeridian ^ dλ >= 0 ? 1 : -1;
3080         }
3081       }
3082       if (!j++) break;
3083       λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
3084     }
3085   }
3086
3087   // First, determine whether the South pole is inside or outside:
3088   //
3089   // It is inside if:
3090   // * the polygon winds around it in a clockwise direction.
3091   // * the polygon does not (cumulatively) wind around it, but has a negative
3092   //   (counter-clockwise) area.
3093   //
3094   // Second, count the (signed) number of times a segment crosses a meridian
3095   // from the point to the South pole.  If it is zero, then the point is the
3096   // same side as the South pole.
3097
3098   return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ (winding & 1);
3099 }
3100
3101 // Clip features against a small circle centered at [0°, 0°].
3102 function d3_geo_clipCircle(radius) {
3103   var cr = Math.cos(radius),
3104       smallRadius = cr > 0,
3105       notHemisphere = abs(cr) > ε, // TODO optimise for this common case
3106       interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
3107
3108   return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-π, radius - π]);
3109
3110   function visible(λ, φ) {
3111     return Math.cos(λ) * Math.cos(φ) > cr;
3112   }
3113
3114   // Takes a line and cuts into visible segments. Return values used for
3115   // polygon clipping:
3116   //   0: there were intersections or the line was empty.
3117   //   1: no intersections.
3118   //   2: there were intersections, and the first and last segments should be
3119   //      rejoined.
3120   function clipLine(listener) {
3121     var point0, // previous point
3122         c0, // code for previous point
3123         v0, // visibility of previous point
3124         v00, // visibility of first point
3125         clean; // no intersections
3126     return {
3127       lineStart: function() {
3128         v00 = v0 = false;
3129         clean = 1;
3130       },
3131       point: function(λ, φ) {
3132         var point1 = [λ, φ],
3133             point2,
3134             v = visible(λ, φ),
3135             c = smallRadius
3136               ? v ? 0 : code(λ, φ)
3137               : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;
3138         if (!point0 && (v00 = v0 = v)) listener.lineStart();
3139         // Handle degeneracies.
3140         // TODO ignore if not clipping polygons.
3141         if (v !== v0) {
3142           point2 = intersect(point0, point1);
3143           if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {
3144             point1[0] += ε;
3145             point1[1] += ε;
3146             v = visible(point1[0], point1[1]);
3147           }
3148         }
3149         if (v !== v0) {
3150           clean = 0;
3151           if (v) {
3152             // outside going in
3153             listener.lineStart();
3154             point2 = intersect(point1, point0);
3155             listener.point(point2[0], point2[1]);
3156           } else {
3157             // inside going out
3158             point2 = intersect(point0, point1);
3159             listener.point(point2[0], point2[1]);
3160             listener.lineEnd();
3161           }
3162           point0 = point2;
3163         } else if (notHemisphere && point0 && smallRadius ^ v) {
3164           var t;
3165           // If the codes for two points are different, or are both zero,
3166           // and there this segment intersects with the small circle.
3167           if (!(c & c0) && (t = intersect(point1, point0, true))) {
3168             clean = 0;
3169             if (smallRadius) {
3170               listener.lineStart();
3171               listener.point(t[0][0], t[0][1]);
3172               listener.point(t[1][0], t[1][1]);
3173               listener.lineEnd();
3174             } else {
3175               listener.point(t[1][0], t[1][1]);
3176               listener.lineEnd();
3177               listener.lineStart();
3178               listener.point(t[0][0], t[0][1]);
3179             }
3180           }
3181         }
3182         if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {
3183           listener.point(point1[0], point1[1]);
3184         }
3185         point0 = point1, v0 = v, c0 = c;
3186       },
3187       lineEnd: function() {
3188         if (v0) listener.lineEnd();
3189         point0 = null;
3190       },
3191       // Rejoin first and last segments if there were intersections and the first
3192       // and last points were visible.
3193       clean: function() { return clean | ((v00 && v0) << 1); }
3194     };
3195   }
3196
3197   // Intersects the great circle between a and b with the clip circle.
3198   function intersect(a, b, two) {
3199     var pa = d3_geo_cartesian(a),
3200         pb = d3_geo_cartesian(b);
3201
3202     // We have two planes, n1.p = d1 and n2.p = d2.
3203     // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).
3204     var n1 = [1, 0, 0], // normal
3205         n2 = d3_geo_cartesianCross(pa, pb),
3206         n2n2 = d3_geo_cartesianDot(n2, n2),
3207         n1n2 = n2[0], // d3_geo_cartesianDot(n1, n2),
3208         determinant = n2n2 - n1n2 * n1n2;
3209
3210     // Two polar points.
3211     if (!determinant) return !two && a;
3212
3213     var c1 =  cr * n2n2 / determinant,
3214         c2 = -cr * n1n2 / determinant,
3215         n1xn2 = d3_geo_cartesianCross(n1, n2),
3216         A = d3_geo_cartesianScale(n1, c1),
3217         B = d3_geo_cartesianScale(n2, c2);
3218     d3_geo_cartesianAdd(A, B);
3219
3220     // Solve |p(t)|^2 = 1.
3221     var u = n1xn2,
3222         w = d3_geo_cartesianDot(A, u),
3223         uu = d3_geo_cartesianDot(u, u),
3224         t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);
3225
3226     if (t2 < 0) return;
3227
3228     var t = Math.sqrt(t2),
3229         q = d3_geo_cartesianScale(u, (-w - t) / uu);
3230     d3_geo_cartesianAdd(q, A);
3231     q = d3_geo_spherical(q);
3232     if (!two) return q;
3233
3234     // Two intersection points.
3235     var λ0 = a[0],
3236         λ1 = b[0],
3237         φ0 = a[1],
3238         φ1 = b[1],
3239         z;
3240     if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;
3241     var δλ = λ1 - λ0,
3242         polar = abs(δλ - π) < ε,
3243         meridian = polar || δλ < ε;
3244
3245     if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;
3246
3247     // Check that the first point is between a and b.
3248     if (meridian
3249         ? polar
3250           ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1)
3251           : φ0 <= q[1] && q[1] <= φ1
3252         : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {
3253       var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);
3254       d3_geo_cartesianAdd(q1, A);
3255       return [q, d3_geo_spherical(q1)];
3256     }
3257   }
3258
3259   // Generates a 4-bit vector representing the location of a point relative to
3260   // the small circle's bounding box.
3261   function code(λ, φ) {
3262     var r = smallRadius ? radius : π - radius,
3263         code = 0;
3264     if (λ < -r) code |= 1; // left
3265     else if (λ > r) code |= 2; // right
3266     if (φ < -r) code |= 4; // below
3267     else if (φ > r) code |= 8; // above
3268     return code;
3269   }
3270 }
3271
3272 // Liang–Barsky line clipping.
3273 function d3_geom_clipLine(x0, y0, x1, y1) {
3274   return function(line) {
3275     var a = line.a,
3276         b = line.b,
3277         ax = a.x,
3278         ay = a.y,
3279         bx = b.x,
3280         by = b.y,
3281         t0 = 0,
3282         t1 = 1,
3283         dx = bx - ax,
3284         dy = by - ay,
3285         r;
3286
3287     r = x0 - ax;
3288     if (!dx && r > 0) return;
3289     r /= dx;
3290     if (dx < 0) {
3291       if (r < t0) return;
3292       if (r < t1) t1 = r;
3293     } else if (dx > 0) {
3294       if (r > t1) return;
3295       if (r > t0) t0 = r;
3296     }
3297
3298     r = x1 - ax;
3299     if (!dx && r < 0) return;
3300     r /= dx;
3301     if (dx < 0) {
3302       if (r > t1) return;
3303       if (r > t0) t0 = r;
3304     } else if (dx > 0) {
3305       if (r < t0) return;
3306       if (r < t1) t1 = r;
3307     }
3308
3309     r = y0 - ay;
3310     if (!dy && r > 0) return;
3311     r /= dy;
3312     if (dy < 0) {
3313       if (r < t0) return;
3314       if (r < t1) t1 = r;
3315     } else if (dy > 0) {
3316       if (r > t1) return;
3317       if (r > t0) t0 = r;
3318     }
3319
3320     r = y1 - ay;
3321     if (!dy && r < 0) return;
3322     r /= dy;
3323     if (dy < 0) {
3324       if (r > t1) return;
3325       if (r > t0) t0 = r;
3326     } else if (dy > 0) {
3327       if (r < t0) return;
3328       if (r < t1) t1 = r;
3329     }
3330
3331     if (t0 > 0) line.a = {x: ax + t0 * dx, y: ay + t0 * dy};
3332     if (t1 < 1) line.b = {x: ax + t1 * dx, y: ay + t1 * dy};
3333     return line;
3334   };
3335 }
3336
3337 var d3_geo_clipExtentMAX = 1e9;
3338
3339 d3.geo.clipExtent = function() {
3340   var x0, y0, x1, y1,
3341       stream,
3342       clip,
3343       clipExtent = {
3344         stream: function(output) {
3345           if (stream) stream.valid = false;
3346           stream = clip(output);
3347           stream.valid = true; // allow caching by d3.geo.path
3348           return stream;
3349         },
3350         extent: function(_) {
3351           if (!arguments.length) return [[x0, y0], [x1, y1]];
3352           clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);
3353           if (stream) stream.valid = false, stream = null;
3354           return clipExtent;
3355         }
3356       };
3357   return clipExtent.extent([[0, 0], [960, 500]]);
3358 };
3359
3360 function d3_geo_clipExtent(x0, y0, x1, y1) {
3361   return function(listener) {
3362     var listener_ = listener,
3363         bufferListener = d3_geo_clipBufferListener(),
3364         clipLine = d3_geom_clipLine(x0, y0, x1, y1),
3365         segments,
3366         polygon,
3367         ring;
3368
3369     var clip = {
3370       point: point,
3371       lineStart: lineStart,
3372       lineEnd: lineEnd,
3373       polygonStart: function() {
3374         listener = bufferListener;
3375         segments = [];
3376         polygon = [];
3377         clean = true;
3378       },
3379       polygonEnd: function() {
3380         listener = listener_;
3381         segments = d3.merge(segments);
3382         var clipStartInside = insidePolygon([x0, y1]),
3383             inside = clean && clipStartInside,
3384             visible = segments.length;
3385         if (inside || visible) {
3386           listener.polygonStart();
3387           if (inside) {
3388             listener.lineStart();
3389             interpolate(null, null, 1, listener);
3390             listener.lineEnd();
3391           }
3392           if (visible) {
3393             d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);
3394           }
3395           listener.polygonEnd();
3396         }
3397         segments = polygon = ring = null;
3398       }
3399     };
3400
3401     function insidePolygon(p) {
3402       var wn = 0, // the winding number counter
3403           n = polygon.length,
3404           y = p[1];
3405
3406       for (var i = 0; i < n; ++i) {
3407         for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {
3408           b = v[j];
3409           if (a[1] <= y) {
3410             if (b[1] >  y && d3_cross2d(a, b, p) > 0) ++wn;
3411           } else {
3412             if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;
3413           }
3414           a = b;
3415         }
3416       }
3417       return wn !== 0;
3418     }
3419
3420     function interpolate(from, to, direction, listener) {
3421       var a = 0, a1 = 0;
3422       if (from == null ||
3423           (a = corner(from, direction)) !== (a1 = corner(to, direction)) ||
3424           comparePoints(from, to) < 0 ^ direction > 0) {
3425         do {
3426           listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
3427         } while ((a = (a + direction + 4) % 4) !== a1);
3428       } else {
3429         listener.point(to[0], to[1]);
3430       }
3431     }
3432
3433     function pointVisible(x, y) {
3434       return x0 <= x && x <= x1 && y0 <= y && y <= y1;
3435     }
3436
3437     function point(x, y) {
3438       if (pointVisible(x, y)) listener.point(x, y);
3439     }
3440
3441     var x__, y__, v__, // first point
3442         x_, y_, v_, // previous point
3443         first,
3444         clean;
3445
3446     function lineStart() {
3447       clip.point = linePoint;
3448       if (polygon) polygon.push(ring = []);
3449       first = true;
3450       v_ = false;
3451       x_ = y_ = NaN;
3452     }
3453
3454     function lineEnd() {
3455       // TODO rather than special-case polygons, simply handle them separately.
3456       // Ideally, coincident intersection points should be jittered to avoid
3457       // clipping issues.
3458       if (segments) {
3459         linePoint(x__, y__);
3460         if (v__ && v_) bufferListener.rejoin();
3461         segments.push(bufferListener.buffer());
3462       }
3463       clip.point = point;
3464       if (v_) listener.lineEnd();
3465     }
3466
3467     function linePoint(x, y) {
3468       x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));
3469       y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));
3470       var v = pointVisible(x, y);
3471       if (polygon) ring.push([x, y]);
3472       if (first) {
3473         x__ = x, y__ = y, v__ = v;
3474         first = false;
3475         if (v) {
3476           listener.lineStart();
3477           listener.point(x, y);
3478         }
3479       } else {
3480         if (v && v_) listener.point(x, y);
3481         else {
3482           var l = {a: {x: x_, y: y_}, b: {x: x, y: y}};
3483           if (clipLine(l)) {
3484             if (!v_) {
3485               listener.lineStart();
3486               listener.point(l.a.x, l.a.y);
3487             }
3488             listener.point(l.b.x, l.b.y);
3489             if (!v) listener.lineEnd();
3490             clean = false;
3491           } else if (v) {
3492             listener.lineStart();
3493             listener.point(x, y);
3494             clean = false;
3495           }
3496         }
3497       }
3498       x_ = x, y_ = y, v_ = v;
3499     }
3500
3501     return clip;
3502   };
3503
3504   function corner(p, direction) {
3505     return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3
3506         : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1
3507         : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0
3508         : direction > 0 ? 3 : 2; // abs(p[1] - y1) < ε
3509   }
3510
3511   function compare(a, b) {
3512     return comparePoints(a.x, b.x);
3513   }
3514
3515   function comparePoints(a, b) {
3516     var ca = corner(a, 1),
3517         cb = corner(b, 1);
3518     return ca !== cb ? ca - cb
3519         : ca === 0 ? b[1] - a[1]
3520         : ca === 1 ? a[0] - b[0]
3521         : ca === 2 ? a[1] - b[1]
3522         : b[0] - a[0];
3523   }
3524 }
3525
3526 function d3_geo_conic(projectAt) {
3527   var φ0 = 0,
3528       φ1 = π / 3,
3529       m = d3_geo_projectionMutator(projectAt),
3530       p = m(φ0, φ1);
3531
3532   p.parallels = function(_) {
3533     if (!arguments.length) return [φ0 / π * 180, φ1 / π * 180];
3534     return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
3535   };
3536
3537   return p;
3538 }
3539
3540 function d3_geo_conicEqualArea(φ0, φ1) {
3541   var sinφ0 = Math.sin(φ0),
3542       n = (sinφ0 + Math.sin(φ1)) / 2,
3543       C = 1 + sinφ0 * (2 * n - sinφ0),
3544       ρ0 = Math.sqrt(C) / n;
3545
3546   function forward(λ, φ) {
3547     var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
3548     return [
3549       ρ * Math.sin(λ *= n),
3550       ρ0 - ρ * Math.cos(λ)
3551     ];
3552   }
3553
3554   forward.invert = function(x, y) {
3555     var ρ0_y = ρ0 - y;
3556     return [
3557       Math.atan2(x, ρ0_y) / n,
3558       d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n))
3559     ];
3560   };
3561
3562   return forward;
3563 }
3564
3565 (d3.geo.conicEqualArea = function() {
3566   return d3_geo_conic(d3_geo_conicEqualArea);
3567 }).raw = d3_geo_conicEqualArea;
3568
3569 // ESRI:102003
3570 d3.geo.albers = function() {
3571   return d3.geo.conicEqualArea()
3572       .rotate([96, 0])
3573       .center([-.6, 38.7])
3574       .parallels([29.5, 45.5])
3575       .scale(1070);
3576 };
3577
3578 // A composite projection for the United States, configured by default for
3579 // 960×500. Also works quite well at 960×600 with scale 1285. The set of
3580 // standard parallels for each region comes from USGS, which is published here:
3581 // http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers
3582 d3.geo.albersUsa = function() {
3583   var lower48 = d3.geo.albers();
3584
3585   // EPSG:3338
3586   var alaska = d3.geo.conicEqualArea()
3587       .rotate([154, 0])
3588       .center([-2, 58.5])
3589       .parallels([55, 65]);
3590
3591   // ESRI:102007
3592   var hawaii = d3.geo.conicEqualArea()
3593       .rotate([157, 0])
3594       .center([-3, 19.9])
3595       .parallels([8, 18]);
3596
3597   var point,
3598       pointStream = {point: function(x, y) { point = [x, y]; }},
3599       lower48Point,
3600       alaskaPoint,
3601       hawaiiPoint;
3602
3603   function albersUsa(coordinates) {
3604     var x = coordinates[0], y = coordinates[1];
3605     point = null;
3606     (lower48Point(x, y), point)
3607         || (alaskaPoint(x, y), point)
3608         || hawaiiPoint(x, y);
3609     return point;
3610   }
3611
3612   albersUsa.invert = function(coordinates) {
3613     var k = lower48.scale(),
3614         t = lower48.translate(),
3615         x = (coordinates[0] - t[0]) / k,
3616         y = (coordinates[1] - t[1]) / k;
3617     return (y >= .120 && y < .234 && x >= -.425 && x < -.214 ? alaska
3618         : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii
3619         : lower48).invert(coordinates);
3620   };
3621
3622   // A naïve multi-projection stream.
3623   // The projections must have mutually exclusive clip regions on the sphere,
3624   // as this will avoid emitting interleaving lines and polygons.
3625   albersUsa.stream = function(stream) {
3626     var lower48Stream = lower48.stream(stream),
3627         alaskaStream = alaska.stream(stream),
3628         hawaiiStream = hawaii.stream(stream);
3629     return {
3630       point: function(x, y) {
3631         lower48Stream.point(x, y);
3632         alaskaStream.point(x, y);
3633         hawaiiStream.point(x, y);
3634       },
3635       sphere: function() {
3636         lower48Stream.sphere();
3637         alaskaStream.sphere();
3638         hawaiiStream.sphere();
3639       },
3640       lineStart: function() {
3641         lower48Stream.lineStart();
3642         alaskaStream.lineStart();
3643         hawaiiStream.lineStart();
3644       },
3645       lineEnd: function() {
3646         lower48Stream.lineEnd();
3647         alaskaStream.lineEnd();
3648         hawaiiStream.lineEnd();
3649       },
3650       polygonStart: function() {
3651         lower48Stream.polygonStart();
3652         alaskaStream.polygonStart();
3653         hawaiiStream.polygonStart();
3654       },
3655       polygonEnd: function() {
3656         lower48Stream.polygonEnd();
3657         alaskaStream.polygonEnd();
3658         hawaiiStream.polygonEnd();
3659       }
3660     };
3661   };
3662
3663   albersUsa.precision = function(_) {
3664     if (!arguments.length) return lower48.precision();
3665     lower48.precision(_);
3666     alaska.precision(_);
3667     hawaii.precision(_);
3668     return albersUsa;
3669   };
3670
3671   albersUsa.scale = function(_) {
3672     if (!arguments.length) return lower48.scale();
3673     lower48.scale(_);
3674     alaska.scale(_ * .35);
3675     hawaii.scale(_);
3676     return albersUsa.translate(lower48.translate());
3677   };
3678
3679   albersUsa.translate = function(_) {
3680     if (!arguments.length) return lower48.translate();
3681     var k = lower48.scale(), x = +_[0], y = +_[1];
3682
3683     lower48Point = lower48
3684         .translate(_)
3685         .clipExtent([[x - .455 * k, y - .238 * k], [x + .455 * k, y + .238 * k]])
3686         .stream(pointStream).point;
3687
3688     alaskaPoint = alaska
3689         .translate([x - .307 * k, y + .201 * k])
3690         .clipExtent([[x - .425 * k + ε, y + .120 * k + ε], [x - .214 * k - ε, y + .234 * k - ε]])
3691         .stream(pointStream).point;
3692
3693     hawaiiPoint = hawaii
3694         .translate([x - .205 * k, y + .212 * k])
3695         .clipExtent([[x - .214 * k + ε, y + .166 * k + ε], [x - .115 * k - ε, y + .234 * k - ε]])
3696         .stream(pointStream).point;
3697
3698     return albersUsa;
3699   };
3700
3701   return albersUsa.scale(1070);
3702 };
3703
3704 d3.geo.bounds = (function() {
3705   var λ0, φ0, λ1, φ1, // bounds
3706       λ_, // previous λ-coordinate
3707       λ__, φ__, // first point
3708       p0, // previous 3D point
3709       dλSum,
3710       ranges,
3711       range;
3712
3713   var bound = {
3714     point: point,
3715     lineStart: lineStart,
3716     lineEnd: lineEnd,
3717
3718     polygonStart: function() {
3719       bound.point = ringPoint;
3720       bound.lineStart = ringStart;
3721       bound.lineEnd = ringEnd;
3722       dλSum = 0;
3723       d3_geo_area.polygonStart();
3724     },
3725     polygonEnd: function() {
3726       d3_geo_area.polygonEnd();
3727       bound.point = point;
3728       bound.lineStart = lineStart;
3729       bound.lineEnd = lineEnd;
3730       if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90);
3731       else if (dλSum > ε) φ1 = 90;
3732       else if (dλSum < -ε) φ0 = -90;
3733       range[0] = λ0, range[1] = λ1;
3734     }
3735   };
3736
3737   function point(λ, φ) {
3738     ranges.push(range = [λ0 = λ, λ1 = λ]);
3739     if (φ < φ0) φ0 = φ;
3740     if (φ > φ1) φ1 = φ;
3741   }
3742
3743   function linePoint(λ, φ) {
3744     var p = d3_geo_cartesian([λ * d3_radians, φ * d3_radians]);
3745     if (p0) {
3746       var normal = d3_geo_cartesianCross(p0, p),
3747           equatorial = [normal[1], -normal[0], 0],
3748           inflection = d3_geo_cartesianCross(equatorial, normal);
3749       d3_geo_cartesianNormalize(inflection);
3750       inflection = d3_geo_spherical(inflection);
3751       var dλ = λ - λ_,
3752           s = dλ > 0 ? 1 : -1,
3753           λi = inflection[0] * d3_degrees * s,
3754           antimeridian = abs(dλ) > 180;
3755       if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
3756         var φi = inflection[1] * d3_degrees;
3757         if (φi > φ1) φ1 = φi;
3758       } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
3759         var φi = -inflection[1] * d3_degrees;
3760         if (φi < φ0) φ0 = φi;
3761       } else {
3762         if (φ < φ0) φ0 = φ;
3763         if (φ > φ1) φ1 = φ;
3764       }
3765       if (antimeridian) {
3766         if (λ < λ_) {
3767           if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
3768         } else {
3769           if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
3770         }
3771       } else {
3772         if (λ1 >= λ0) {
3773           if (λ < λ0) λ0 = λ;
3774           if (λ > λ1) λ1 = λ;
3775         } else {
3776           if (λ > λ_) {
3777             if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
3778           } else {
3779             if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
3780           }
3781         }
3782       }
3783     } else {
3784       point(λ, φ);
3785     }
3786     p0 = p, λ_ = λ;
3787   }
3788
3789   function lineStart() { bound.point = linePoint; }
3790   function lineEnd() {
3791     range[0] = λ0, range[1] = λ1;
3792     bound.point = point;
3793     p0 = null;
3794   }
3795
3796   function ringPoint(λ, φ) {
3797     if (p0) {
3798       var dλ = λ - λ_;
3799       dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;
3800     } else λ__ = λ, φ__ = φ;
3801     d3_geo_area.point(λ, φ);
3802     linePoint(λ, φ);
3803   }
3804
3805   function ringStart() {
3806     d3_geo_area.lineStart();
3807   }
3808
3809   function ringEnd() {
3810     ringPoint(λ__, φ__);
3811     d3_geo_area.lineEnd();
3812     if (abs(dλSum) > ε) λ0 = -(λ1 = 180);
3813     range[0] = λ0, range[1] = λ1;
3814     p0 = null;
3815   }
3816
3817   // Finds the left-right distance between two longitudes.
3818   // This is almost the same as (λ1 - λ0 + 360°) % 360°, except that we want
3819   // the distance between ±180° to be 360°.
3820   function angle(λ0, λ1) { return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1; }
3821
3822   function compareRanges(a, b) { return a[0] - b[0]; }
3823
3824   function withinRange(x, range) {
3825     return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
3826   }
3827
3828   return function(feature) {
3829     φ1 = λ1 = -(λ0 = φ0 = Infinity);
3830     ranges = [];
3831
3832     d3.geo.stream(feature, bound);
3833
3834     var n = ranges.length;
3835     if (n) {
3836       // First, sort ranges by their minimum longitudes.
3837       ranges.sort(compareRanges);
3838
3839       // Then, merge any ranges that overlap.
3840       for (var i = 1, a = ranges[0], b, merged = [a]; i < n; ++i) {
3841         b = ranges[i];
3842         if (withinRange(b[0], a) || withinRange(b[1], a)) {
3843           if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
3844           if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
3845         } else {
3846           merged.push(a = b);
3847         }
3848       }
3849
3850       // Finally, find the largest gap between the merged ranges.
3851       // The final bounding box will be the inverse of this gap.
3852       var best = -Infinity, dλ;
3853       for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {
3854         b = merged[i];
3855         if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];
3856       }
3857     }
3858     ranges = range = null;
3859
3860     return λ0 === Infinity || φ0 === Infinity
3861         ? [[NaN, NaN], [NaN, NaN]]
3862         : [[λ0, φ0], [λ1, φ1]];
3863   };
3864 })();
3865
3866 d3.geo.centroid = function(object) {
3867   d3_geo_centroidW0 = d3_geo_centroidW1 =
3868   d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 =
3869   d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 =
3870   d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
3871   d3.geo.stream(object, d3_geo_centroid);
3872
3873   var x = d3_geo_centroidX2,
3874       y = d3_geo_centroidY2,
3875       z = d3_geo_centroidZ2,
3876       m = x * x + y * y + z * z;
3877
3878   // If the area-weighted centroid is undefined, fall back to length-weighted centroid.
3879   if (m < ε2) {
3880     x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;
3881     // If the feature has zero length, fall back to arithmetic mean of point vectors.
3882     if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;
3883     m = x * x + y * y + z * z;
3884     // If the feature still has an undefined centroid, then return.
3885     if (m < ε2) return [NaN, NaN];
3886   }
3887
3888   return [Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees];
3889 };
3890
3891 var d3_geo_centroidW0,
3892     d3_geo_centroidW1,
3893     d3_geo_centroidX0,
3894     d3_geo_centroidY0,
3895     d3_geo_centroidZ0,
3896     d3_geo_centroidX1,
3897     d3_geo_centroidY1,
3898     d3_geo_centroidZ1,
3899     d3_geo_centroidX2,
3900     d3_geo_centroidY2,
3901     d3_geo_centroidZ2;
3902
3903 var d3_geo_centroid = {
3904   sphere: d3_noop,
3905   point: d3_geo_centroidPoint,
3906   lineStart: d3_geo_centroidLineStart,
3907   lineEnd: d3_geo_centroidLineEnd,
3908   polygonStart: function() {
3909     d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
3910   },
3911   polygonEnd: function() {
3912     d3_geo_centroid.lineStart = d3_geo_centroidLineStart;
3913   }
3914 };
3915
3916 // Arithmetic mean of Cartesian vectors.
3917 function d3_geo_centroidPoint(λ, φ) {
3918   λ *= d3_radians;
3919   var cosφ = Math.cos(φ *= d3_radians);
3920   d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));
3921 }
3922
3923 function d3_geo_centroidPointXYZ(x, y, z) {
3924   ++d3_geo_centroidW0;
3925   d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;
3926   d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;
3927   d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;
3928 }
3929
3930 function d3_geo_centroidLineStart() {
3931   var x0, y0, z0; // previous point
3932
3933   d3_geo_centroid.point = function(λ, φ) {
3934     λ *= d3_radians;
3935     var cosφ = Math.cos(φ *= d3_radians);
3936     x0 = cosφ * Math.cos(λ);
3937     y0 = cosφ * Math.sin(λ);
3938     z0 = Math.sin(φ);
3939     d3_geo_centroid.point = nextPoint;
3940     d3_geo_centroidPointXYZ(x0, y0, z0);
3941   };
3942
3943   function nextPoint(λ, φ) {
3944     λ *= d3_radians;
3945     var cosφ = Math.cos(φ *= d3_radians),
3946         x = cosφ * Math.cos(λ),
3947         y = cosφ * Math.sin(λ),
3948         z = Math.sin(φ),
3949         w = Math.atan2(
3950           Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w),
3951           x0 * x + y0 * y + z0 * z);
3952     d3_geo_centroidW1 += w;
3953     d3_geo_centroidX1 += w * (x0 + (x0 = x));
3954     d3_geo_centroidY1 += w * (y0 + (y0 = y));
3955     d3_geo_centroidZ1 += w * (z0 + (z0 = z));
3956     d3_geo_centroidPointXYZ(x0, y0, z0);
3957   }
3958 }
3959
3960 function d3_geo_centroidLineEnd() {
3961   d3_geo_centroid.point = d3_geo_centroidPoint;
3962 }
3963
3964 // See J. E. Brock, The Inertia Tensor for a Spherical Triangle,
3965 // J. Applied Mechanics 42, 239 (1975).
3966 function d3_geo_centroidRingStart() {
3967   var λ00, φ00, // first point
3968       x0, y0, z0; // previous point
3969
3970   d3_geo_centroid.point = function(λ, φ) {
3971     λ00 = λ, φ00 = φ;
3972     d3_geo_centroid.point = nextPoint;
3973     λ *= d3_radians;
3974     var cosφ = Math.cos(φ *= d3_radians);
3975     x0 = cosφ * Math.cos(λ);
3976     y0 = cosφ * Math.sin(λ);
3977     z0 = Math.sin(φ);
3978     d3_geo_centroidPointXYZ(x0, y0, z0);
3979   };
3980
3981   d3_geo_centroid.lineEnd = function() {
3982     nextPoint(λ00, φ00);
3983     d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
3984     d3_geo_centroid.point = d3_geo_centroidPoint;
3985   };
3986
3987   function nextPoint(λ, φ) {
3988     λ *= d3_radians;
3989     var cosφ = Math.cos(φ *= d3_radians),
3990         x = cosφ * Math.cos(λ),
3991         y = cosφ * Math.sin(λ),
3992         z = Math.sin(φ),
3993         cx = y0 * z - z0 * y,
3994         cy = z0 * x - x0 * z,
3995         cz = x0 * y - y0 * x,
3996         m = Math.sqrt(cx * cx + cy * cy + cz * cz),
3997         u = x0 * x + y0 * y + z0 * z,
3998         v = m && -d3_acos(u) / m, // area weight
3999         w = Math.atan2(m, u); // line weight
4000     d3_geo_centroidX2 += v * cx;
4001     d3_geo_centroidY2 += v * cy;
4002     d3_geo_centroidZ2 += v * cz;
4003     d3_geo_centroidW1 += w;
4004     d3_geo_centroidX1 += w * (x0 + (x0 = x));
4005     d3_geo_centroidY1 += w * (y0 + (y0 = y));
4006     d3_geo_centroidZ1 += w * (z0 + (z0 = z));
4007     d3_geo_centroidPointXYZ(x0, y0, z0);
4008   }
4009 }
4010
4011 // TODO Unify this code with d3.geom.polygon area?
4012
4013 var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
4014   point: d3_noop,
4015   lineStart: d3_noop,
4016   lineEnd: d3_noop,
4017
4018   // Only count area for polygon rings.
4019   polygonStart: function() {
4020     d3_geo_pathAreaPolygon = 0;
4021     d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
4022   },
4023   polygonEnd: function() {
4024     d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;
4025     d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);
4026   }
4027 };
4028
4029 function d3_geo_pathAreaRingStart() {
4030   var x00, y00, x0, y0;
4031
4032   // For the first point, …
4033   d3_geo_pathArea.point = function(x, y) {
4034     d3_geo_pathArea.point = nextPoint;
4035     x00 = x0 = x, y00 = y0 = y;
4036   };
4037
4038   // For subsequent points, …
4039   function nextPoint(x, y) {
4040     d3_geo_pathAreaPolygon += y0 * x - x0 * y;
4041     x0 = x, y0 = y;
4042   }
4043
4044   // For the last point, return to the start.
4045   d3_geo_pathArea.lineEnd = function() {
4046     nextPoint(x00, y00);
4047   };
4048 }
4049
4050 var d3_geo_pathBoundsX0,
4051     d3_geo_pathBoundsY0,
4052     d3_geo_pathBoundsX1,
4053     d3_geo_pathBoundsY1;
4054
4055 var d3_geo_pathBounds = {
4056   point: d3_geo_pathBoundsPoint,
4057   lineStart: d3_noop,
4058   lineEnd: d3_noop,
4059   polygonStart: d3_noop,
4060   polygonEnd: d3_noop
4061 };
4062
4063 function d3_geo_pathBoundsPoint(x, y) {
4064   if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;
4065   if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;
4066   if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;
4067   if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;
4068 }
4069 function d3_geo_pathBuffer() {
4070   var pointCircle = d3_geo_pathBufferCircle(4.5),
4071       buffer = [];
4072
4073   var stream = {
4074     point: point,
4075
4076     // While inside a line, override point to moveTo then lineTo.
4077     lineStart: function() { stream.point = pointLineStart; },
4078     lineEnd: lineEnd,
4079
4080     // While inside a polygon, override lineEnd to closePath.
4081     polygonStart: function() { stream.lineEnd = lineEndPolygon; },
4082     polygonEnd: function() { stream.lineEnd = lineEnd; stream.point = point; },
4083
4084     pointRadius: function(_) {
4085       pointCircle = d3_geo_pathBufferCircle(_);
4086       return stream;
4087     },
4088
4089     result: function() {
4090       if (buffer.length) {
4091         var result = buffer.join("");
4092         buffer = [];
4093         return result;
4094       }
4095     }
4096   };
4097
4098   function point(x, y) {
4099     buffer.push("M", x, ",", y, pointCircle);
4100   }
4101
4102   function pointLineStart(x, y) {
4103     buffer.push("M", x, ",", y);
4104     stream.point = pointLine;
4105   }
4106
4107   function pointLine(x, y) {
4108     buffer.push("L", x, ",", y);
4109   }
4110
4111   function lineEnd() {
4112     stream.point = point;
4113   }
4114
4115   function lineEndPolygon() {
4116     buffer.push("Z");
4117   }
4118
4119   return stream;
4120 }
4121
4122 function d3_geo_pathBufferCircle(radius) {
4123   return "m0," + radius
4124       + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius
4125       + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius
4126       + "z";
4127 }
4128
4129 // TODO Unify this code with d3.geom.polygon centroid?
4130 // TODO Enforce positive area for exterior, negative area for interior?
4131
4132 var d3_geo_pathCentroid = {
4133   point: d3_geo_pathCentroidPoint,
4134
4135   // For lines, weight by length.
4136   lineStart: d3_geo_pathCentroidLineStart,
4137   lineEnd: d3_geo_pathCentroidLineEnd,
4138
4139   // For polygons, weight by area.
4140   polygonStart: function() {
4141     d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
4142   },
4143   polygonEnd: function() {
4144     d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
4145     d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
4146     d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
4147   }
4148 };
4149
4150 function d3_geo_pathCentroidPoint(x, y) {
4151   d3_geo_centroidX0 += x;
4152   d3_geo_centroidY0 += y;
4153   ++d3_geo_centroidZ0;
4154 }
4155
4156 function d3_geo_pathCentroidLineStart() {
4157   var x0, y0;
4158
4159   d3_geo_pathCentroid.point = function(x, y) {
4160     d3_geo_pathCentroid.point = nextPoint;
4161     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4162   };
4163
4164   function nextPoint(x, y) {
4165     var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
4166     d3_geo_centroidX1 += z * (x0 + x) / 2;
4167     d3_geo_centroidY1 += z * (y0 + y) / 2;
4168     d3_geo_centroidZ1 += z;
4169     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4170   }
4171 }
4172
4173 function d3_geo_pathCentroidLineEnd() {
4174   d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
4175 }
4176
4177 function d3_geo_pathCentroidRingStart() {
4178   var x00, y00, x0, y0;
4179
4180   // For the first point, …
4181   d3_geo_pathCentroid.point = function(x, y) {
4182     d3_geo_pathCentroid.point = nextPoint;
4183     d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);
4184   };
4185
4186   // For subsequent points, …
4187   function nextPoint(x, y) {
4188     var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
4189     d3_geo_centroidX1 += z * (x0 + x) / 2;
4190     d3_geo_centroidY1 += z * (y0 + y) / 2;
4191     d3_geo_centroidZ1 += z;
4192
4193     z = y0 * x - x0 * y;
4194     d3_geo_centroidX2 += z * (x0 + x);
4195     d3_geo_centroidY2 += z * (y0 + y);
4196     d3_geo_centroidZ2 += z * 3;
4197     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4198   }
4199
4200   // For the last point, return to the start.
4201   d3_geo_pathCentroid.lineEnd = function() {
4202     nextPoint(x00, y00);
4203   };
4204 }
4205
4206 function d3_geo_pathContext(context) {
4207   var pointRadius = 4.5;
4208
4209   var stream = {
4210     point: point,
4211
4212     // While inside a line, override point to moveTo then lineTo.
4213     lineStart: function() { stream.point = pointLineStart; },
4214     lineEnd: lineEnd,
4215
4216     // While inside a polygon, override lineEnd to closePath.
4217     polygonStart: function() { stream.lineEnd = lineEndPolygon; },
4218     polygonEnd: function() { stream.lineEnd = lineEnd; stream.point = point; },
4219
4220     pointRadius: function(_) {
4221       pointRadius = _;
4222       return stream;
4223     },
4224
4225     result: d3_noop
4226   };
4227
4228   function point(x, y) {
4229     context.moveTo(x + pointRadius, y);
4230     context.arc(x, y, pointRadius, 0, τ);
4231   }
4232
4233   function pointLineStart(x, y) {
4234     context.moveTo(x, y);
4235     stream.point = pointLine;
4236   }
4237
4238   function pointLine(x, y) {
4239     context.lineTo(x, y);
4240   }
4241
4242   function lineEnd() {
4243     stream.point = point;
4244   }
4245
4246   function lineEndPolygon() {
4247     context.closePath();
4248   }
4249
4250   return stream;
4251 }
4252
4253 function d3_geo_resample(project) {
4254   var δ2 = .5, // precision, px²
4255       cosMinDistance = Math.cos(30 * d3_radians), // cos(minimum angular distance)
4256       maxDepth = 16;
4257
4258   function resample(stream) {
4259     return (maxDepth ? resampleRecursive : resampleNone)(stream);
4260   }
4261
4262   function resampleNone(stream) {
4263     return d3_geo_transformPoint(stream, function(x, y) {
4264       x = project(x, y);
4265       stream.point(x[0], x[1]);
4266     });
4267   }
4268
4269   function resampleRecursive(stream) {
4270     var λ00, φ00, x00, y00, a00, b00, c00, // first point
4271         λ0, x0, y0, a0, b0, c0; // previous point
4272
4273     var resample = {
4274       point: point,
4275       lineStart: lineStart,
4276       lineEnd: lineEnd,
4277       polygonStart: function() { stream.polygonStart(); resample.lineStart = ringStart; },
4278       polygonEnd: function() { stream.polygonEnd(); resample.lineStart = lineStart; }
4279     };
4280
4281     function point(x, y) {
4282       x = project(x, y);
4283       stream.point(x[0], x[1]);
4284     }
4285
4286     function lineStart() {
4287       x0 = NaN;
4288       resample.point = linePoint;
4289       stream.lineStart();
4290     }
4291
4292     function linePoint(λ, φ) {
4293       var c = d3_geo_cartesian([λ, φ]), p = project(λ, φ);
4294       resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
4295       stream.point(x0, y0);
4296     }
4297
4298     function lineEnd() {
4299       resample.point = point;
4300       stream.lineEnd();
4301     }
4302
4303     function ringStart() {
4304       lineStart();
4305       resample.point = ringPoint;
4306       resample.lineEnd = ringEnd;
4307     }
4308
4309     function ringPoint(λ, φ) {
4310       linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
4311       resample.point = linePoint;
4312     }
4313
4314     function ringEnd() {
4315       resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);
4316       resample.lineEnd = lineEnd;
4317       lineEnd();
4318     }
4319
4320     return resample;
4321   }
4322
4323   function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {
4324     var dx = x1 - x0,
4325         dy = y1 - y0,
4326         d2 = dx * dx + dy * dy;
4327     if (d2 > 4 * δ2 && depth--) {
4328       var a = a0 + a1,
4329           b = b0 + b1,
4330           c = c0 + c1,
4331           m = Math.sqrt(a * a + b * b + c * c),
4332           φ2 = Math.asin(c /= m),
4333           λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a),
4334           p = project(λ2, φ2),
4335           x2 = p[0],
4336           y2 = p[1],
4337           dx2 = x2 - x0,
4338           dy2 = y2 - y0,
4339           dz = dy * dx2 - dx * dy2;
4340       if (dz * dz / d2 > δ2 // perpendicular projected distance
4341           || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 // midpoint close to an end
4342           || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance
4343         resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);
4344         stream.point(x2, y2);
4345         resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
4346       }
4347     }
4348   }
4349
4350   resample.precision = function(_) {
4351     if (!arguments.length) return Math.sqrt(δ2);
4352     maxDepth = (δ2 = _ * _) > 0 && 16;
4353     return resample;
4354   };
4355
4356   return resample;
4357 }
4358
4359 d3.geo.path = function() {
4360   var pointRadius = 4.5,
4361       projection,
4362       context,
4363       projectStream,
4364       contextStream,
4365       cacheStream;
4366
4367   function path(object) {
4368     if (object) {
4369       if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
4370       if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);
4371       d3.geo.stream(object, cacheStream);
4372     }
4373     return contextStream.result();
4374   }
4375
4376   path.area = function(object) {
4377     d3_geo_pathAreaSum = 0;
4378     d3.geo.stream(object, projectStream(d3_geo_pathArea));
4379     return d3_geo_pathAreaSum;
4380   };
4381
4382   path.centroid = function(object) {
4383     d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 =
4384     d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 =
4385     d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
4386     d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
4387     return d3_geo_centroidZ2 ? [d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2]
4388         : d3_geo_centroidZ1 ? [d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1]
4389         : d3_geo_centroidZ0 ? [d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0]
4390         : [NaN, NaN];
4391   };
4392
4393   path.bounds = function(object) {
4394     d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);
4395     d3.geo.stream(object, projectStream(d3_geo_pathBounds));
4396     return [[d3_geo_pathBoundsX0, d3_geo_pathBoundsY0], [d3_geo_pathBoundsX1, d3_geo_pathBoundsY1]];
4397   };
4398
4399   path.projection = function(_) {
4400     if (!arguments.length) return projection;
4401     projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;
4402     return reset();
4403   };
4404
4405   path.context = function(_) {
4406     if (!arguments.length) return context;
4407     contextStream = (context = _) == null ? new d3_geo_pathBuffer : new d3_geo_pathContext(_);
4408     if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
4409     return reset();
4410   };
4411
4412   path.pointRadius = function(_) {
4413     if (!arguments.length) return pointRadius;
4414     pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
4415     return path;
4416   };
4417
4418   function reset() {
4419     cacheStream = null;
4420     return path;
4421   }
4422
4423   return path.projection(d3.geo.albersUsa()).context(null);
4424 };
4425
4426 function d3_geo_pathProjectStream(project) {
4427   var resample = d3_geo_resample(function(x, y) { return project([x * d3_degrees, y * d3_degrees]); });
4428   return function(stream) { return d3_geo_projectionRadians(resample(stream)); };
4429 }
4430
4431 d3.geo.transform = function(methods) {
4432   return {
4433     stream: function(stream) {
4434       var transform = new d3_geo_transform(stream);
4435       for (var k in methods) transform[k] = methods[k];
4436       return transform;
4437     }
4438   };
4439 };
4440
4441 function d3_geo_transform(stream) {
4442   this.stream = stream;
4443 }
4444
4445 d3_geo_transform.prototype = {
4446   point: function(x, y) { this.stream.point(x, y); },
4447   sphere: function() { this.stream.sphere(); },
4448   lineStart: function() { this.stream.lineStart(); },
4449   lineEnd: function() { this.stream.lineEnd(); },
4450   polygonStart: function() { this.stream.polygonStart(); },
4451   polygonEnd: function() { this.stream.polygonEnd(); }
4452 };
4453
4454 function d3_geo_transformPoint(stream, point) {
4455   return {
4456     point: point,
4457     sphere: function() { stream.sphere(); },
4458     lineStart: function() { stream.lineStart(); },
4459     lineEnd: function() { stream.lineEnd(); },
4460     polygonStart: function() { stream.polygonStart(); },
4461     polygonEnd: function() { stream.polygonEnd(); },
4462   };
4463 }
4464
4465 d3.geo.projection = d3_geo_projection;
4466 d3.geo.projectionMutator = d3_geo_projectionMutator;
4467
4468 function d3_geo_projection(project) {
4469   return d3_geo_projectionMutator(function() { return project; })();
4470 }
4471
4472 function d3_geo_projectionMutator(projectAt) {
4473   var project,
4474       rotate,
4475       projectRotate,
4476       projectResample = d3_geo_resample(function(x, y) { x = project(x, y); return [x[0] * k + δx, δy - x[1] * k]; }),
4477       k = 150, // scale
4478       x = 480, y = 250, // translate
4479       λ = 0, φ = 0, // center
4480       δλ = 0, δφ = 0, δγ = 0, // rotate
4481       δx, δy, // center
4482       preclip = d3_geo_clipAntimeridian,
4483       postclip = d3_identity,
4484       clipAngle = null,
4485       clipExtent = null,
4486       stream;
4487
4488   function projection(point) {
4489     point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
4490     return [point[0] * k + δx, δy - point[1] * k];
4491   }
4492
4493   function invert(point) {
4494     point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
4495     return point && [point[0] * d3_degrees, point[1] * d3_degrees];
4496   }
4497
4498   projection.stream = function(output) {
4499     if (stream) stream.valid = false;
4500     stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));
4501     stream.valid = true; // allow caching by d3.geo.path
4502     return stream;
4503   };
4504
4505   projection.clipAngle = function(_) {
4506     if (!arguments.length) return clipAngle;
4507     preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);
4508     return invalidate();
4509   };
4510
4511   projection.clipExtent = function(_) {
4512     if (!arguments.length) return clipExtent;
4513     clipExtent = _;
4514     postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;
4515     return invalidate();
4516   };
4517
4518   projection.scale = function(_) {
4519     if (!arguments.length) return k;
4520     k = +_;
4521     return reset();
4522   };
4523
4524   projection.translate = function(_) {
4525     if (!arguments.length) return [x, y];
4526     x = +_[0];
4527     y = +_[1];
4528     return reset();
4529   };
4530
4531   projection.center = function(_) {
4532     if (!arguments.length) return [λ * d3_degrees, φ * d3_degrees];
4533     λ = _[0] % 360 * d3_radians;
4534     φ = _[1] % 360 * d3_radians;
4535     return reset();
4536   };
4537
4538   projection.rotate = function(_) {
4539     if (!arguments.length) return [δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees];
4540     δλ = _[0] % 360 * d3_radians;
4541     δφ = _[1] % 360 * d3_radians;
4542     δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
4543     return reset();
4544   };
4545
4546   d3.rebind(projection, projectResample, "precision");
4547
4548   function reset() {
4549     projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
4550     var center = project(λ, φ);
4551     δx = x - center[0] * k;
4552     δy = y + center[1] * k;
4553     return invalidate();
4554   }
4555
4556   function invalidate() {
4557     if (stream) stream.valid = false, stream = null;
4558     return projection;
4559   }
4560
4561   return function() {
4562     project = projectAt.apply(this, arguments);
4563     projection.invert = project.invert && invert;
4564     return reset();
4565   };
4566 }
4567
4568 function d3_geo_projectionRadians(stream) {
4569   return d3_geo_transformPoint(stream, function(x, y) {
4570     stream.point(x * d3_radians, y * d3_radians);
4571   });
4572 }
4573
4574 function d3_geo_mercator(λ, φ) {
4575   return [λ, Math.log(Math.tan(π / 4 + φ / 2))];
4576 }
4577
4578 d3_geo_mercator.invert = function(x, y) {
4579   return [x, 2 * Math.atan(Math.exp(y)) - halfπ];
4580 };
4581
4582 function d3_geo_mercatorProjection(project) {
4583   var m = d3_geo_projection(project),
4584       scale = m.scale,
4585       translate = m.translate,
4586       clipExtent = m.clipExtent,
4587       clipAuto;
4588
4589   m.scale = function() {
4590     var v = scale.apply(m, arguments);
4591     return v === m ? (clipAuto ? m.clipExtent(null) : m) : v;
4592   };
4593
4594   m.translate = function() {
4595     var v = translate.apply(m, arguments);
4596     return v === m ? (clipAuto ? m.clipExtent(null) : m) : v;
4597   };
4598
4599   m.clipExtent = function(_) {
4600     var v = clipExtent.apply(m, arguments);
4601     if (v === m) {
4602       if (clipAuto = _ == null) {
4603         var k = π * scale(), t = translate();
4604         clipExtent([[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]]);
4605       }
4606     } else if (clipAuto) {
4607       v = null;
4608     }
4609     return v;
4610   };
4611
4612   return m.clipExtent(null);
4613 }
4614
4615 (d3.geo.mercator = function() {
4616   return d3_geo_mercatorProjection(d3_geo_mercator);
4617 }).raw = d3_geo_mercator;
4618 d3.geom = {};
4619
4620 d3.geom.polygon = function(coordinates) {
4621   d3_subclass(coordinates, d3_geom_polygonPrototype);
4622   return coordinates;
4623 };
4624
4625 var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];
4626
4627 d3_geom_polygonPrototype.area = function() {
4628   var i = -1,
4629       n = this.length,
4630       a,
4631       b = this[n - 1],
4632       area = 0;
4633
4634   while (++i < n) {
4635     a = b;
4636     b = this[i];
4637     area += a[1] * b[0] - a[0] * b[1];
4638   }
4639
4640   return area * .5;
4641 };
4642
4643 d3_geom_polygonPrototype.centroid = function(k) {
4644   var i = -1,
4645       n = this.length,
4646       x = 0,
4647       y = 0,
4648       a,
4649       b = this[n - 1],
4650       c;
4651
4652   if (!arguments.length) k = -1 / (6 * this.area());
4653
4654   while (++i < n) {
4655     a = b;
4656     b = this[i];
4657     c = a[0] * b[1] - b[0] * a[1];
4658     x += (a[0] + b[0]) * c;
4659     y += (a[1] + b[1]) * c;
4660   }
4661
4662   return [x * k, y * k];
4663 };
4664
4665 // The Sutherland-Hodgman clipping algorithm.
4666 // Note: requires the clip polygon to be counterclockwise and convex.
4667 d3_geom_polygonPrototype.clip = function(subject) {
4668   var input,
4669       closed = d3_geom_polygonClosed(subject),
4670       i = -1,
4671       n = this.length - d3_geom_polygonClosed(this),
4672       j,
4673       m,
4674       a = this[n - 1],
4675       b,
4676       c,
4677       d;
4678
4679   while (++i < n) {
4680     input = subject.slice();
4681     subject.length = 0;
4682     b = this[i];
4683     c = input[(m = input.length - closed) - 1];
4684     j = -1;
4685     while (++j < m) {
4686       d = input[j];
4687       if (d3_geom_polygonInside(d, a, b)) {
4688         if (!d3_geom_polygonInside(c, a, b)) {
4689           subject.push(d3_geom_polygonIntersect(c, d, a, b));
4690         }
4691         subject.push(d);
4692       } else if (d3_geom_polygonInside(c, a, b)) {
4693         subject.push(d3_geom_polygonIntersect(c, d, a, b));
4694       }
4695       c = d;
4696     }
4697     if (closed) subject.push(subject[0]);
4698     a = b;
4699   }
4700
4701   return subject;
4702 };
4703
4704 function d3_geom_polygonInside(p, a, b) {
4705   return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
4706 }
4707
4708 // Intersect two infinite lines cd and ab.
4709 function d3_geom_polygonIntersect(c, d, a, b) {
4710   var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3,
4711       y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3,
4712       ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
4713   return [x1 + ua * x21, y1 + ua * y21];
4714 }
4715
4716 // Returns true if the polygon is closed.
4717 function d3_geom_polygonClosed(coordinates) {
4718   var a = coordinates[0],
4719       b = coordinates[coordinates.length - 1];
4720   return !(a[0] - b[0] || a[1] - b[1]);
4721 }
4722 function d3_geom_pointX(d) {
4723   return d[0];
4724 }
4725
4726 function d3_geom_pointY(d) {
4727   return d[1];
4728 }
4729
4730 /**
4731  * Computes the 2D convex hull of a set of points using the monotone chain
4732  * algorithm:
4733  * http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain)
4734  *
4735  * The runtime of this algorithm is O(n log n), where n is the number of input
4736  * points. However in practice it outperforms other O(n log n) hulls.
4737  *
4738  * @param vertices [[x1, y1], [x2, y2], ...]
4739  * @returns polygon [[x1, y1], [x2, y2], ...]
4740  */
4741 d3.geom.hull = function(vertices) {
4742   var x = d3_geom_pointX,
4743       y = d3_geom_pointY;
4744
4745   if (arguments.length) return hull(vertices);
4746
4747   function hull(data) {
4748     // Hull of < 3 points is not well-defined
4749     if (data.length < 3) return [];
4750
4751     var fx = d3_functor(x),
4752         fy = d3_functor(y),
4753         i,
4754         n = data.length,
4755         points = [], // of the form [[x0, y0, 0], ..., [xn, yn, n]]
4756         flippedPoints = [];
4757
4758     for (i = 0 ; i < n; i++) {
4759       points.push([+fx.call(this, data[i], i), +fy.call(this, data[i], i), i]);
4760     }
4761
4762     // sort ascending by x-coord first, y-coord second
4763     points.sort(d3_geom_hullOrder);
4764
4765     // we flip bottommost points across y axis so we can use the upper hull routine on both
4766     for (i = 0; i < n; i++) flippedPoints.push([points[i][0], -points[i][1]]);
4767
4768     var upper = d3_geom_hullUpper(points),
4769         lower = d3_geom_hullUpper(flippedPoints);
4770
4771     // construct the polygon, removing possible duplicate endpoints
4772     var skipLeft = lower[0] === upper[0],
4773         skipRight  = lower[lower.length - 1] === upper[upper.length - 1],
4774         polygon = [];
4775
4776     // add upper hull in r->l order
4777     // then add lower hull in l->r order
4778     for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);
4779     for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);
4780
4781     return polygon;
4782   }
4783
4784   hull.x = function(_) {
4785     return arguments.length ? (x = _, hull) : x;
4786   };
4787
4788   hull.y = function(_) {
4789     return arguments.length ? (y = _, hull) : y;
4790   };
4791
4792   return hull;
4793 };
4794
4795 // finds the 'upper convex hull' (see wiki link above)
4796 // assumes points arg has >=3 elements, is sorted by x, unique in y
4797 // returns array of indices into points in left to right order
4798 function d3_geom_hullUpper(points) {
4799   var n = points.length,
4800       hull = [0, 1],
4801       hs = 2; // hull size
4802
4803   for (var i = 2; i < n; i++) {
4804     while (hs > 1 && d3_cross2d(points[hull[hs-2]], points[hull[hs-1]], points[i]) <= 0) --hs;
4805     hull[hs++] = i;
4806   }
4807
4808   // we slice to make sure that the points we 'popped' from hull don't stay behind
4809   return hull.slice(0, hs);
4810 }
4811
4812 // comparator for ascending sort by x-coord first, y-coord second
4813 function d3_geom_hullOrder(a, b) {
4814   return a[0] - b[0] || a[1] - b[1];
4815 }
4816 // import "../transition/transition";
4817
4818 d3_selectionPrototype.transition = function(name) {
4819   var id = d3_transitionInheritId || ++d3_transitionId,
4820       ns = d3_transitionNamespace(name),
4821       subgroups = [],
4822       subgroup,
4823       node,
4824       transition = d3_transitionInherit || {time: Date.now(), ease: d3_ease_cubicInOut, delay: 0, duration: 250};
4825
4826   for (var j = -1, m = this.length; ++j < m;) {
4827     subgroups.push(subgroup = []);
4828     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4829       if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);
4830       subgroup.push(node);
4831     }
4832   }
4833
4834   return d3_transition(subgroups, ns, id);
4835 };
4836 // import "../transition/transition";
4837
4838 // TODO Interrupt transitions for all namespaces?
4839 d3_selectionPrototype.interrupt = function(name) {
4840   return this.each(name == null
4841       ? d3_selection_interrupt
4842       : d3_selection_interruptNS(d3_transitionNamespace(name)));
4843 };
4844
4845 var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());
4846
4847 function d3_selection_interruptNS(ns) {
4848   return function() {
4849     var lock, active;
4850     if ((lock = this[ns]) && (active = lock[lock.active])) {
4851       if (--lock.count) delete lock[lock.active];
4852       else delete this[ns];
4853       lock.active += .5;
4854       active.event && active.event.interrupt.call(this, this.__data__, active.index);
4855     }
4856   };
4857 }
4858
4859 function d3_transition(groups, ns, id) {
4860   d3_subclass(groups, d3_transitionPrototype);
4861
4862   // Note: read-only!
4863   groups.namespace = ns;
4864   groups.id = id;
4865
4866   return groups;
4867 }
4868
4869 var d3_transitionPrototype = [],
4870     d3_transitionId = 0,
4871     d3_transitionInheritId,
4872     d3_transitionInherit;
4873
4874 d3_transitionPrototype.call = d3_selectionPrototype.call;
4875 d3_transitionPrototype.empty = d3_selectionPrototype.empty;
4876 d3_transitionPrototype.node = d3_selectionPrototype.node;
4877 d3_transitionPrototype.size = d3_selectionPrototype.size;
4878
4879 d3.transition = function(selection, name) {
4880   return selection && selection.transition
4881       ? (d3_transitionInheritId ? selection.transition(name) : selection)
4882       : d3.selection().transition(selection);
4883 };
4884
4885 d3.transition.prototype = d3_transitionPrototype;
4886
4887
4888 d3_transitionPrototype.select = function(selector) {
4889   var id = this.id,
4890       ns = this.namespace,
4891       subgroups = [],
4892       subgroup,
4893       subnode,
4894       node;
4895
4896   selector = d3_selection_selector(selector);
4897
4898   for (var j = -1, m = this.length; ++j < m;) {
4899     subgroups.push(subgroup = []);
4900     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4901       if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
4902         if ("__data__" in node) subnode.__data__ = node.__data__;
4903         d3_transitionNode(subnode, i, ns, id, node[ns][id]);
4904         subgroup.push(subnode);
4905       } else {
4906         subgroup.push(null);
4907       }
4908     }
4909   }
4910
4911   return d3_transition(subgroups, ns, id);
4912 };
4913
4914 d3_transitionPrototype.selectAll = function(selector) {
4915   var id = this.id,
4916       ns = this.namespace,
4917       subgroups = [],
4918       subgroup,
4919       subnodes,
4920       node,
4921       subnode,
4922       transition;
4923
4924   selector = d3_selection_selectorAll(selector);
4925
4926   for (var j = -1, m = this.length; ++j < m;) {
4927     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4928       if (node = group[i]) {
4929         transition = node[ns][id];
4930         subnodes = selector.call(node, node.__data__, i, j);
4931         subgroups.push(subgroup = []);
4932         for (var k = -1, o = subnodes.length; ++k < o;) {
4933           if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);
4934           subgroup.push(subnode);
4935         }
4936       }
4937     }
4938   }
4939
4940   return d3_transition(subgroups, ns, id);
4941 };
4942
4943 d3_transitionPrototype.filter = function(filter) {
4944   var subgroups = [],
4945       subgroup,
4946       group,
4947       node;
4948
4949   if (typeof filter !== "function") filter = d3_selection_filter(filter);
4950
4951   for (var j = 0, m = this.length; j < m; j++) {
4952     subgroups.push(subgroup = []);
4953     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
4954       if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
4955         subgroup.push(node);
4956       }
4957     }
4958   }
4959
4960   return d3_transition(subgroups, this.namespace, this.id);
4961 };
4962 d3.color = d3_color;
4963
4964 function d3_color() {}
4965
4966 d3_color.prototype.toString = function() {
4967   return this.rgb() + "";
4968 };
4969
4970 d3.hsl = d3_hsl;
4971
4972 function d3_hsl(h, s, l) {
4973   return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l)
4974       : arguments.length < 2 ? (h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l)
4975       : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
4976       : new d3_hsl(h, s, l);
4977 }
4978
4979 var d3_hslPrototype = d3_hsl.prototype = new d3_color;
4980
4981 d3_hslPrototype.brighter = function(k) {
4982   k = Math.pow(0.7, arguments.length ? k : 1);
4983   return new d3_hsl(this.h, this.s, this.l / k);
4984 };
4985
4986 d3_hslPrototype.darker = function(k) {
4987   k = Math.pow(0.7, arguments.length ? k : 1);
4988   return new d3_hsl(this.h, this.s, k * this.l);
4989 };
4990
4991 d3_hslPrototype.rgb = function() {
4992   return d3_hsl_rgb(this.h, this.s, this.l);
4993 };
4994
4995 function d3_hsl_rgb(h, s, l) {
4996   var m1,
4997       m2;
4998
4999   /* Some simple corrections for h, s and l. */
5000   h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;
5001   s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;
5002   l = l < 0 ? 0 : l > 1 ? 1 : l;
5003
5004   /* From FvD 13.37, CSS Color Module Level 3 */
5005   m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
5006   m1 = 2 * l - m2;
5007
5008   function v(h) {
5009     if (h > 360) h -= 360;
5010     else if (h < 0) h += 360;
5011     if (h < 60) return m1 + (m2 - m1) * h / 60;
5012     if (h < 180) return m2;
5013     if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
5014     return m1;
5015   }
5016
5017   function vv(h) {
5018     return Math.round(v(h) * 255);
5019   }
5020
5021   return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
5022 }
5023
5024 d3.hcl = d3_hcl;
5025
5026 function d3_hcl(h, c, l) {
5027   return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l)
5028       : arguments.length < 2 ? (h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l)
5029       : (h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b)
5030       : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
5031       : new d3_hcl(h, c, l);
5032 }
5033
5034 var d3_hclPrototype = d3_hcl.prototype = new d3_color;
5035
5036 d3_hclPrototype.brighter = function(k) {
5037   return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
5038 };
5039
5040 d3_hclPrototype.darker = function(k) {
5041   return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
5042 };
5043
5044 d3_hclPrototype.rgb = function() {
5045   return d3_hcl_lab(this.h, this.c, this.l).rgb();
5046 };
5047
5048 function d3_hcl_lab(h, c, l) {
5049   if (isNaN(h)) h = 0;
5050   if (isNaN(c)) c = 0;
5051   return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
5052 }
5053
5054 d3.lab = d3_lab;
5055
5056 function d3_lab(l, a, b) {
5057   return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b)
5058       : arguments.length < 2 ? (l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b)
5059       : (l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l)
5060       : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b)))
5061       : new d3_lab(l, a, b);
5062 }
5063
5064 // Corresponds roughly to RGB brighter/darker
5065 var d3_lab_K = 18;
5066
5067 // D65 standard referent
5068 var d3_lab_X = 0.950470,
5069     d3_lab_Y = 1,
5070     d3_lab_Z = 1.088830;
5071
5072 var d3_labPrototype = d3_lab.prototype = new d3_color;
5073
5074 d3_labPrototype.brighter = function(k) {
5075   return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
5076 };
5077
5078 d3_labPrototype.darker = function(k) {
5079   return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
5080 };
5081
5082 d3_labPrototype.rgb = function() {
5083   return d3_lab_rgb(this.l, this.a, this.b);
5084 };
5085
5086 function d3_lab_rgb(l, a, b) {
5087   var y = (l + 16) / 116,
5088       x = y + a / 500,
5089       z = y - b / 200;
5090   x = d3_lab_xyz(x) * d3_lab_X;
5091   y = d3_lab_xyz(y) * d3_lab_Y;
5092   z = d3_lab_xyz(z) * d3_lab_Z;
5093   return new d3_rgb(
5094     d3_xyz_rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z),
5095     d3_xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
5096     d3_xyz_rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z)
5097   );
5098 }
5099
5100 function d3_lab_hcl(l, a, b) {
5101   return l > 0
5102       ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
5103       : new d3_hcl(NaN, NaN, l);
5104 }
5105
5106 function d3_lab_xyz(x) {
5107   return x > 0.206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
5108 }
5109 function d3_xyz_lab(x) {
5110   return x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
5111 }
5112
5113 function d3_xyz_rgb(r) {
5114   return Math.round(255 * (r <= 0.00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - 0.055));
5115 }
5116
5117 d3.rgb = d3_rgb;
5118
5119 function d3_rgb(r, g, b) {
5120   return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b)
5121       : arguments.length < 2 ? (r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b)
5122       : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb))
5123       : new d3_rgb(r, g, b);
5124 }
5125
5126 function d3_rgbNumber(value) {
5127   return new d3_rgb(value >> 16, value >> 8 & 0xff, value & 0xff);
5128 }
5129
5130 function d3_rgbString(value) {
5131   return d3_rgbNumber(value) + "";
5132 }
5133
5134 var d3_rgbPrototype = d3_rgb.prototype = new d3_color;
5135
5136 d3_rgbPrototype.brighter = function(k) {
5137   k = Math.pow(0.7, arguments.length ? k : 1);
5138   var r = this.r,
5139       g = this.g,
5140       b = this.b,
5141       i = 30;
5142   if (!r && !g && !b) return new d3_rgb(i, i, i);
5143   if (r && r < i) r = i;
5144   if (g && g < i) g = i;
5145   if (b && b < i) b = i;
5146   return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
5147 };
5148
5149 d3_rgbPrototype.darker = function(k) {
5150   k = Math.pow(0.7, arguments.length ? k : 1);
5151   return new d3_rgb(k * this.r, k * this.g, k * this.b);
5152 };
5153
5154 d3_rgbPrototype.hsl = function() {
5155   return d3_rgb_hsl(this.r, this.g, this.b);
5156 };
5157
5158 d3_rgbPrototype.toString = function() {
5159   return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
5160 };
5161
5162 function d3_rgb_hex(v) {
5163   return v < 0x10
5164       ? "0" + Math.max(0, v).toString(16)
5165       : Math.min(255, v).toString(16);
5166 }
5167
5168 function d3_rgb_parse(format, rgb, hsl) {
5169   var r = 0, // red channel; int in [0, 255]
5170       g = 0, // green channel; int in [0, 255]
5171       b = 0, // blue channel; int in [0, 255]
5172       m1, // CSS color specification match
5173       m2, // CSS color specification type (e.g., rgb)
5174       color;
5175
5176   /* Handle hsl, rgb. */
5177   m1 = /([a-z]+)\((.*)\)/i.exec(format);
5178   if (m1) {
5179     m2 = m1[2].split(",");
5180     switch (m1[1]) {
5181       case "hsl": {
5182         return hsl(
5183           parseFloat(m2[0]), // degrees
5184           parseFloat(m2[1]) / 100, // percentage
5185           parseFloat(m2[2]) / 100 // percentage
5186         );
5187       }
5188       case "rgb": {
5189         return rgb(
5190           d3_rgb_parseNumber(m2[0]),
5191           d3_rgb_parseNumber(m2[1]),
5192           d3_rgb_parseNumber(m2[2])
5193         );
5194       }
5195     }
5196   }
5197
5198   /* Named colors. */
5199   if (color = d3_rgb_names.get(format.toLowerCase())) {
5200     return rgb(color.r, color.g, color.b);
5201   }
5202
5203   /* Hexadecimal colors: #rgb and #rrggbb. */
5204   if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
5205     if (format.length === 4) {
5206       r = (color & 0xf00) >> 4; r = (r >> 4) | r;
5207       g = (color & 0xf0); g = (g >> 4) | g;
5208       b = (color & 0xf); b = (b << 4) | b;
5209     } else if (format.length === 7) {
5210       r = (color & 0xff0000) >> 16;
5211       g = (color & 0xff00) >> 8;
5212       b = (color & 0xff);
5213     }
5214   }
5215
5216   return rgb(r, g, b);
5217 }
5218
5219 function d3_rgb_hsl(r, g, b) {
5220   var min = Math.min(r /= 255, g /= 255, b /= 255),
5221       max = Math.max(r, g, b),
5222       d = max - min,
5223       h,
5224       s,
5225       l = (max + min) / 2;
5226   if (d) {
5227     s = l < .5 ? d / (max + min) : d / (2 - max - min);
5228     if (r == max) h = (g - b) / d + (g < b ? 6 : 0);
5229     else if (g == max) h = (b - r) / d + 2;
5230     else h = (r - g) / d + 4;
5231     h *= 60;
5232   } else {
5233     h = NaN;
5234     s = l > 0 && l < 1 ? 0 : h;
5235   }
5236   return new d3_hsl(h, s, l);
5237 }
5238
5239 function d3_rgb_lab(r, g, b) {
5240   r = d3_rgb_xyz(r);
5241   g = d3_rgb_xyz(g);
5242   b = d3_rgb_xyz(b);
5243   var x = d3_xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / d3_lab_X),
5244       y = d3_xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / d3_lab_Y),
5245       z = d3_xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / d3_lab_Z);
5246   return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
5247 }
5248
5249 function d3_rgb_xyz(r) {
5250   return (r /= 255) <= 0.04045 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
5251 }
5252
5253 function d3_rgb_parseNumber(c) { // either integer or percentage
5254   var f = parseFloat(c);
5255   return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
5256 }
5257
5258 var d3_rgb_names = d3.map({
5259   aliceblue: 0xf0f8ff,
5260   antiquewhite: 0xfaebd7,
5261   aqua: 0x00ffff,
5262   aquamarine: 0x7fffd4,
5263   azure: 0xf0ffff,
5264   beige: 0xf5f5dc,
5265   bisque: 0xffe4c4,
5266   black: 0x000000,
5267   blanchedalmond: 0xffebcd,
5268   blue: 0x0000ff,
5269   blueviolet: 0x8a2be2,
5270   brown: 0xa52a2a,
5271   burlywood: 0xdeb887,
5272   cadetblue: 0x5f9ea0,
5273   chartreuse: 0x7fff00,
5274   chocolate: 0xd2691e,
5275   coral: 0xff7f50,
5276   cornflowerblue: 0x6495ed,
5277   cornsilk: 0xfff8dc,
5278   crimson: 0xdc143c,
5279   cyan: 0x00ffff,
5280   darkblue: 0x00008b,
5281   darkcyan: 0x008b8b,
5282   darkgoldenrod: 0xb8860b,
5283   darkgray: 0xa9a9a9,
5284   darkgreen: 0x006400,
5285   darkgrey: 0xa9a9a9,
5286   darkkhaki: 0xbdb76b,
5287   darkmagenta: 0x8b008b,
5288   darkolivegreen: 0x556b2f,
5289   darkorange: 0xff8c00,
5290   darkorchid: 0x9932cc,
5291   darkred: 0x8b0000,
5292   darksalmon: 0xe9967a,
5293   darkseagreen: 0x8fbc8f,
5294   darkslateblue: 0x483d8b,
5295   darkslategray: 0x2f4f4f,
5296   darkslategrey: 0x2f4f4f,
5297   darkturquoise: 0x00ced1,
5298   darkviolet: 0x9400d3,
5299   deeppink: 0xff1493,
5300   deepskyblue: 0x00bfff,
5301   dimgray: 0x696969,
5302   dimgrey: 0x696969,
5303   dodgerblue: 0x1e90ff,
5304   firebrick: 0xb22222,
5305   floralwhite: 0xfffaf0,
5306   forestgreen: 0x228b22,
5307   fuchsia: 0xff00ff,
5308   gainsboro: 0xdcdcdc,
5309   ghostwhite: 0xf8f8ff,
5310   gold: 0xffd700,
5311   goldenrod: 0xdaa520,
5312   gray: 0x808080,
5313   green: 0x008000,
5314   greenyellow: 0xadff2f,
5315   grey: 0x808080,
5316   honeydew: 0xf0fff0,
5317   hotpink: 0xff69b4,
5318   indianred: 0xcd5c5c,
5319   indigo: 0x4b0082,
5320   ivory: 0xfffff0,
5321   khaki: 0xf0e68c,
5322   lavender: 0xe6e6fa,
5323   lavenderblush: 0xfff0f5,
5324   lawngreen: 0x7cfc00,
5325   lemonchiffon: 0xfffacd,
5326   lightblue: 0xadd8e6,
5327   lightcoral: 0xf08080,
5328   lightcyan: 0xe0ffff,
5329   lightgoldenrodyellow: 0xfafad2,
5330   lightgray: 0xd3d3d3,
5331   lightgreen: 0x90ee90,
5332   lightgrey: 0xd3d3d3,
5333   lightpink: 0xffb6c1,
5334   lightsalmon: 0xffa07a,
5335   lightseagreen: 0x20b2aa,
5336   lightskyblue: 0x87cefa,
5337   lightslategray: 0x778899,
5338   lightslategrey: 0x778899,
5339   lightsteelblue: 0xb0c4de,
5340   lightyellow: 0xffffe0,
5341   lime: 0x00ff00,
5342   limegreen: 0x32cd32,
5343   linen: 0xfaf0e6,
5344   magenta: 0xff00ff,
5345   maroon: 0x800000,
5346   mediumaquamarine: 0x66cdaa,
5347   mediumblue: 0x0000cd,
5348   mediumorchid: 0xba55d3,
5349   mediumpurple: 0x9370db,
5350   mediumseagreen: 0x3cb371,
5351   mediumslateblue: 0x7b68ee,
5352   mediumspringgreen: 0x00fa9a,
5353   mediumturquoise: 0x48d1cc,
5354   mediumvioletred: 0xc71585,
5355   midnightblue: 0x191970,
5356   mintcream: 0xf5fffa,
5357   mistyrose: 0xffe4e1,
5358   moccasin: 0xffe4b5,
5359   navajowhite: 0xffdead,
5360   navy: 0x000080,
5361   oldlace: 0xfdf5e6,
5362   olive: 0x808000,
5363   olivedrab: 0x6b8e23,
5364   orange: 0xffa500,
5365   orangered: 0xff4500,
5366   orchid: 0xda70d6,
5367   palegoldenrod: 0xeee8aa,
5368   palegreen: 0x98fb98,
5369   paleturquoise: 0xafeeee,
5370   palevioletred: 0xdb7093,
5371   papayawhip: 0xffefd5,
5372   peachpuff: 0xffdab9,
5373   peru: 0xcd853f,
5374   pink: 0xffc0cb,
5375   plum: 0xdda0dd,
5376   powderblue: 0xb0e0e6,
5377   purple: 0x800080,
5378   rebeccapurple: 0x663399,
5379   red: 0xff0000,
5380   rosybrown: 0xbc8f8f,
5381   royalblue: 0x4169e1,
5382   saddlebrown: 0x8b4513,
5383   salmon: 0xfa8072,
5384   sandybrown: 0xf4a460,
5385   seagreen: 0x2e8b57,
5386   seashell: 0xfff5ee,
5387   sienna: 0xa0522d,
5388   silver: 0xc0c0c0,
5389   skyblue: 0x87ceeb,
5390   slateblue: 0x6a5acd,
5391   slategray: 0x708090,
5392   slategrey: 0x708090,
5393   snow: 0xfffafa,
5394   springgreen: 0x00ff7f,
5395   steelblue: 0x4682b4,
5396   tan: 0xd2b48c,
5397   teal: 0x008080,
5398   thistle: 0xd8bfd8,
5399   tomato: 0xff6347,
5400   turquoise: 0x40e0d0,
5401   violet: 0xee82ee,
5402   wheat: 0xf5deb3,
5403   white: 0xffffff,
5404   whitesmoke: 0xf5f5f5,
5405   yellow: 0xffff00,
5406   yellowgreen: 0x9acd32
5407 });
5408
5409 d3_rgb_names.forEach(function(key, value) {
5410   d3_rgb_names.set(key, d3_rgbNumber(value));
5411 });
5412
5413 d3.interpolateRgb = d3_interpolateRgb;
5414
5415 function d3_interpolateRgb(a, b) {
5416   a = d3.rgb(a);
5417   b = d3.rgb(b);
5418   var ar = a.r,
5419       ag = a.g,
5420       ab = a.b,
5421       br = b.r - ar,
5422       bg = b.g - ag,
5423       bb = b.b - ab;
5424   return function(t) {
5425     return "#"
5426         + d3_rgb_hex(Math.round(ar + br * t))
5427         + d3_rgb_hex(Math.round(ag + bg * t))
5428         + d3_rgb_hex(Math.round(ab + bb * t));
5429   };
5430 }
5431
5432 d3.interpolateObject = d3_interpolateObject;
5433
5434 function d3_interpolateObject(a, b) {
5435   var i = {},
5436       c = {},
5437       k;
5438   for (k in a) {
5439     if (k in b) {
5440       i[k] = d3_interpolate(a[k], b[k]);
5441     } else {
5442       c[k] = a[k];
5443     }
5444   }
5445   for (k in b) {
5446     if (!(k in a)) {
5447       c[k] = b[k];
5448     }
5449   }
5450   return function(t) {
5451     for (k in i) c[k] = i[k](t);
5452     return c;
5453   };
5454 }
5455
5456 d3.interpolateArray = d3_interpolateArray;
5457
5458 function d3_interpolateArray(a, b) {
5459   var x = [],
5460       c = [],
5461       na = a.length,
5462       nb = b.length,
5463       n0 = Math.min(a.length, b.length),
5464       i;
5465   for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));
5466   for (; i < na; ++i) c[i] = a[i];
5467   for (; i < nb; ++i) c[i] = b[i];
5468   return function(t) {
5469     for (i = 0; i < n0; ++i) c[i] = x[i](t);
5470     return c;
5471   };
5472 }
5473 d3.interpolateNumber = d3_interpolateNumber;
5474
5475 function d3_interpolateNumber(a, b) {
5476   a = +a, b = +b;
5477   return function(t) { return a * (1 - t) + b * t; };
5478 }
5479
5480 d3.interpolateString = d3_interpolateString;
5481
5482 function d3_interpolateString(a, b) {
5483   var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, // scan index for next number in b
5484       am, // current match in a
5485       bm, // current match in b
5486       bs, // string preceding current number in b, if any
5487       i = -1, // index in s
5488       s = [], // string constants and placeholders
5489       q = []; // number interpolators
5490
5491   // Coerce inputs to strings.
5492   a = a + "", b = b + "";
5493
5494   // Interpolate pairs of numbers in a & b.
5495   while ((am = d3_interpolate_numberA.exec(a))
5496       && (bm = d3_interpolate_numberB.exec(b))) {
5497     if ((bs = bm.index) > bi) { // a string precedes the next number in b
5498       bs = b.slice(bi, bs);
5499       if (s[i]) s[i] += bs; // coalesce with previous string
5500       else s[++i] = bs;
5501     }
5502     if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
5503       if (s[i]) s[i] += bm; // coalesce with previous string
5504       else s[++i] = bm;
5505     } else { // interpolate non-matching numbers
5506       s[++i] = null;
5507       q.push({i: i, x: d3_interpolateNumber(am, bm)});
5508     }
5509     bi = d3_interpolate_numberB.lastIndex;
5510   }
5511
5512   // Add remains of b.
5513   if (bi < b.length) {
5514     bs = b.slice(bi);
5515     if (s[i]) s[i] += bs; // coalesce with previous string
5516     else s[++i] = bs;
5517   }
5518
5519   // Special optimization for only a single match.
5520   // Otherwise, interpolate each of the numbers and rejoin the string.
5521   return s.length < 2
5522       ? (q[0] ? (b = q[0].x, function(t) { return b(t) + ""; })
5523       : function() { return b; })
5524       : (b = q.length, function(t) {
5525           for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
5526           return s.join("");
5527         });
5528 }
5529
5530 var d3_interpolate_numberA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
5531     d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, "g");
5532
5533 d3.interpolate = d3_interpolate;
5534
5535 function d3_interpolate(a, b) {
5536   var i = d3.interpolators.length, f;
5537   while (--i >= 0 && !(f = d3.interpolators[i](a, b)));
5538   return f;
5539 }
5540
5541 d3.interpolators = [
5542   function(a, b) {
5543     var t = typeof b;
5544     return (t === "string" ? (d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString)
5545         : b instanceof d3_color ? d3_interpolateRgb
5546         : Array.isArray(b) ? d3_interpolateArray
5547         : t === "object" && isNaN(b) ? d3_interpolateObject
5548         : d3_interpolateNumber)(a, b);
5549   }
5550 ];
5551
5552 d3.transform = function(string) {
5553   var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
5554   return (d3.transform = function(string) {
5555     if (string != null) {
5556       g.setAttribute("transform", string);
5557       var t = g.transform.baseVal.consolidate();
5558     }
5559     return new d3_transform(t ? t.matrix : d3_transformIdentity);
5560   })(string);
5561 };
5562
5563 // Compute x-scale and normalize the first row.
5564 // Compute shear and make second row orthogonal to first.
5565 // Compute y-scale and normalize the second row.
5566 // Finally, compute the rotation.
5567 function d3_transform(m) {
5568   var r0 = [m.a, m.b],
5569       r1 = [m.c, m.d],
5570       kx = d3_transformNormalize(r0),
5571       kz = d3_transformDot(r0, r1),
5572       ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
5573   if (r0[0] * r1[1] < r1[0] * r0[1]) {
5574     r0[0] *= -1;
5575     r0[1] *= -1;
5576     kx *= -1;
5577     kz *= -1;
5578   }
5579   this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
5580   this.translate = [m.e, m.f];
5581   this.scale = [kx, ky];
5582   this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
5583 };
5584
5585 d3_transform.prototype.toString = function() {
5586   return "translate(" + this.translate
5587       + ")rotate(" + this.rotate
5588       + ")skewX(" + this.skew
5589       + ")scale(" + this.scale
5590       + ")";
5591 };
5592
5593 function d3_transformDot(a, b) {
5594   return a[0] * b[0] + a[1] * b[1];
5595 }
5596
5597 function d3_transformNormalize(a) {
5598   var k = Math.sqrt(d3_transformDot(a, a));
5599   if (k) {
5600     a[0] /= k;
5601     a[1] /= k;
5602   }
5603   return k;
5604 }
5605
5606 function d3_transformCombine(a, b, k) {
5607   a[0] += k * b[0];
5608   a[1] += k * b[1];
5609   return a;
5610 }
5611
5612 var d3_transformIdentity = {a: 1, b: 0, c: 0, d: 1, e: 0, f: 0};
5613
5614 d3.interpolateTransform = d3_interpolateTransform;
5615
5616 function d3_interpolateTransform(a, b) {
5617   var s = [], // string constants and placeholders
5618       q = [], // number interpolators
5619       n,
5620       A = d3.transform(a),
5621       B = d3.transform(b),
5622       ta = A.translate,
5623       tb = B.translate,
5624       ra = A.rotate,
5625       rb = B.rotate,
5626       wa = A.skew,
5627       wb = B.skew,
5628       ka = A.scale,
5629       kb = B.scale;
5630
5631   if (ta[0] != tb[0] || ta[1] != tb[1]) {
5632     s.push("translate(", null, ",", null, ")");
5633     q.push({i: 1, x: d3_interpolateNumber(ta[0], tb[0])}, {i: 3, x: d3_interpolateNumber(ta[1], tb[1])});
5634   } else if (tb[0] || tb[1]) {
5635     s.push("translate(" + tb + ")");
5636   } else {
5637     s.push("");
5638   }
5639
5640   if (ra != rb) {
5641     if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; // shortest path
5642     q.push({i: s.push(s.pop() + "rotate(", null, ")") - 2, x: d3_interpolateNumber(ra, rb)});
5643   } else if (rb) {
5644     s.push(s.pop() + "rotate(" + rb + ")");
5645   }
5646
5647   if (wa != wb) {
5648     q.push({i: s.push(s.pop() + "skewX(", null, ")") - 2, x: d3_interpolateNumber(wa, wb)});
5649   } else if (wb) {
5650     s.push(s.pop() + "skewX(" + wb + ")");
5651   }
5652
5653   if (ka[0] != kb[0] || ka[1] != kb[1]) {
5654     n = s.push(s.pop() + "scale(", null, ",", null, ")");
5655     q.push({i: n - 4, x: d3_interpolateNumber(ka[0], kb[0])}, {i: n - 2, x: d3_interpolateNumber(ka[1], kb[1])});
5656   } else if (kb[0] != 1 || kb[1] != 1) {
5657     s.push(s.pop() + "scale(" + kb + ")");
5658   }
5659
5660   n = q.length;
5661   return function(t) {
5662     var i = -1, o;
5663     while (++i < n) s[(o = q[i]).i] = o.x(t);
5664     return s.join("");
5665   };
5666 }
5667
5668 d3_transitionPrototype.tween = function(name, tween) {
5669   var id = this.id, ns = this.namespace;
5670   if (arguments.length < 2) return this.node()[ns][id].tween.get(name);
5671   return d3_selection_each(this, tween == null
5672         ? function(node) { node[ns][id].tween.remove(name); }
5673         : function(node) { node[ns][id].tween.set(name, tween); });
5674 };
5675
5676 function d3_transition_tween(groups, name, value, tween) {
5677   var id = groups.id, ns = groups.namespace;
5678   return d3_selection_each(groups, typeof value === "function"
5679       ? function(node, i, j) { node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j))); }
5680       : (value = tween(value), function(node) { node[ns][id].tween.set(name, value); }));
5681 }
5682
5683 d3_transitionPrototype.attr = function(nameNS, value) {
5684   if (arguments.length < 2) {
5685
5686     // For attr(object), the object specifies the names and values of the
5687     // attributes to transition. The values may be functions that are
5688     // evaluated for each element.
5689     for (value in nameNS) this.attr(value, nameNS[value]);
5690     return this;
5691   }
5692
5693   var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate,
5694       name = d3.ns.qualify(nameNS);
5695
5696   // For attr(string, null), remove the attribute with the specified name.
5697   function attrNull() {
5698     this.removeAttribute(name);
5699   }
5700   function attrNullNS() {
5701     this.removeAttributeNS(name.space, name.local);
5702   }
5703
5704   // For attr(string, string), set the attribute with the specified name.
5705   function attrTween(b) {
5706     return b == null ? attrNull : (b += "", function() {
5707       var a = this.getAttribute(name), i;
5708       return a !== b && (i = interpolate(a, b), function(t) { this.setAttribute(name, i(t)); });
5709     });
5710   }
5711   function attrTweenNS(b) {
5712     return b == null ? attrNullNS : (b += "", function() {
5713       var a = this.getAttributeNS(name.space, name.local), i;
5714       return a !== b && (i = interpolate(a, b), function(t) { this.setAttributeNS(name.space, name.local, i(t)); });
5715     });
5716   }
5717
5718   return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween);
5719 };
5720
5721 d3_transitionPrototype.attrTween = function(nameNS, tween) {
5722   var name = d3.ns.qualify(nameNS);
5723
5724   function attrTween(d, i) {
5725     var f = tween.call(this, d, i, this.getAttribute(name));
5726     return f && function(t) { this.setAttribute(name, f(t)); };
5727   }
5728   function attrTweenNS(d, i) {
5729     var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
5730     return f && function(t) { this.setAttributeNS(name.space, name.local, f(t)); };
5731   }
5732
5733   return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
5734 };
5735
5736 d3_transitionPrototype.style = function(name, value, priority) {
5737   var n = arguments.length;
5738   if (n < 3) {
5739
5740     // For style(object) or style(object, string), the object specifies the
5741     // names and values of the attributes to set or remove. The values may be
5742     // functions that are evaluated for each element. The optional string
5743     // specifies the priority.
5744     if (typeof name !== "string") {
5745       if (n < 2) value = "";
5746       for (priority in name) this.style(priority, name[priority], value);
5747       return this;
5748     }
5749
5750     // For style(string, string) or style(string, function), use the default
5751     // priority. The priority is ignored for style(string, null).
5752     priority = "";
5753   }
5754
5755   // For style(name, null) or style(name, null, priority), remove the style
5756   // property with the specified name. The priority is ignored.
5757   function styleNull() {
5758     this.style.removeProperty(name);
5759   }
5760
5761   // For style(name, string) or style(name, string, priority), set the style
5762   // property with the specified name, using the specified priority.
5763   // Otherwise, a name, value and priority are specified, and handled as below.
5764   function styleString(b) {
5765     return b == null ? styleNull : (b += "", function() {
5766       var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;
5767       return a !== b && (i = d3_interpolate(a, b), function(t) { this.style.setProperty(name, i(t), priority); });
5768     });
5769   }
5770
5771   return d3_transition_tween(this, "style." + name, value, styleString);
5772 };
5773
5774 d3_transitionPrototype.styleTween = function(name, tween, priority) {
5775   if (arguments.length < 3) priority = "";
5776
5777   function styleTween(d, i) {
5778     var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));
5779     return f && function(t) { this.style.setProperty(name, f(t), priority); };
5780   }
5781
5782   return this.tween("style." + name, styleTween);
5783 };
5784
5785 d3_transitionPrototype.text = function(value) {
5786   return d3_transition_tween(this, "text", value, d3_transition_text);
5787 };
5788
5789 function d3_transition_text(b) {
5790   if (b == null) b = "";
5791   return function() { this.textContent = b; };
5792 }
5793
5794 d3_transitionPrototype.remove = function() {
5795   var ns = this.namespace;
5796   return this.each("end.transition", function() {
5797     var p;
5798     if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);
5799   });
5800 };
5801
5802 var d3_ease_default = function() { return d3_identity; };
5803
5804 var d3_ease = d3.map({
5805   linear: d3_ease_default,
5806   poly: d3_ease_poly,
5807   quad: function() { return d3_ease_quad; },
5808   cubic: function() { return d3_ease_cubic; },
5809   sin: function() { return d3_ease_sin; },
5810   exp: function() { return d3_ease_exp; },
5811   circle: function() { return d3_ease_circle; },
5812   elastic: d3_ease_elastic,
5813   back: d3_ease_back,
5814   bounce: function() { return d3_ease_bounce; }
5815 });
5816
5817 var d3_ease_mode = d3.map({
5818   "in": d3_identity,
5819   "out": d3_ease_reverse,
5820   "in-out": d3_ease_reflect,
5821   "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); }
5822 });
5823
5824 d3.ease = function(name) {
5825   var i = name.indexOf("-"),
5826       t = i >= 0 ? name.slice(0, i) : name,
5827       m = i >= 0 ? name.slice(i + 1) : "in";
5828   t = d3_ease.get(t) || d3_ease_default;
5829   m = d3_ease_mode.get(m) || d3_identity;
5830   return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
5831 };
5832
5833 function d3_ease_clamp(f) {
5834   return function(t) {
5835     return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
5836   };
5837 }
5838
5839 function d3_ease_reverse(f) {
5840   return function(t) {
5841     return 1 - f(1 - t);
5842   };
5843 }
5844
5845 function d3_ease_reflect(f) {
5846   return function(t) {
5847     return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
5848   };
5849 }
5850
5851 function d3_ease_quad(t) {
5852   return t * t;
5853 }
5854
5855 function d3_ease_cubic(t) {
5856   return t * t * t;
5857 }
5858
5859 // Optimized clamp(reflect(poly(3))).
5860 function d3_ease_cubicInOut(t) {
5861   if (t <= 0) return 0;
5862   if (t >= 1) return 1;
5863   var t2 = t * t, t3 = t2 * t;
5864   return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
5865 }
5866
5867 function d3_ease_poly(e) {
5868   return function(t) {
5869     return Math.pow(t, e);
5870   };
5871 }
5872
5873 function d3_ease_sin(t) {
5874   return 1 - Math.cos(t * halfπ);
5875 }
5876
5877 function d3_ease_exp(t) {
5878   return Math.pow(2, 10 * (t - 1));
5879 }
5880
5881 function d3_ease_circle(t) {
5882   return 1 - Math.sqrt(1 - t * t);
5883 }
5884
5885 function d3_ease_elastic(a, p) {
5886   var s;
5887   if (arguments.length < 2) p = 0.45;
5888   if (arguments.length) s = p / τ * Math.asin(1 / a);
5889   else a = 1, s = p / 4;
5890   return function(t) {
5891     return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
5892   };
5893 }
5894
5895 function d3_ease_back(s) {
5896   if (!s) s = 1.70158;
5897   return function(t) {
5898     return t * t * ((s + 1) * t - s);
5899   };
5900 }
5901
5902 function d3_ease_bounce(t) {
5903   return t < 1 / 2.75 ? 7.5625 * t * t
5904       : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
5905       : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
5906       : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
5907 }
5908
5909 d3_transitionPrototype.ease = function(value) {
5910   var id = this.id, ns = this.namespace;
5911   if (arguments.length < 1) return this.node()[ns][id].ease;
5912   if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
5913   return d3_selection_each(this, function(node) { node[ns][id].ease = value; });
5914 };
5915
5916 d3_transitionPrototype.delay = function(value) {
5917   var id = this.id, ns = this.namespace;
5918   if (arguments.length < 1) return this.node()[ns][id].delay;
5919   return d3_selection_each(this, typeof value === "function"
5920       ? function(node, i, j) { node[ns][id].delay = +value.call(node, node.__data__, i, j); }
5921       : (value = +value, function(node) { node[ns][id].delay = value; }));
5922 };
5923
5924 d3_transitionPrototype.duration = function(value) {
5925   var id = this.id, ns = this.namespace;
5926   if (arguments.length < 1) return this.node()[ns][id].duration;
5927   return d3_selection_each(this, typeof value === "function"
5928       ? function(node, i, j) { node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j)); }
5929       : (value = Math.max(1, value), function(node) { node[ns][id].duration = value; }));
5930 };
5931
5932 d3_transitionPrototype.each = function(type, listener) {
5933   var id = this.id, ns = this.namespace;
5934   if (arguments.length < 2) {
5935     var inherit = d3_transitionInherit,
5936         inheritId = d3_transitionInheritId;
5937     try {
5938       d3_transitionInheritId = id;
5939       d3_selection_each(this, function(node, i, j) {
5940         d3_transitionInherit = node[ns][id];
5941         type.call(node, node.__data__, i, j);
5942       });
5943     } finally {
5944       d3_transitionInherit = inherit;
5945       d3_transitionInheritId = inheritId;
5946     }
5947   } else {
5948     d3_selection_each(this, function(node) {
5949       var transition = node[ns][id];
5950       (transition.event || (transition.event = d3.dispatch("start", "end", "interrupt"))).on(type, listener);
5951     });
5952   }
5953   return this;
5954 };
5955
5956 d3_transitionPrototype.transition = function() {
5957   var id0 = this.id,
5958       id1 = ++d3_transitionId,
5959       ns = this.namespace,
5960       subgroups = [],
5961       subgroup,
5962       group,
5963       node,
5964       transition;
5965
5966   for (var j = 0, m = this.length; j < m; j++) {
5967     subgroups.push(subgroup = []);
5968     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
5969       if (node = group[i]) {
5970         transition = node[ns][id0];
5971         d3_transitionNode(node, i, ns, id1, {time: transition.time, ease: transition.ease, delay: transition.delay + transition.duration, duration: transition.duration});
5972       }
5973       subgroup.push(node);
5974     }
5975   }
5976
5977   return d3_transition(subgroups, ns, id1);
5978 };
5979
5980 function d3_transitionNamespace(name) {
5981   return name == null ? "__transition__" : "__transition_" + name + "__";
5982 }
5983
5984 function d3_transitionNode(node, i, ns, id, inherit) {
5985   var lock = node[ns] || (node[ns] = {active: 0, count: 0}),
5986       transition = lock[id];
5987
5988   if (!transition) {
5989     var time = inherit.time;
5990
5991     transition = lock[id] = {
5992       tween: new d3_Map,
5993       time: time,
5994       delay: inherit.delay,
5995       duration: inherit.duration,
5996       ease: inherit.ease,
5997       index: i
5998     };
5999
6000     inherit = null; // allow gc
6001
6002     ++lock.count;
6003
6004     d3.timer(function(elapsed) {
6005       var delay = transition.delay,
6006           duration,
6007           ease,
6008           timer = d3_timer_active,
6009           tweened = [];
6010
6011       timer.t = delay + time;
6012       if (delay <= elapsed) return start(elapsed - delay);
6013       timer.c = start;
6014
6015       function start(elapsed) {
6016         if (lock.active > id) return stop();
6017
6018         var active = lock[lock.active];
6019         if (active) {
6020           --lock.count;
6021           delete lock[lock.active];
6022           active.event && active.event.interrupt.call(node, node.__data__, active.index);
6023         }
6024
6025         lock.active = id;
6026
6027         transition.event && transition.event.start.call(node, node.__data__, i);
6028
6029         transition.tween.forEach(function(key, value) {
6030           if (value = value.call(node, node.__data__, i)) {
6031             tweened.push(value);
6032           }
6033         });
6034
6035         // Deferred capture to allow tweens to initialize ease & duration.
6036         ease = transition.ease;
6037         duration = transition.duration;
6038
6039         d3.timer(function() { // defer to end of current frame
6040           timer.c = tick(elapsed || 1) ? d3_true : tick;
6041           return 1;
6042         }, 0, time);
6043       }
6044
6045       function tick(elapsed) {
6046         if (lock.active !== id) return 1;
6047
6048         var t = elapsed / duration,
6049             e = ease(t),
6050             n = tweened.length;
6051
6052         while (n > 0) {
6053           tweened[--n].call(node, e);
6054         }
6055
6056         if (t >= 1) {
6057           transition.event && transition.event.end.call(node, node.__data__, i);
6058           return stop();
6059         }
6060       }
6061
6062       function stop() {
6063         if (--lock.count) delete lock[id];
6064         else delete node[ns];
6065         return 1;
6066       }
6067     }, 0, time);
6068   }
6069 }
6070
6071 d3.xhr = d3_xhrType(d3_identity);
6072
6073 function d3_xhrType(response) {
6074   return function(url, mimeType, callback) {
6075     if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, mimeType = null;
6076     return d3_xhr(url, mimeType, response, callback);
6077   };
6078 }
6079
6080 function d3_xhr(url, mimeType, response, callback) {
6081   var xhr = {},
6082       dispatch = d3.dispatch("beforesend", "progress", "load", "error"),
6083       headers = {},
6084       request = new XMLHttpRequest,
6085       responseType = null;
6086
6087   // If IE does not support CORS, use XDomainRequest.
6088   if (this.XDomainRequest
6089       && !("withCredentials" in request)
6090       && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest;
6091
6092   "onload" in request
6093       ? request.onload = request.onerror = respond
6094       : request.onreadystatechange = function() { request.readyState > 3 && respond(); };
6095
6096   function respond() {
6097     var status = request.status, result;
6098     if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {
6099       try {
6100         result = response.call(xhr, request);
6101       } catch (e) {
6102         dispatch.error.call(xhr, e);
6103         return;
6104       }
6105       dispatch.load.call(xhr, result);
6106     } else {
6107       dispatch.error.call(xhr, request);
6108     }
6109   }
6110
6111   request.onprogress = function(event) {
6112     var o = d3.event;
6113     d3.event = event;
6114     try { dispatch.progress.call(xhr, request); }
6115     finally { d3.event = o; }
6116   };
6117
6118   xhr.header = function(name, value) {
6119     name = (name + "").toLowerCase();
6120     if (arguments.length < 2) return headers[name];
6121     if (value == null) delete headers[name];
6122     else headers[name] = value + "";
6123     return xhr;
6124   };
6125
6126   // If mimeType is non-null and no Accept header is set, a default is used.
6127   xhr.mimeType = function(value) {
6128     if (!arguments.length) return mimeType;
6129     mimeType = value == null ? null : value + "";
6130     return xhr;
6131   };
6132
6133   // Specifies what type the response value should take;
6134   // for instance, arraybuffer, blob, document, or text.
6135   xhr.responseType = function(value) {
6136     if (!arguments.length) return responseType;
6137     responseType = value;
6138     return xhr;
6139   };
6140
6141   // Specify how to convert the response content to a specific type;
6142   // changes the callback value on "load" events.
6143   xhr.response = function(value) {
6144     response = value;
6145     return xhr;
6146   };
6147
6148   // Convenience methods.
6149   ["get", "post"].forEach(function(method) {
6150     xhr[method] = function() {
6151       return xhr.send.apply(xhr, [method].concat(d3_array(arguments)));
6152     };
6153   });
6154
6155   // If callback is non-null, it will be used for error and load events.
6156   xhr.send = function(method, data, callback) {
6157     if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
6158     request.open(method, url, true);
6159     if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
6160     if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
6161     if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
6162     if (responseType != null) request.responseType = responseType;
6163     if (callback != null) xhr.on("error", callback).on("load", function(request) { callback(null, request); });
6164     dispatch.beforesend.call(xhr, request);
6165     request.send(data == null ? null : data);
6166     return xhr;
6167   };
6168
6169   xhr.abort = function() {
6170     request.abort();
6171     return xhr;
6172   };
6173
6174   d3.rebind(xhr, dispatch, "on");
6175
6176   return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
6177 };
6178
6179 function d3_xhr_fixCallback(callback) {
6180   return callback.length === 1
6181       ? function(error, request) { callback(error == null ? request : null); }
6182       : callback;
6183 }
6184
6185 function d3_xhrHasResponse(request) {
6186   var type = request.responseType;
6187   return type && type !== "text"
6188       ? request.response // null on error
6189       : request.responseText; // "" on error
6190 }
6191
6192 d3.text = d3_xhrType(function(request) {
6193   return request.responseText;
6194 });
6195
6196 d3.json = function(url, callback) {
6197   return d3_xhr(url, "application/json", d3_json, callback);
6198 };
6199
6200 function d3_json(request) {
6201   return JSON.parse(request.responseText);
6202 }
6203
6204 d3.html = function(url, callback) {
6205   return d3_xhr(url, "text/html", d3_html, callback);
6206 };
6207
6208 function d3_html(request) {
6209   var range = d3_document.createRange();
6210   range.selectNode(d3_document.body);
6211   return range.createContextualFragment(request.responseText);
6212 }
6213
6214 d3.xml = d3_xhrType(function(request) {
6215   return request.responseXML;
6216 });
6217   if (typeof define === "function" && define.amd) define(d3);
6218   else if (typeof module === "object" && module.exports) module.exports = d3;
6219   this.d3 = d3;
6220 }();
6221 d3.combobox = function() {
6222     var event = d3.dispatch('accept'),
6223         data = [],
6224         suggestions = [],
6225         minItems = 2;
6226
6227     var fetcher = function(val, cb) {
6228         cb(data.filter(function(d) {
6229             return d.value
6230                 .toString()
6231                 .toLowerCase()
6232                 .indexOf(val.toLowerCase()) !== -1;
6233         }));
6234     };
6235
6236     var combobox = function(input) {
6237         var idx = -1,
6238             container = d3.select(document.body)
6239                 .selectAll('div.combobox')
6240                 .filter(function(d) { return d === input.node(); }),
6241             shown = !container.empty();
6242
6243         input
6244             .classed('combobox-input', true)
6245             .on('focus.typeahead', focus)
6246             .on('blur.typeahead', blur)
6247             .on('keydown.typeahead', keydown)
6248             .on('keyup.typeahead', keyup)
6249             .on('input.typeahead', change)
6250             .each(function() {
6251                 var parent = this.parentNode,
6252                     sibling = this.nextSibling;
6253
6254                 var caret = d3.select(parent).selectAll('.combobox-caret')
6255                     .filter(function(d) { return d === input.node(); })
6256                     .data([input.node()]);
6257
6258                 caret.enter().insert('div', function() { return sibling; })
6259                     .attr('class', 'combobox-caret');
6260
6261                 caret
6262                     .on('mousedown', function () {
6263                         // prevent the form element from blurring. it blurs
6264                         // on mousedown
6265                         d3.event.stopPropagation();
6266                         d3.event.preventDefault();
6267                         if (!shown) {
6268                             input.node().focus();
6269                             fetch('', render);
6270                         } else {
6271                             hide();
6272                         }
6273                     });
6274             });
6275
6276         function focus() {
6277             fetch(value(), render);
6278         }
6279
6280         function blur() {
6281             window.setTimeout(hide, 150);
6282         }
6283
6284         function show() {
6285             if (!shown) {
6286                 container = d3.select(document.body)
6287                     .insert('div', ':first-child')
6288                     .datum(input.node())
6289                     .attr('class', 'combobox')
6290                     .style({
6291                         position: 'absolute',
6292                         display: 'block',
6293                         left: '0px'
6294                     })
6295                     .on('mousedown', function () {
6296                         // prevent moving focus out of the text field
6297                         d3.event.preventDefault();
6298                     });
6299
6300                 d3.select(document.body)
6301                     .on('scroll.combobox', render, true);
6302
6303                 shown = true;
6304             }
6305         }
6306
6307         function hide() {
6308             if (shown) {
6309                 idx = -1;
6310                 container.remove();
6311
6312                 d3.select(document.body)
6313                     .on('scroll.combobox', null);
6314
6315                 shown = false;
6316             }
6317         }
6318
6319         function keydown() {
6320            switch (d3.event.keyCode) {
6321                // backspace, delete
6322                case 8:
6323                case 46:
6324                    input.on('input.typeahead', function() {
6325                        idx = -1;
6326                        render();
6327                        var start = input.property('selectionStart');
6328                        input.node().setSelectionRange(start, start);
6329                        input.on('input.typeahead', change);
6330                    });
6331                    break;
6332                // tab
6333                case 9:
6334                    container.selectAll('a.selected').each(event.accept);
6335                    break;
6336                // return
6337                case 13:
6338                    d3.event.preventDefault();
6339                    break;
6340                // up arrow
6341                case 38:
6342                    nav(-1);
6343                    d3.event.preventDefault();
6344                    break;
6345                // down arrow
6346                case 40:
6347                    nav(+1);
6348                    d3.event.preventDefault();
6349                    break;
6350            }
6351            d3.event.stopPropagation();
6352         }
6353
6354         function keyup() {
6355             switch (d3.event.keyCode) {
6356                 // escape
6357                 case 27:
6358                     hide();
6359                     break;
6360                 // return
6361                 case 13:
6362                     container.selectAll('a.selected').each(event.accept);
6363                     hide();
6364                     break;
6365             }
6366         }
6367
6368         function change() {
6369             fetch(value(), function() {
6370                 autocomplete();
6371                 render();
6372             });
6373         }
6374
6375         function nav(dir) {
6376             idx = Math.max(Math.min(idx + dir, suggestions.length - 1), 0);
6377             input.property('value', suggestions[idx].value);
6378             render();
6379             ensureVisible();
6380         }
6381
6382         function value() {
6383             var value = input.property('value'),
6384                 start = input.property('selectionStart'),
6385                 end = input.property('selectionEnd');
6386
6387             if (start && end) {
6388                 value = value.substring(0, start);
6389             }
6390
6391             return value;
6392         }
6393
6394         function fetch(v, cb) {
6395             fetcher.call(input, v, function(_) {
6396                 suggestions = _;
6397                 cb();
6398             });
6399         }
6400
6401         function autocomplete() {
6402             var v = value();
6403
6404             idx = -1;
6405
6406             if (!v) return;
6407
6408             for (var i = 0; i < suggestions.length; i++) {
6409                 if (suggestions[i].value.toLowerCase().indexOf(v.toLowerCase()) === 0) {
6410                     var completion = v + suggestions[i].value.substr(v.length);
6411                     idx = i;
6412                     input.property('value', completion);
6413                     input.node().setSelectionRange(v.length, completion.length);
6414                     return;
6415                 }
6416             }
6417         }
6418
6419         function render() {
6420             if (suggestions.length >= minItems && document.activeElement === input.node()) {
6421                 show();
6422             } else {
6423                 hide();
6424                 return;
6425             }
6426
6427             var options = container
6428                 .selectAll('a.combobox-option')
6429                 .data(suggestions, function(d) { return d.value; });
6430
6431             options.enter().append('a')
6432                 .attr('class', 'combobox-option')
6433                 .text(function(d) { return d.value; });
6434
6435             options
6436                 .attr('title', function(d) { return d.title; })
6437                 .classed('selected', function(d, i) { return i == idx; })
6438                 .on('mouseover', select)
6439                 .on('click', accept)
6440                 .order();
6441
6442             options.exit()
6443                 .remove();
6444
6445             var rect = input.node().getBoundingClientRect();
6446
6447             container.style({
6448                 'left': rect.left + 'px',
6449                 'width': rect.width + 'px',
6450                 'top': rect.height + rect.top + 'px'
6451             });
6452         }
6453
6454         function select(d, i) {
6455             idx = i;
6456             render();
6457         }
6458
6459         function ensureVisible() {
6460             var node = container.selectAll('a.selected').node();
6461             if (node) node.scrollIntoView();
6462         }
6463
6464         function accept(d) {
6465             if (!shown) return;
6466             input
6467                 .property('value', d.value)
6468                 .trigger('change');
6469             event.accept(d);
6470             hide();
6471         }
6472     };
6473
6474     combobox.fetcher = function(_) {
6475         if (!arguments.length) return fetcher;
6476         fetcher = _;
6477         return combobox;
6478     };
6479
6480     combobox.data = function(_) {
6481         if (!arguments.length) return data;
6482         data = _;
6483         return combobox;
6484     };
6485
6486     combobox.minItems = function(_) {
6487         if (!arguments.length) return minItems;
6488         minItems = _;
6489         return combobox;
6490     };
6491
6492     return d3.rebind(combobox, event, 'on');
6493 };
6494 d3.geo.tile = function() {
6495   var size = [960, 500],
6496       scale = 256,
6497       scaleExtent = [0, 20],
6498       translate = [size[0] / 2, size[1] / 2],
6499       zoomDelta = 0;
6500
6501   function bound(_) {
6502       return Math.min(scaleExtent[1], Math.max(scaleExtent[0], _));
6503   }
6504
6505   function tile() {
6506     var z = Math.max(Math.log(scale) / Math.LN2 - 8, 0),
6507         z0 = bound(Math.round(z + zoomDelta)),
6508         k = Math.pow(2, z - z0 + 8),
6509         origin = [(translate[0] - scale / 2) / k, (translate[1] - scale / 2) / k],
6510         tiles = [],
6511         cols = d3.range(Math.max(0, Math.floor(-origin[0])), Math.max(0, Math.ceil(size[0] / k - origin[0]))),
6512         rows = d3.range(Math.max(0, Math.floor(-origin[1])), Math.max(0, Math.ceil(size[1] / k - origin[1])));
6513
6514     rows.forEach(function(y) {
6515       cols.forEach(function(x) {
6516         tiles.push([x, y, z0]);
6517       });
6518     });
6519
6520     tiles.translate = origin;
6521     tiles.scale = k;
6522
6523     return tiles;
6524   }
6525
6526   tile.scaleExtent = function(_) {
6527     if (!arguments.length) return scaleExtent;
6528     scaleExtent = _;
6529     return tile;
6530   };
6531
6532   tile.size = function(_) {
6533     if (!arguments.length) return size;
6534     size = _;
6535     return tile;
6536   };
6537
6538   tile.scale = function(_) {
6539     if (!arguments.length) return scale;
6540     scale = _;
6541     return tile;
6542   };
6543
6544   tile.translate = function(_) {
6545     if (!arguments.length) return translate;
6546     translate = _;
6547     return tile;
6548   };
6549
6550   tile.zoomDelta = function(_) {
6551     if (!arguments.length) return zoomDelta;
6552     zoomDelta = +_;
6553     return tile;
6554   };
6555
6556   return tile;
6557 };
6558 d3.jsonp = function (url, callback) {
6559   function rand() {
6560     var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
6561       c = '', i = -1;
6562     while (++i < 15) c += chars.charAt(Math.floor(Math.random() * 52));
6563     return c;
6564   }
6565
6566   function create(url) {
6567     var e = url.match(/callback=d3.jsonp.(\w+)/),
6568       c = e ? e[1] : rand();
6569     d3.jsonp[c] = function(data) {
6570       callback(data);
6571       delete d3.jsonp[c];
6572       script.remove();
6573     };
6574     return 'd3.jsonp.' + c;
6575   }
6576
6577   var cb = create(url),
6578     script = d3.select('head')
6579     .append('script')
6580     .attr('type', 'text/javascript')
6581     .attr('src', url.replace(/(\{|%7B)callback(\}|%7D)/, cb));
6582 };
6583 /*
6584  * This code is licensed under the MIT license.
6585  *
6586  * Copyright © 2013, iD authors.
6587  *
6588  * Portions copyright © 2011, Keith Cirkel
6589  * See https://github.com/keithamus/jwerty
6590  *
6591  */
6592 d3.keybinding = function(namespace) {
6593     var bindings = [];
6594
6595     function matches(binding, event) {
6596         for (var p in binding.event) {
6597             if (event[p] != binding.event[p])
6598                 return false;
6599         }
6600
6601         return (!binding.capture) === (event.eventPhase !== Event.CAPTURING_PHASE);
6602     }
6603
6604     function capture() {
6605         for (var i = 0; i < bindings.length; i++) {
6606             var binding = bindings[i];
6607             if (matches(binding, d3.event)) {
6608                 binding.callback();
6609             }
6610         }
6611     }
6612
6613     function bubble() {
6614         var tagName = d3.select(d3.event.target).node().tagName;
6615         if (tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA') {
6616             return;
6617         }
6618         capture();
6619     }
6620
6621     function keybinding(selection) {
6622         selection = selection || d3.select(document);
6623         selection.on('keydown.capture' + namespace, capture, true);
6624         selection.on('keydown.bubble' + namespace, bubble, false);
6625         return keybinding;
6626     }
6627
6628     keybinding.off = function(selection) {
6629         selection = selection || d3.select(document);
6630         selection.on('keydown.capture' + namespace, null);
6631         selection.on('keydown.bubble' + namespace, null);
6632         return keybinding;
6633     };
6634
6635     keybinding.on = function(code, callback, capture) {
6636         var binding = {
6637             event: {
6638                 keyCode: 0,
6639                 shiftKey: false,
6640                 ctrlKey: false,
6641                 altKey: false,
6642                 metaKey: false
6643             },
6644             capture: capture,
6645             callback: callback
6646         };
6647
6648         code = code.toLowerCase().match(/(?:(?:[^+⇧⌃⌥⌘])+|[⇧⌃⌥⌘]|\+\+|^\+$)/g);
6649
6650         for (var i = 0; i < code.length; i++) {
6651             // Normalise matching errors
6652             if (code[i] === '++') code[i] = '+';
6653
6654             if (code[i] in d3.keybinding.modifierCodes) {
6655                 binding.event[d3.keybinding.modifierProperties[d3.keybinding.modifierCodes[code[i]]]] = true;
6656             } else if (code[i] in d3.keybinding.keyCodes) {
6657                 binding.event.keyCode = d3.keybinding.keyCodes[code[i]];
6658             }
6659         }
6660
6661         bindings.push(binding);
6662
6663         return keybinding;
6664     };
6665
6666     return keybinding;
6667 };
6668
6669 (function () {
6670     d3.keybinding.modifierCodes = {
6671         // Shift key, ⇧
6672         '⇧': 16, shift: 16,
6673         // CTRL key, on Mac: ⌃
6674         '⌃': 17, ctrl: 17,
6675         // ALT key, on Mac: ⌥ (Alt)
6676         '⌥': 18, alt: 18, option: 18,
6677         // META, on Mac: ⌘ (CMD), on Windows (Win), on Linux (Super)
6678         '⌘': 91, meta: 91, cmd: 91, 'super': 91, win: 91
6679     };
6680
6681     d3.keybinding.modifierProperties = {
6682         16: 'shiftKey',
6683         17: 'ctrlKey',
6684         18: 'altKey',
6685         91: 'metaKey'
6686     };
6687
6688     d3.keybinding.keyCodes = {
6689         // Backspace key, on Mac: ⌫ (Backspace)
6690         '⌫': 8, backspace: 8,
6691         // Tab Key, on Mac: ⇥ (Tab), on Windows ⇥⇥
6692         '⇥': 9, '⇆': 9, tab: 9,
6693         // Return key, ↩
6694         '↩': 13, 'return': 13, enter: 13, '⌅': 13,
6695         // Pause/Break key
6696         'pause': 19, 'pause-break': 19,
6697         // Caps Lock key, ⇪
6698         '⇪': 20, caps: 20, 'caps-lock': 20,
6699         // Escape key, on Mac: ⎋, on Windows: Esc
6700         '⎋': 27, escape: 27, esc: 27,
6701         // Space key
6702         space: 32,
6703         // Page-Up key, or pgup, on Mac: ↖
6704         '↖': 33, pgup: 33, 'page-up': 33,
6705         // Page-Down key, or pgdown, on Mac: ↘
6706         '↘': 34, pgdown: 34, 'page-down': 34,
6707         // END key, on Mac: ⇟
6708         '⇟': 35, end: 35,
6709         // HOME key, on Mac: ⇞
6710         '⇞': 36, home: 36,
6711         // Insert key, or ins
6712         ins: 45, insert: 45,
6713         // Delete key, on Mac: ⌦ (Delete)
6714         '⌦': 46, del: 46, 'delete': 46,
6715         // Left Arrow Key, or ←
6716         '←': 37, left: 37, 'arrow-left': 37,
6717         // Up Arrow Key, or ↑
6718         '↑': 38, up: 38, 'arrow-up': 38,
6719         // Right Arrow Key, or →
6720         '→': 39, right: 39, 'arrow-right': 39,
6721         // Up Arrow Key, or ↓
6722         '↓': 40, down: 40, 'arrow-down': 40,
6723         // odities, printing characters that come out wrong:
6724         // Firefox Equals
6725         'ffequals': 61,
6726         // Num-Multiply, or *
6727         '*': 106, star: 106, asterisk: 106, multiply: 106,
6728         // Num-Plus or +
6729         '+': 107, 'plus': 107,
6730         // Num-Subtract, or -
6731         '-': 109, subtract: 109,
6732         // Firefox Minus
6733         'ffplus': 171,
6734         // Firefox Minus
6735         'ffminus': 173,
6736         // Semicolon
6737         ';': 186, semicolon: 186,
6738         // = or equals
6739         '=': 187, 'equals': 187,
6740         // Comma, or ,
6741         ',': 188, comma: 188,
6742         'dash': 189, //???
6743         // Period, or ., or full-stop
6744         '.': 190, period: 190, 'full-stop': 190,
6745         // Slash, or /, or forward-slash
6746         '/': 191, slash: 191, 'forward-slash': 191,
6747         // Tick, or `, or back-quote
6748         '`': 192, tick: 192, 'back-quote': 192,
6749         // Open bracket, or [
6750         '[': 219, 'open-bracket': 219,
6751         // Back slash, or \
6752         '\\': 220, 'back-slash': 220,
6753         // Close backet, or ]
6754         ']': 221, 'close-bracket': 221,
6755         // Apostrophe, or Quote, or '
6756         '\'': 222, quote: 222, apostrophe: 222
6757     };
6758
6759     // NUMPAD 0-9
6760     var i = 95, n = 0;
6761     while (++i < 106) {
6762         d3.keybinding.keyCodes['num-' + n] = i;
6763         ++n;
6764     }
6765
6766     // 0-9
6767     i = 47; n = 0;
6768     while (++i < 58) {
6769         d3.keybinding.keyCodes[n] = i;
6770         ++n;
6771     }
6772
6773     // F1-F25
6774     i = 111; n = 1;
6775     while (++i < 136) {
6776         d3.keybinding.keyCodes['f' + n] = i;
6777         ++n;
6778     }
6779
6780     // a-z
6781     i = 64;
6782     while (++i < 91) {
6783         d3.keybinding.keyCodes[String.fromCharCode(i).toLowerCase()] = i;
6784     }
6785 })();
6786 d3.selection.prototype.one = function (type, listener, capture) {
6787     var target = this, typeOnce = type + ".once";
6788     function one() {
6789         target.on(typeOnce, null);
6790         listener.apply(this, arguments);
6791     }
6792     target.on(typeOnce, one, capture);
6793     return this;
6794 };
6795 d3.selection.prototype.dimensions = function (dimensions) {
6796     if (!arguments.length) {
6797         var node = this.node();
6798         return [node.offsetWidth,
6799                 node.offsetHeight];
6800     }
6801     return this.attr({width: dimensions[0], height: dimensions[1]});
6802 };
6803 d3.selection.prototype.trigger = function (type) {
6804     this.each(function() {
6805         var evt = document.createEvent('HTMLEvents');
6806         evt.initEvent(type, true, true);
6807         this.dispatchEvent(evt);
6808     });
6809 };
6810 d3.typeahead = function() {
6811     var event = d3.dispatch('accept'),
6812         autohighlight = false,
6813         data;
6814
6815     var typeahead = function(selection) {
6816         var container,
6817             hidden,
6818             idx = autohighlight ? 0 : -1;
6819
6820         function setup() {
6821             var rect = selection.node().getBoundingClientRect();
6822             container = d3.select(document.body)
6823                 .append('div').attr('class', 'typeahead')
6824                 .style({
6825                     position: 'absolute',
6826                     left: rect.left + 'px',
6827                     top: rect.bottom + 'px'
6828                 });
6829             selection
6830                 .on('keyup.typeahead', key);
6831             hidden = false;
6832         }
6833
6834         function hide() {
6835             container.remove();
6836             idx = autohighlight ? 0 : -1;
6837             hidden = true;
6838         }
6839
6840         function slowHide() {
6841             if (autohighlight) {
6842                 if (container.select('a.selected').node()) {
6843                     select(container.select('a.selected').datum());
6844                     event.accept();
6845                 }
6846             }
6847             window.setTimeout(hide, 150);
6848         }
6849
6850         selection
6851             .on('focus.typeahead', setup)
6852             .on('blur.typeahead', slowHide);
6853
6854         function key() {
6855            var len = container.selectAll('a').data().length;
6856            if (d3.event.keyCode === 40) {
6857                idx = Math.min(idx + 1, len - 1);
6858                return highlight();
6859            } else if (d3.event.keyCode === 38) {
6860                idx = Math.max(idx - 1, 0);
6861                return highlight();
6862            } else if (d3.event.keyCode === 13) {
6863                if (container.select('a.selected').node()) {
6864                    select(container.select('a.selected').datum());
6865                }
6866                event.accept();
6867                hide();
6868            } else {
6869                update();
6870            }
6871         }
6872
6873         function highlight() {
6874             container
6875                 .selectAll('a')
6876                 .classed('selected', function(d, i) { return i == idx; });
6877         }
6878
6879         function update() {
6880             if (hidden) setup();
6881
6882             data(selection, function(data) {
6883                 container.style('display', function() {
6884                     return data.length ? 'block' : 'none';
6885                 });
6886
6887                 var options = container
6888                     .selectAll('a')
6889                     .data(data, function(d) { return d.value; });
6890
6891                 options.enter()
6892                     .append('a')
6893                     .text(function(d) { return d.value; })
6894                     .attr('title', function(d) { return d.title; })
6895                     .on('click', select);
6896
6897                 options.exit().remove();
6898
6899                 options
6900                     .classed('selected', function(d, i) { return i == idx; });
6901             });
6902         }
6903
6904         function select(d) {
6905             selection
6906                 .property('value', d.value)
6907                 .trigger('change');
6908         }
6909
6910     };
6911
6912     typeahead.data = function(_) {
6913         if (!arguments.length) return data;
6914         data = _;
6915         return typeahead;
6916     };
6917
6918     typeahead.autohighlight = function(_) {
6919         if (!arguments.length) return autohighlight;
6920         autohighlight = _;
6921         return typeahead;
6922     };
6923
6924     return d3.rebind(typeahead, event, 'on');
6925 };
6926 // Tooltips and svg mask used to highlight certain features
6927 d3.curtain = function() {
6928
6929     var event = d3.dispatch(),
6930         surface,
6931         tooltip,
6932         darkness;
6933
6934     function curtain(selection) {
6935
6936         surface = selection.append('svg')
6937             .attr('id', 'curtain')
6938             .style({
6939                 'z-index': 1000,
6940                 'pointer-events': 'none',
6941                 'position': 'absolute',
6942                 'top': 0,
6943                 'left': 0
6944             });
6945
6946         darkness = surface.append('path')
6947             .attr({
6948                 x: 0,
6949                 y: 0,
6950                 'class': 'curtain-darkness'
6951             });
6952
6953         d3.select(window).on('resize.curtain', resize);
6954
6955         tooltip = selection.append('div')
6956             .attr('class', 'tooltip')
6957             .style('z-index', 1002);
6958
6959         tooltip.append('div').attr('class', 'tooltip-arrow');
6960         tooltip.append('div').attr('class', 'tooltip-inner');
6961
6962         resize();
6963
6964         function resize() {
6965             surface.attr({
6966                 width: window.innerWidth,
6967                 height: window.innerHeight
6968             });
6969             curtain.cut(darkness.datum());
6970         }
6971     }
6972
6973     curtain.reveal = function(box, text, tooltipclass, duration) {
6974         if (typeof box === 'string') box = d3.select(box).node();
6975         if (box.getBoundingClientRect) box = box.getBoundingClientRect();
6976
6977         curtain.cut(box, duration);
6978
6979         if (text) {
6980             // pseudo markdown bold text hack
6981             var parts = text.split('**');
6982             var html = parts[0] ? '<span>' + parts[0] + '</span>' : '';
6983             if (parts[1]) html += '<span class="bold">' + parts[1] + '</span>';
6984
6985             var dimensions = tooltip.classed('in', true)
6986                 .select('.tooltip-inner')
6987                     .html(html)
6988                     .dimensions();
6989
6990             var pos;
6991
6992             var w = window.innerWidth,
6993                 h = window.innerHeight;
6994
6995             if (box.top + box.height < Math.min(100, box.width + box.left)) {
6996                 side = 'bottom';
6997                 pos = [box.left + box.width / 2 - dimensions[0]/ 2, box.top + box.height];
6998
6999             } else if (box.left + box.width + 300 < window.innerWidth) {
7000                 side = 'right';
7001                 pos = [box.left + box.width, box.top + box.height / 2 - dimensions[1] / 2];
7002
7003             } else if (box.left > 300) {
7004                 side = 'left';
7005                 pos = [box.left - 200, box.top + box.height / 2 - dimensions[1] / 2];
7006             } else {
7007                 side = 'bottom';
7008                 pos = [box.left, box.top + box.height];
7009             }
7010
7011             pos = [
7012                 Math.min(Math.max(10, pos[0]), w - dimensions[0] - 10),
7013                 Math.min(Math.max(10, pos[1]), h - dimensions[1] - 10)
7014             ];
7015
7016
7017             if (duration !== 0 || !tooltip.classed(side)) tooltip.call(iD.ui.Toggle(true));
7018
7019             tooltip
7020                 .style('top', pos[1] + 'px')
7021                 .style('left', pos[0] + 'px')
7022                 .attr('class', 'curtain-tooltip tooltip in ' + side + ' ' + tooltipclass)
7023                 .select('.tooltip-inner')
7024                     .html(html);
7025
7026         } else {
7027             tooltip.call(iD.ui.Toggle(false));
7028         }
7029     };
7030
7031     curtain.cut = function(datum, duration) {
7032         darkness.datum(datum);
7033
7034         (duration === 0 ? darkness : darkness.transition().duration(duration || 600))
7035             .attr('d', function(d) {
7036                 var string = "M 0,0 L 0," + window.innerHeight + " L " +
7037                     window.innerWidth + "," + window.innerHeight + "L" +
7038                     window.innerWidth + ",0 Z";
7039
7040                 if (!d) return string;
7041                 return string + 'M' +
7042                     d.left + ',' + d.top + 'L' +
7043                     d.left + ',' + (d.top + d.height) + 'L' +
7044                     (d.left + d.width) + ',' + (d.top + d.height) + 'L' +
7045                     (d.left + d.width) + ',' + (d.top) + 'Z';
7046
7047             });
7048     };
7049
7050     curtain.remove = function() {
7051         surface.remove();
7052         tooltip.remove();
7053     };
7054
7055     return d3.rebind(curtain, event, 'on');
7056 };
7057 // Like selection.property('value', ...), but avoids no-op value sets,
7058 // which can result in layout/repaint thrashing in some situations.
7059 d3.selection.prototype.value = function(value) {
7060     function d3_selection_value(value) {
7061       function valueNull() {
7062         delete this.value;
7063       }
7064
7065       function valueConstant() {
7066         if (this.value !== value) this.value = value;
7067       }
7068
7069       function valueFunction() {
7070         var x = value.apply(this, arguments);
7071         if (x == null) delete this.value;
7072         else if (this.value !== x) this.value = x;
7073       }
7074
7075       return value == null
7076           ? valueNull : (typeof value === "function"
7077           ? valueFunction : valueConstant);
7078     }
7079
7080     if (!arguments.length) return this.property('value');
7081     return this.each(d3_selection_value(value));
7082 };
7083 // Copyright (c) 2006, 2008 Tony Garnock-Jones <tonyg@lshift.net>
7084 // Copyright (c) 2006, 2008 LShift Ltd. <query@lshift.net>
7085 //
7086 // Permission is hereby granted, free of charge, to any person
7087 // obtaining a copy of this software and associated documentation files
7088 // (the "Software"), to deal in the Software without restriction,
7089 // including without limitation the rights to use, copy, modify, merge,
7090 // publish, distribute, sublicense, and/or sell copies of the Software,
7091 // and to permit persons to whom the Software is furnished to do so,
7092 // subject to the following conditions:
7093 //
7094 // The above copyright notice and this permission notice shall be
7095 // included in all copies or substantial portions of the Software.
7096 //
7097 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
7098 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
7099 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
7100 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
7101 // BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7102 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
7103 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
7104 // SOFTWARE.
7105
7106 // source:  https://bitbucket.org/lshift/synchrotron/src
7107
7108 Diff3 = (function() {
7109     'use strict';
7110
7111     var diff3 = {
7112         longest_common_subsequence: function(file1, file2) {
7113             /* Text diff algorithm following Hunt and McIlroy 1976.
7114              * J. W. Hunt and M. D. McIlroy, An algorithm for differential file
7115              * comparison, Bell Telephone Laboratories CSTR #41 (1976)
7116              * http://www.cs.dartmouth.edu/~doug/
7117              *
7118              * Expects two arrays of strings.
7119              */
7120             var equivalenceClasses;
7121             var file2indices;
7122             var newCandidate;
7123             var candidates;
7124             var line;
7125             var c, i, j, jX, r, s;
7126
7127             equivalenceClasses = {};
7128             for (j = 0; j < file2.length; j++) {
7129                 line = file2[j];
7130                 if (equivalenceClasses[line]) {
7131                     equivalenceClasses[line].push(j);
7132                 } else {
7133                     equivalenceClasses[line] = [j];
7134                 }
7135             }
7136
7137             candidates = [{file1index: -1,
7138                            file2index: -1,
7139                            chain: null}];
7140
7141             for (i = 0; i < file1.length; i++) {
7142                 line = file1[i];
7143                 file2indices = equivalenceClasses[line] || [];
7144
7145                 r = 0;
7146                 c = candidates[0];
7147
7148                 for (jX = 0; jX < file2indices.length; jX++) {
7149                     j = file2indices[jX];
7150
7151                     for (s = 0; s < candidates.length; s++) {
7152                         if ((candidates[s].file2index < j) &&
7153                             ((s == candidates.length - 1) ||
7154                              (candidates[s + 1].file2index > j)))
7155                             break;
7156                     }
7157
7158                     if (s < candidates.length) {
7159                         newCandidate = {file1index: i,
7160                                         file2index: j,
7161                                         chain: candidates[s]};
7162                         if (r == candidates.length) {
7163                             candidates.push(c);
7164                         } else {
7165                             candidates[r] = c;
7166                         }
7167                         r = s + 1;
7168                         c = newCandidate;
7169                         if (r == candidates.length) {
7170                             break; // no point in examining further (j)s
7171                         }
7172                     }
7173                 }
7174
7175                 candidates[r] = c;
7176             }
7177
7178             // At this point, we know the LCS: it's in the reverse of the
7179             // linked-list through .chain of
7180             // candidates[candidates.length - 1].
7181
7182             return candidates[candidates.length - 1];
7183         },
7184
7185         diff_comm: function(file1, file2) {
7186             // We apply the LCS to build a "comm"-style picture of the
7187             // differences between file1 and file2.
7188
7189             var result = [];
7190             var tail1 = file1.length;
7191             var tail2 = file2.length;
7192             var common = {common: []};
7193
7194             function processCommon() {
7195                 if (common.common.length) {
7196                     common.common.reverse();
7197                     result.push(common);
7198                     common = {common: []};
7199                 }
7200             }
7201
7202             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7203                  candidate !== null;
7204                  candidate = candidate.chain)
7205             {
7206                 var different = {file1: [], file2: []};
7207
7208                 while (--tail1 > candidate.file1index) {
7209                     different.file1.push(file1[tail1]);
7210                 }
7211
7212                 while (--tail2 > candidate.file2index) {
7213                     different.file2.push(file2[tail2]);
7214                 }
7215
7216                 if (different.file1.length || different.file2.length) {
7217                     processCommon();
7218                     different.file1.reverse();
7219                     different.file2.reverse();
7220                     result.push(different);
7221                 }
7222
7223                 if (tail1 >= 0) {
7224                     common.common.push(file1[tail1]);
7225                 }
7226             }
7227
7228             processCommon();
7229
7230             result.reverse();
7231             return result;
7232         },
7233
7234         diff_patch: function(file1, file2) {
7235             // We apply the LCD to build a JSON representation of a
7236             // diff(1)-style patch.
7237
7238             var result = [];
7239             var tail1 = file1.length;
7240             var tail2 = file2.length;
7241
7242             function chunkDescription(file, offset, length) {
7243                 var chunk = [];
7244                 for (var i = 0; i < length; i++) {
7245                     chunk.push(file[offset + i]);
7246                 }
7247                 return {offset: offset,
7248                         length: length,
7249                         chunk: chunk};
7250             }
7251
7252             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7253                  candidate !== null;
7254                  candidate = candidate.chain)
7255             {
7256                 var mismatchLength1 = tail1 - candidate.file1index - 1;
7257                 var mismatchLength2 = tail2 - candidate.file2index - 1;
7258                 tail1 = candidate.file1index;
7259                 tail2 = candidate.file2index;
7260
7261                 if (mismatchLength1 || mismatchLength2) {
7262                     result.push({file1: chunkDescription(file1,
7263                                                          candidate.file1index + 1,
7264                                                          mismatchLength1),
7265                                  file2: chunkDescription(file2,
7266                                                          candidate.file2index + 1,
7267                                                          mismatchLength2)});
7268                 }
7269             }
7270
7271             result.reverse();
7272             return result;
7273         },
7274
7275         strip_patch: function(patch) {
7276         // Takes the output of Diff3.diff_patch(), and removes
7277         // information from it. It can still be used by patch(),
7278         // below, but can no longer be inverted.
7279         var newpatch = [];
7280         for (var i = 0; i < patch.length; i++) {
7281             var chunk = patch[i];
7282             newpatch.push({file1: {offset: chunk.file1.offset,
7283                        length: chunk.file1.length},
7284                    file2: {chunk: chunk.file2.chunk}});
7285         }
7286         return newpatch;
7287         },
7288
7289         invert_patch: function(patch) {
7290             // Takes the output of Diff3.diff_patch(), and inverts the
7291             // sense of it, so that it can be applied to file2 to give
7292             // file1 rather than the other way around.
7293
7294             for (var i = 0; i < patch.length; i++) {
7295                 var chunk = patch[i];
7296                 var tmp = chunk.file1;
7297                 chunk.file1 = chunk.file2;
7298                 chunk.file2 = tmp;
7299             }
7300         },
7301
7302         patch: function (file, patch) {
7303             // Applies a patch to a file.
7304             //
7305             // Given file1 and file2, Diff3.patch(file1,
7306             // Diff3.diff_patch(file1, file2)) should give file2.
7307
7308             var result = [];
7309             var commonOffset = 0;
7310
7311             function copyCommon(targetOffset) {
7312                 while (commonOffset < targetOffset) {
7313                     result.push(file[commonOffset]);
7314                     commonOffset++;
7315                 }
7316             }
7317
7318             for (var chunkIndex = 0; chunkIndex < patch.length; chunkIndex++) {
7319                 var chunk = patch[chunkIndex];
7320                 copyCommon(chunk.file1.offset);
7321                 for (var lineIndex = 0; lineIndex < chunk.file2.chunk.length; lineIndex++) {
7322                     result.push(chunk.file2.chunk[lineIndex]);
7323                 }
7324                 commonOffset += chunk.file1.length;
7325             }
7326
7327             copyCommon(file.length);
7328             return result;
7329         },
7330
7331         diff_indices: function(file1, file2) {
7332             // We apply the LCS to give a simple representation of the
7333             // offsets and lengths of mismatched chunks in the input
7334             // files. This is used by diff3_merge_indices below.
7335
7336             var result = [];
7337             var tail1 = file1.length;
7338             var tail2 = file2.length;
7339
7340             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7341                  candidate !== null;
7342                  candidate = candidate.chain)
7343             {
7344                 var mismatchLength1 = tail1 - candidate.file1index - 1;
7345                 var mismatchLength2 = tail2 - candidate.file2index - 1;
7346                 tail1 = candidate.file1index;
7347                 tail2 = candidate.file2index;
7348
7349                 if (mismatchLength1 || mismatchLength2) {
7350                     result.push({file1: [tail1 + 1, mismatchLength1],
7351                                  file2: [tail2 + 1, mismatchLength2]});
7352                 }
7353             }
7354
7355             result.reverse();
7356             return result;
7357         },
7358
7359         diff3_merge_indices: function (a, o, b) {
7360             // Given three files, A, O, and B, where both A and B are
7361             // independently derived from O, returns a fairly complicated
7362             // internal representation of merge decisions it's taken. The
7363             // interested reader may wish to consult
7364             //
7365             // Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce. "A
7366             // Formal Investigation of Diff3." In Arvind and Prasad,
7367             // editors, Foundations of Software Technology and Theoretical
7368             // Computer Science (FSTTCS), December 2007.
7369             //
7370             // (http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf)
7371             var i;
7372
7373             var m1 = Diff3.diff_indices(o, a);
7374             var m2 = Diff3.diff_indices(o, b);
7375
7376             var hunks = [];
7377             function addHunk(h, side) {
7378                 hunks.push([h.file1[0], side, h.file1[1], h.file2[0], h.file2[1]]);
7379             }
7380             for (i = 0; i < m1.length; i++) { addHunk(m1[i], 0); }
7381             for (i = 0; i < m2.length; i++) { addHunk(m2[i], 2); }
7382             hunks.sort();
7383
7384             var result = [];
7385             var commonOffset = 0;
7386             function copyCommon(targetOffset) {
7387                 if (targetOffset > commonOffset) {
7388                     result.push([1, commonOffset, targetOffset - commonOffset]);
7389                     commonOffset = targetOffset;
7390                 }
7391             }
7392
7393             for (var hunkIndex = 0; hunkIndex < hunks.length; hunkIndex++) {
7394                 var firstHunkIndex = hunkIndex;
7395                 var hunk = hunks[hunkIndex];
7396                 var regionLhs = hunk[0];
7397                 var regionRhs = regionLhs + hunk[2];
7398                 while (hunkIndex < hunks.length - 1) {
7399                     var maybeOverlapping = hunks[hunkIndex + 1];
7400                     var maybeLhs = maybeOverlapping[0];
7401                     if (maybeLhs > regionRhs) break;
7402                     regionRhs = maybeLhs + maybeOverlapping[2];
7403                     hunkIndex++;
7404                 }
7405
7406                 copyCommon(regionLhs);
7407                 if (firstHunkIndex == hunkIndex) {
7408             // The "overlap" was only one hunk long, meaning that
7409             // there's no conflict here. Either a and o were the
7410             // same, or b and o were the same.
7411                     if (hunk[4] > 0) {
7412                         result.push([hunk[1], hunk[3], hunk[4]]);
7413                     }
7414                 } else {
7415             // A proper conflict. Determine the extents of the
7416             // regions involved from a, o and b. Effectively merge
7417             // all the hunks on the left into one giant hunk, and
7418             // do the same for the right; then, correct for skew
7419             // in the regions of o that each side changed, and
7420             // report appropriate spans for the three sides.
7421             var regions = {
7422                 0: [a.length, -1, o.length, -1],
7423                 2: [b.length, -1, o.length, -1]
7424             };
7425                     for (i = firstHunkIndex; i <= hunkIndex; i++) {
7426                 hunk = hunks[i];
7427                         var side = hunk[1];
7428                 var r = regions[side];
7429                 var oLhs = hunk[0];
7430                 var oRhs = oLhs + hunk[2];
7431                         var abLhs = hunk[3];
7432                         var abRhs = abLhs + hunk[4];
7433                 r[0] = Math.min(abLhs, r[0]);
7434                 r[1] = Math.max(abRhs, r[1]);
7435                 r[2] = Math.min(oLhs, r[2]);
7436                 r[3] = Math.max(oRhs, r[3]);
7437                     }
7438             var aLhs = regions[0][0] + (regionLhs - regions[0][2]);
7439             var aRhs = regions[0][1] + (regionRhs - regions[0][3]);
7440             var bLhs = regions[2][0] + (regionLhs - regions[2][2]);
7441             var bRhs = regions[2][1] + (regionRhs - regions[2][3]);
7442                     result.push([-1,
7443                      aLhs,      aRhs      - aLhs,
7444                      regionLhs, regionRhs - regionLhs,
7445                      bLhs,      bRhs      - bLhs]);
7446                 }
7447                 commonOffset = regionRhs;
7448             }
7449
7450             copyCommon(o.length);
7451             return result;
7452         },
7453
7454         diff3_merge: function (a, o, b, excludeFalseConflicts) {
7455             // Applies the output of Diff3.diff3_merge_indices to actually
7456             // construct the merged file; the returned result alternates
7457             // between "ok" and "conflict" blocks.
7458
7459             var result = [];
7460             var files = [a, o, b];
7461             var indices = Diff3.diff3_merge_indices(a, o, b);
7462
7463             var okLines = [];
7464             function flushOk() {
7465                 if (okLines.length) {
7466                     result.push({ok: okLines});
7467                 }
7468                 okLines = [];
7469             }
7470             function pushOk(xs) {
7471                 for (var j = 0; j < xs.length; j++) {
7472                     okLines.push(xs[j]);
7473                 }
7474             }
7475
7476             function isTrueConflict(rec) {
7477                 if (rec[2] != rec[6]) return true;
7478                 var aoff = rec[1];
7479                 var boff = rec[5];
7480                 for (var j = 0; j < rec[2]; j++) {
7481                     if (a[j + aoff] != b[j + boff]) return true;
7482                 }
7483                 return false;
7484             }
7485
7486             for (var i = 0; i < indices.length; i++) {
7487                 var x = indices[i];
7488                 var side = x[0];
7489                 if (side == -1) {
7490                     if (excludeFalseConflicts && !isTrueConflict(x)) {
7491                         pushOk(files[0].slice(x[1], x[1] + x[2]));
7492                     } else {
7493                         flushOk();
7494                         result.push({conflict: {a: a.slice(x[1], x[1] + x[2]),
7495                                                 aIndex: x[1],
7496                                                 o: o.slice(x[3], x[3] + x[4]),
7497                                                 oIndex: x[3],
7498                                                 b: b.slice(x[5], x[5] + x[6]),
7499                                                 bIndex: x[5]}});
7500                     }
7501                 } else {
7502                     pushOk(files[side].slice(x[1], x[1] + x[2]));
7503                 }
7504             }
7505
7506             flushOk();
7507             return result;
7508         }
7509     };
7510     return diff3;
7511 })();
7512
7513 if (typeof module !== 'undefined') module.exports = Diff3;
7514 var JXON = new (function () {
7515   var
7516     sValueProp = "keyValue", sAttributesProp = "keyAttributes", sAttrPref = "@", /* you can customize these values */
7517     aCache = [], rIsNull = /^\s*$/, rIsBool = /^(?:true|false)$/i;
7518
7519   function parseText (sValue) {
7520     if (rIsNull.test(sValue)) { return null; }
7521     if (rIsBool.test(sValue)) { return sValue.toLowerCase() === "true"; }
7522     if (isFinite(sValue)) { return parseFloat(sValue); }
7523     if (isFinite(Date.parse(sValue))) { return new Date(sValue); }
7524     return sValue;
7525   }
7526
7527   function EmptyTree () { }
7528   EmptyTree.prototype.toString = function () { return "null"; };
7529   EmptyTree.prototype.valueOf = function () { return null; };
7530
7531   function objectify (vValue) {
7532     return vValue === null ? new EmptyTree() : vValue instanceof Object ? vValue : new vValue.constructor(vValue);
7533   }
7534
7535   function createObjTree (oParentNode, nVerb, bFreeze, bNesteAttr) {
7536     var
7537       nLevelStart = aCache.length, bChildren = oParentNode.hasChildNodes(),
7538       bAttributes = oParentNode.hasAttributes(), bHighVerb = Boolean(nVerb & 2);
7539
7540     var
7541       sProp, vContent, nLength = 0, sCollectedTxt = "",
7542       vResult = bHighVerb ? {} : /* put here the default value for empty nodes: */ true;
7543
7544     if (bChildren) {
7545       for (var oNode, nItem = 0; nItem < oParentNode.childNodes.length; nItem++) {
7546         oNode = oParentNode.childNodes.item(nItem);
7547         if (oNode.nodeType === 4) { sCollectedTxt += oNode.nodeValue; } /* nodeType is "CDATASection" (4) */
7548         else if (oNode.nodeType === 3) { sCollectedTxt += oNode.nodeValue.trim(); } /* nodeType is "Text" (3) */
7549         else if (oNode.nodeType === 1 && !oNode.prefix) { aCache.push(oNode); } /* nodeType is "Element" (1) */
7550       }
7551     }
7552
7553     var nLevelEnd = aCache.length, vBuiltVal = parseText(sCollectedTxt);
7554
7555     if (!bHighVerb && (bChildren || bAttributes)) { vResult = nVerb === 0 ? objectify(vBuiltVal) : {}; }
7556
7557     for (var nElId = nLevelStart; nElId < nLevelEnd; nElId++) {
7558       sProp = aCache[nElId].nodeName.toLowerCase();
7559       vContent = createObjTree(aCache[nElId], nVerb, bFreeze, bNesteAttr);
7560       if (vResult.hasOwnProperty(sProp)) {
7561         if (vResult[sProp].constructor !== Array) { vResult[sProp] = [vResult[sProp]]; }
7562         vResult[sProp].push(vContent);
7563       } else {
7564         vResult[sProp] = vContent;
7565         nLength++;
7566       }
7567     }
7568
7569     if (bAttributes) {
7570       var
7571         nAttrLen = oParentNode.attributes.length,
7572         sAPrefix = bNesteAttr ? "" : sAttrPref, oAttrParent = bNesteAttr ? {} : vResult;
7573
7574       for (var oAttrib, nAttrib = 0; nAttrib < nAttrLen; nLength++, nAttrib++) {
7575         oAttrib = oParentNode.attributes.item(nAttrib);
7576         oAttrParent[sAPrefix + oAttrib.name.toLowerCase()] = parseText(oAttrib.value.trim());
7577       }
7578
7579       if (bNesteAttr) {
7580         if (bFreeze) { Object.freeze(oAttrParent); }
7581         vResult[sAttributesProp] = oAttrParent;
7582         nLength -= nAttrLen - 1;
7583       }
7584     }
7585
7586     if (nVerb === 3 || (nVerb === 2 || nVerb === 1 && nLength > 0) && sCollectedTxt) {
7587       vResult[sValueProp] = vBuiltVal;
7588     } else if (!bHighVerb && nLength === 0 && sCollectedTxt) {
7589       vResult = vBuiltVal;
7590     }
7591
7592     if (bFreeze && (bHighVerb || nLength > 0)) { Object.freeze(vResult); }
7593
7594     aCache.length = nLevelStart;
7595
7596     return vResult;
7597   }
7598
7599   function loadObjTree (oXMLDoc, oParentEl, oParentObj) {
7600     var vValue, oChild;
7601
7602     if (oParentObj instanceof String || oParentObj instanceof Number || oParentObj instanceof Boolean) {
7603       oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toString())); /* verbosity level is 0 */
7604     } else if (oParentObj.constructor === Date) {
7605       oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toGMTString()));    
7606     }
7607
7608     for (var sName in oParentObj) {
7609       vValue = oParentObj[sName];
7610       if (isFinite(sName) || vValue instanceof Function) { continue; } /* verbosity level is 0 */
7611       if (sName === sValueProp) {
7612         if (vValue !== null && vValue !== true) { oParentEl.appendChild(oXMLDoc.createTextNode(vValue.constructor === Date ? vValue.toGMTString() : String(vValue))); }
7613       } else if (sName === sAttributesProp) { /* verbosity level is 3 */
7614         for (var sAttrib in vValue) { oParentEl.setAttribute(sAttrib, vValue[sAttrib]); }
7615       } else if (sName.charAt(0) === sAttrPref) {
7616         oParentEl.setAttribute(sName.slice(1), vValue);
7617       } else if (vValue.constructor === Array) {
7618         for (var nItem = 0; nItem < vValue.length; nItem++) {
7619           oChild = oXMLDoc.createElement(sName);
7620           loadObjTree(oXMLDoc, oChild, vValue[nItem]);
7621           oParentEl.appendChild(oChild);
7622         }
7623       } else {
7624         oChild = oXMLDoc.createElement(sName);
7625         if (vValue instanceof Object) {
7626           loadObjTree(oXMLDoc, oChild, vValue);
7627         } else if (vValue !== null && vValue !== true) {
7628           oChild.appendChild(oXMLDoc.createTextNode(vValue.toString()));
7629         }
7630         oParentEl.appendChild(oChild);
7631      }
7632    }
7633   }
7634
7635   this.build = function (oXMLParent, nVerbosity /* optional */, bFreeze /* optional */, bNesteAttributes /* optional */) {
7636     var _nVerb = arguments.length > 1 && typeof nVerbosity === "number" ? nVerbosity & 3 : /* put here the default verbosity level: */ 1;
7637     return createObjTree(oXMLParent, _nVerb, bFreeze || false, arguments.length > 3 ? bNesteAttributes : _nVerb === 3);    
7638   };
7639
7640   this.unbuild = function (oObjTree) {    
7641     var oNewDoc = document.implementation.createDocument("", "", null);
7642     loadObjTree(oNewDoc, oNewDoc, oObjTree);
7643     return oNewDoc;
7644   };
7645
7646   this.stringify = function (oObjTree) {
7647     return (new XMLSerializer()).serializeToString(JXON.unbuild(oObjTree));
7648   };
7649 })();
7650 // var myObject = JXON.build(doc);
7651 // we got our javascript object! try: alert(JSON.stringify(myObject));
7652
7653 // var newDoc = JXON.unbuild(myObject);
7654 // we got our Document instance! try: alert((new XMLSerializer()).serializeToString(newDoc));
7655 /**
7656  * @license
7657  * lodash 3.9.3 (Custom Build) <https://lodash.com/>
7658  * Build: `lodash --development --output js/lib/lodash.js include="any,assign,bind,chunk,clone,compact,contains,debounce,difference,each,every,extend,filter,find,first,forEach,forOwn,groupBy,indexOf,intersection,isEmpty,isEqual,isFunction,keys,last,map,omit,pairs,pluck,reject,some,throttle,union,uniq,unique,values,without,flatten,value,chain,cloneDeep,merge,pick,reduce" exports="global,node"`
7659  * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
7660  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
7661  * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7662  * Available under MIT license <https://lodash.com/license>
7663  */
7664 ;(function() {
7665
7666   /** Used as a safe reference for `undefined` in pre-ES5 environments. */
7667   var undefined;
7668
7669   /** Used as the semantic version number. */
7670   var VERSION = '3.9.3';
7671
7672   /** Used to compose bitmasks for wrapper metadata. */
7673   var BIND_FLAG = 1,
7674       BIND_KEY_FLAG = 2,
7675       CURRY_BOUND_FLAG = 4,
7676       CURRY_FLAG = 8,
7677       CURRY_RIGHT_FLAG = 16,
7678       PARTIAL_FLAG = 32,
7679       PARTIAL_RIGHT_FLAG = 64,
7680       ARY_FLAG = 128,
7681       REARG_FLAG = 256;
7682
7683   /** Used to detect when a function becomes hot. */
7684   var HOT_COUNT = 150,
7685       HOT_SPAN = 16;
7686
7687   /** Used to indicate the type of lazy iteratees. */
7688   var LAZY_DROP_WHILE_FLAG = 0,
7689       LAZY_FILTER_FLAG = 1,
7690       LAZY_MAP_FLAG = 2;
7691
7692   /** Used as the `TypeError` message for "Functions" methods. */
7693   var FUNC_ERROR_TEXT = 'Expected a function';
7694
7695   /** Used as the internal argument placeholder. */
7696   var PLACEHOLDER = '__lodash_placeholder__';
7697
7698   /** `Object#toString` result references. */
7699   var argsTag = '[object Arguments]',
7700       arrayTag = '[object Array]',
7701       boolTag = '[object Boolean]',
7702       dateTag = '[object Date]',
7703       errorTag = '[object Error]',
7704       funcTag = '[object Function]',
7705       mapTag = '[object Map]',
7706       numberTag = '[object Number]',
7707       objectTag = '[object Object]',
7708       regexpTag = '[object RegExp]',
7709       setTag = '[object Set]',
7710       stringTag = '[object String]',
7711       weakMapTag = '[object WeakMap]';
7712
7713   var arrayBufferTag = '[object ArrayBuffer]',
7714       float32Tag = '[object Float32Array]',
7715       float64Tag = '[object Float64Array]',
7716       int8Tag = '[object Int8Array]',
7717       int16Tag = '[object Int16Array]',
7718       int32Tag = '[object Int32Array]',
7719       uint8Tag = '[object Uint8Array]',
7720       uint8ClampedTag = '[object Uint8ClampedArray]',
7721       uint16Tag = '[object Uint16Array]',
7722       uint32Tag = '[object Uint32Array]';
7723
7724   /** Used to match property names within property paths. */
7725   var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
7726       reIsPlainProp = /^\w*$/,
7727       rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
7728
7729   /**
7730    * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
7731    * In addition to special characters the forward slash is escaped to allow for
7732    * easier `eval` use and `Function` compilation.
7733    */
7734   var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
7735       reHasRegExpChars = RegExp(reRegExpChars.source);
7736
7737   /** Used to match backslashes in property paths. */
7738   var reEscapeChar = /\\(\\)?/g;
7739
7740   /** Used to match `RegExp` flags from their coerced string values. */
7741   var reFlags = /\w*$/;
7742
7743   /** Used to detect host constructors (Safari > 5). */
7744   var reIsHostCtor = /^\[object .+?Constructor\]$/;
7745
7746   /** Used to detect unsigned integer values. */
7747   var reIsUint = /^\d+$/;
7748
7749   /** Used to fix the JScript `[[DontEnum]]` bug. */
7750   var shadowProps = [
7751     'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',
7752     'toLocaleString', 'toString', 'valueOf'
7753   ];
7754
7755   /** Used to identify `toStringTag` values of typed arrays. */
7756   var typedArrayTags = {};
7757   typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
7758   typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
7759   typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
7760   typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
7761   typedArrayTags[uint32Tag] = true;
7762   typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
7763   typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
7764   typedArrayTags[dateTag] = typedArrayTags[errorTag] =
7765   typedArrayTags[funcTag] = typedArrayTags[mapTag] =
7766   typedArrayTags[numberTag] = typedArrayTags[objectTag] =
7767   typedArrayTags[regexpTag] = typedArrayTags[setTag] =
7768   typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
7769
7770   /** Used to identify `toStringTag` values supported by `_.clone`. */
7771   var cloneableTags = {};
7772   cloneableTags[argsTag] = cloneableTags[arrayTag] =
7773   cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =
7774   cloneableTags[dateTag] = cloneableTags[float32Tag] =
7775   cloneableTags[float64Tag] = cloneableTags[int8Tag] =
7776   cloneableTags[int16Tag] = cloneableTags[int32Tag] =
7777   cloneableTags[numberTag] = cloneableTags[objectTag] =
7778   cloneableTags[regexpTag] = cloneableTags[stringTag] =
7779   cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
7780   cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
7781   cloneableTags[errorTag] = cloneableTags[funcTag] =
7782   cloneableTags[mapTag] = cloneableTags[setTag] =
7783   cloneableTags[weakMapTag] = false;
7784
7785   /** Used as an internal `_.debounce` options object by `_.throttle`. */
7786   var debounceOptions = {
7787     'leading': false,
7788     'maxWait': 0,
7789     'trailing': false
7790   };
7791
7792   /** Used to determine if values are of the language type `Object`. */
7793   var objectTypes = {
7794     'function': true,
7795     'object': true
7796   };
7797
7798   /** Detect free variable `exports`. */
7799   var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
7800
7801   /** Detect free variable `module`. */
7802   var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
7803
7804   /** Detect free variable `global` from Node.js. */
7805   var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;
7806
7807   /** Detect free variable `self`. */
7808   var freeSelf = objectTypes[typeof self] && self && self.Object && self;
7809
7810   /** Detect free variable `window`. */
7811   var freeWindow = objectTypes[typeof window] && window && window.Object && window;
7812
7813   /** Detect the popular CommonJS extension `module.exports`. */
7814   var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;
7815
7816   /**
7817    * Used as a reference to the global object.
7818    *
7819    * The `this` value is used if it's the global object to avoid Greasemonkey's
7820    * restricted `window` object, otherwise the `window` object is used.
7821    */
7822   var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;
7823
7824   /*--------------------------------------------------------------------------*/
7825
7826   /**
7827    * The base implementation of `_.findIndex` and `_.findLastIndex` without
7828    * support for callback shorthands and `this` binding.
7829    *
7830    * @private
7831    * @param {Array} array The array to search.
7832    * @param {Function} predicate The function invoked per iteration.
7833    * @param {boolean} [fromRight] Specify iterating from right to left.
7834    * @returns {number} Returns the index of the matched value, else `-1`.
7835    */
7836   function baseFindIndex(array, predicate, fromRight) {
7837     var length = array.length,
7838         index = fromRight ? length : -1;
7839
7840     while ((fromRight ? index-- : ++index < length)) {
7841       if (predicate(array[index], index, array)) {
7842         return index;
7843       }
7844     }
7845     return -1;
7846   }
7847
7848   /**
7849    * The base implementation of `_.indexOf` without support for binary searches.
7850    *
7851    * @private
7852    * @param {Array} array The array to search.
7853    * @param {*} value The value to search for.
7854    * @param {number} fromIndex The index to search from.
7855    * @returns {number} Returns the index of the matched value, else `-1`.
7856    */
7857   function baseIndexOf(array, value, fromIndex) {
7858     if (value !== value) {
7859       return indexOfNaN(array, fromIndex);
7860     }
7861     var index = fromIndex - 1,
7862         length = array.length;
7863
7864     while (++index < length) {
7865       if (array[index] === value) {
7866         return index;
7867       }
7868     }
7869     return -1;
7870   }
7871
7872   /**
7873    * The base implementation of `_.isFunction` without support for environments
7874    * with incorrect `typeof` results.
7875    *
7876    * @private
7877    * @param {*} value The value to check.
7878    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
7879    */
7880   function baseIsFunction(value) {
7881     // Avoid a Chakra JIT bug in compatibility modes of IE 11.
7882     // See https://github.com/jashkenas/underscore/issues/1621 for more details.
7883     return typeof value == 'function' || false;
7884   }
7885
7886   /**
7887    * Converts `value` to a string if it's not one. An empty string is returned
7888    * for `null` or `undefined` values.
7889    *
7890    * @private
7891    * @param {*} value The value to process.
7892    * @returns {string} Returns the string.
7893    */
7894   function baseToString(value) {
7895     if (typeof value == 'string') {
7896       return value;
7897     }
7898     return value == null ? '' : (value + '');
7899   }
7900
7901   /**
7902    * Gets the index at which the first occurrence of `NaN` is found in `array`.
7903    *
7904    * @private
7905    * @param {Array} array The array to search.
7906    * @param {number} fromIndex The index to search from.
7907    * @param {boolean} [fromRight] Specify iterating from right to left.
7908    * @returns {number} Returns the index of the matched `NaN`, else `-1`.
7909    */
7910   function indexOfNaN(array, fromIndex, fromRight) {
7911     var length = array.length,
7912         index = fromIndex + (fromRight ? 0 : -1);
7913
7914     while ((fromRight ? index-- : ++index < length)) {
7915       var other = array[index];
7916       if (other !== other) {
7917         return index;
7918       }
7919     }
7920     return -1;
7921   }
7922
7923   /**
7924    * Checks if `value` is a host object in IE < 9.
7925    *
7926    * @private
7927    * @param {*} value The value to check.
7928    * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
7929    */
7930   var isHostObject = (function() {
7931     try {
7932       Object({ 'toString': 0 } + '');
7933     } catch(e) {
7934       return function() { return false; };
7935     }
7936     return function(value) {
7937       // IE < 9 presents many host objects as `Object` objects that can coerce
7938       // to strings despite having improperly defined `toString` methods.
7939       return typeof value.toString != 'function' && typeof (value + '') == 'string';
7940     };
7941   }());
7942
7943   /**
7944    * Checks if `value` is object-like.
7945    *
7946    * @private
7947    * @param {*} value The value to check.
7948    * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
7949    */
7950   function isObjectLike(value) {
7951     return !!value && typeof value == 'object';
7952   }
7953
7954   /**
7955    * Replaces all `placeholder` elements in `array` with an internal placeholder
7956    * and returns an array of their indexes.
7957    *
7958    * @private
7959    * @param {Array} array The array to modify.
7960    * @param {*} placeholder The placeholder to replace.
7961    * @returns {Array} Returns the new array of placeholder indexes.
7962    */
7963   function replaceHolders(array, placeholder) {
7964     var index = -1,
7965         length = array.length,
7966         resIndex = -1,
7967         result = [];
7968
7969     while (++index < length) {
7970       if (array[index] === placeholder) {
7971         array[index] = PLACEHOLDER;
7972         result[++resIndex] = index;
7973       }
7974     }
7975     return result;
7976   }
7977
7978   /**
7979    * An implementation of `_.uniq` optimized for sorted arrays without support
7980    * for callback shorthands and `this` binding.
7981    *
7982    * @private
7983    * @param {Array} array The array to inspect.
7984    * @param {Function} [iteratee] The function invoked per iteration.
7985    * @returns {Array} Returns the new duplicate-value-free array.
7986    */
7987   function sortedUniq(array, iteratee) {
7988     var seen,
7989         index = -1,
7990         length = array.length,
7991         resIndex = -1,
7992         result = [];
7993
7994     while (++index < length) {
7995       var value = array[index],
7996           computed = iteratee ? iteratee(value, index, array) : value;
7997
7998       if (!index || seen !== computed) {
7999         seen = computed;
8000         result[++resIndex] = value;
8001       }
8002     }
8003     return result;
8004   }
8005
8006   /*--------------------------------------------------------------------------*/
8007
8008   /** Used for native method references. */
8009   var arrayProto = Array.prototype,
8010       errorProto = Error.prototype,
8011       objectProto = Object.prototype,
8012       stringProto = String.prototype;
8013
8014   /** Used to resolve the decompiled source of functions. */
8015   var fnToString = Function.prototype.toString;
8016
8017   /** Used to check objects for own properties. */
8018   var hasOwnProperty = objectProto.hasOwnProperty;
8019
8020   /**
8021    * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
8022    * of values.
8023    */
8024   var objToString = objectProto.toString;
8025
8026   /** Used to detect if a method is native. */
8027   var reIsNative = RegExp('^' +
8028     escapeRegExp(fnToString.call(hasOwnProperty))
8029     .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
8030   );
8031
8032   /** Native method references. */
8033   var ArrayBuffer = getNative(root, 'ArrayBuffer'),
8034       bufferSlice = getNative(ArrayBuffer && new ArrayBuffer(0), 'slice'),
8035       ceil = Math.ceil,
8036       floor = Math.floor,
8037       getPrototypeOf = getNative(Object, 'getPrototypeOf'),
8038       push = arrayProto.push,
8039       propertyIsEnumerable = objectProto.propertyIsEnumerable,
8040       Set = getNative(root, 'Set'),
8041       splice = arrayProto.splice,
8042       Uint8Array = getNative(root, 'Uint8Array'),
8043       WeakMap = getNative(root, 'WeakMap');
8044
8045   /** Used to clone array buffers. */
8046   var Float64Array = (function() {
8047     // Safari 5 errors when using an array buffer to initialize a typed array
8048     // where the array buffer's `byteLength` is not a multiple of the typed
8049     // array's `BYTES_PER_ELEMENT`.
8050     try {
8051       var func = getNative(root, 'Float64Array'),
8052           result = new func(new ArrayBuffer(10), 0, 1) && func;
8053     } catch(e) {}
8054     return result || null;
8055   }());
8056
8057   /* Native method references for those with the same name as other `lodash` methods. */
8058   var nativeCreate = getNative(Object, 'create'),
8059       nativeIsArray = getNative(Array, 'isArray'),
8060       nativeKeys = getNative(Object, 'keys'),
8061       nativeMax = Math.max,
8062       nativeMin = Math.min,
8063       nativeNow = getNative(Date, 'now');
8064
8065   /** Used as references for `-Infinity` and `Infinity`. */
8066   var POSITIVE_INFINITY = Number.POSITIVE_INFINITY;
8067
8068   /** Used as references for the maximum length and index of an array. */
8069   var MAX_ARRAY_LENGTH = 4294967295,
8070       MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
8071       HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
8072
8073   /** Used as the size, in bytes, of each `Float64Array` element. */
8074   var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;
8075
8076   /**
8077    * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
8078    * of an array-like value.
8079    */
8080   var MAX_SAFE_INTEGER = 9007199254740991;
8081
8082   /** Used to store function metadata. */
8083   var metaMap = WeakMap && new WeakMap;
8084
8085   /** Used to lookup unminified function names. */
8086   var realNames = {};
8087
8088   /** Used to lookup a type array constructors by `toStringTag`. */
8089   var ctorByTag = {};
8090   ctorByTag[float32Tag] = root.Float32Array;
8091   ctorByTag[float64Tag] = root.Float64Array;
8092   ctorByTag[int8Tag] = root.Int8Array;
8093   ctorByTag[int16Tag] = root.Int16Array;
8094   ctorByTag[int32Tag] = root.Int32Array;
8095   ctorByTag[uint8Tag] = root.Uint8Array;
8096   ctorByTag[uint8ClampedTag] = root.Uint8ClampedArray;
8097   ctorByTag[uint16Tag] = root.Uint16Array;
8098   ctorByTag[uint32Tag] = root.Uint32Array;
8099
8100   /** Used to avoid iterating over non-enumerable properties in IE < 9. */
8101   var nonEnumProps = {};
8102   nonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };
8103   nonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };
8104   nonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };
8105   nonEnumProps[objectTag] = { 'constructor': true };
8106
8107   arrayEach(shadowProps, function(key) {
8108     for (var tag in nonEnumProps) {
8109       if (hasOwnProperty.call(nonEnumProps, tag)) {
8110         var props = nonEnumProps[tag];
8111         props[key] = hasOwnProperty.call(props, key);
8112       }
8113     }
8114   });
8115
8116   /*------------------------------------------------------------------------*/
8117
8118   /**
8119    * Creates a `lodash` object which wraps `value` to enable implicit chaining.
8120    * Methods that operate on and return arrays, collections, and functions can
8121    * be chained together. Methods that return a boolean or single value will
8122    * automatically end the chain returning the unwrapped value. Explicit chaining
8123    * may be enabled using `_.chain`. The execution of chained methods is lazy,
8124    * that is, execution is deferred until `_#value` is implicitly or explicitly
8125    * called.
8126    *
8127    * Lazy evaluation allows several methods to support shortcut fusion. Shortcut
8128    * fusion is an optimization that merges iteratees to avoid creating intermediate
8129    * arrays and reduce the number of iteratee executions.
8130    *
8131    * Chaining is supported in custom builds as long as the `_#value` method is
8132    * directly or indirectly included in the build.
8133    *
8134    * In addition to lodash methods, wrappers have `Array` and `String` methods.
8135    *
8136    * The wrapper `Array` methods are:
8137    * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,
8138    * `splice`, and `unshift`
8139    *
8140    * The wrapper `String` methods are:
8141    * `replace` and `split`
8142    *
8143    * The wrapper methods that support shortcut fusion are:
8144    * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
8145    * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
8146    * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,
8147    * and `where`
8148    *
8149    * The chainable wrapper methods are:
8150    * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
8151    * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
8152    * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,
8153    * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`,
8154    * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
8155    * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
8156    * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
8157    * `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
8158    * `memoize`, `merge`, `method`, `methodOf`, `mixin`, `negate`, `omit`, `once`,
8159    * `pairs`, `partial`, `partialRight`, `partition`, `pick`, `plant`, `pluck`,
8160    * `property`, `propertyOf`, `pull`, `pullAt`, `push`, `range`, `rearg`,
8161    * `reject`, `remove`, `rest`, `restParam`, `reverse`, `set`, `shuffle`,
8162    * `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, `spread`,
8163    * `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
8164    * `thru`, `times`, `toArray`, `toPlainObject`, `transform`, `union`, `uniq`,
8165    * `unshift`, `unzip`, `unzipWith`, `values`, `valuesIn`, `where`, `without`,
8166    * `wrap`, `xor`, `zip`, `zipObject`, `zipWith`
8167    *
8168    * The wrapper methods that are **not** chainable by default are:
8169    * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,
8170    * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
8171    * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `get`,
8172    * `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, `inRange`, `isArguments`,
8173    * `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`,
8174    * `isFinite` `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
8175    * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
8176    * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `lt`, `lte`,
8177    * `max`, `min`, `noConflict`, `noop`, `now`, `pad`, `padLeft`, `padRight`,
8178    * `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`,
8179    * `runInContext`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
8180    * `sortedLastIndex`, `startCase`, `startsWith`, `sum`, `template`, `trim`,
8181    * `trimLeft`, `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words`
8182    *
8183    * The wrapper method `sample` will return a wrapped value when `n` is provided,
8184    * otherwise an unwrapped value is returned.
8185    *
8186    * @name _
8187    * @constructor
8188    * @category Chain
8189    * @param {*} value The value to wrap in a `lodash` instance.
8190    * @returns {Object} Returns the new `lodash` wrapper instance.
8191    * @example
8192    *
8193    * var wrapped = _([1, 2, 3]);
8194    *
8195    * // returns an unwrapped value
8196    * wrapped.reduce(function(total, n) {
8197    *   return total + n;
8198    * });
8199    * // => 6
8200    *
8201    * // returns a wrapped value
8202    * var squares = wrapped.map(function(n) {
8203    *   return n * n;
8204    * });
8205    *
8206    * _.isArray(squares);
8207    * // => false
8208    *
8209    * _.isArray(squares.value());
8210    * // => true
8211    */
8212   function lodash(value) {
8213     if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
8214       if (value instanceof LodashWrapper) {
8215         return value;
8216       }
8217       if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {
8218         return wrapperClone(value);
8219       }
8220     }
8221     return new LodashWrapper(value);
8222   }
8223
8224   /**
8225    * The function whose prototype all chaining wrappers inherit from.
8226    *
8227    * @private
8228    */
8229   function baseLodash() {
8230     // No operation performed.
8231   }
8232
8233   /**
8234    * The base constructor for creating `lodash` wrapper objects.
8235    *
8236    * @private
8237    * @param {*} value The value to wrap.
8238    * @param {boolean} [chainAll] Enable chaining for all wrapper methods.
8239    * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.
8240    */
8241   function LodashWrapper(value, chainAll, actions) {
8242     this.__wrapped__ = value;
8243     this.__actions__ = actions || [];
8244     this.__chain__ = !!chainAll;
8245   }
8246
8247   /**
8248    * An object environment feature flags.
8249    *
8250    * @static
8251    * @memberOf _
8252    * @type Object
8253    */
8254   var support = lodash.support = {};
8255
8256   (function(x) {
8257     var Ctor = function() { this.x = x; },
8258         object = { '0': x, 'length': x },
8259         props = [];
8260
8261     Ctor.prototype = { 'valueOf': x, 'y': x };
8262     for (var key in new Ctor) { props.push(key); }
8263
8264     /**
8265      * Detect if the `toStringTag` of `arguments` objects is resolvable
8266      * (all but Firefox < 4, IE < 9).
8267      *
8268      * @memberOf _.support
8269      * @type boolean
8270      */
8271     support.argsTag = objToString.call(arguments) == argsTag;
8272
8273     /**
8274      * Detect if `name` or `message` properties of `Error.prototype` are
8275      * enumerable by default (IE < 9, Safari < 5.1).
8276      *
8277      * @memberOf _.support
8278      * @type boolean
8279      */
8280     support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||
8281       propertyIsEnumerable.call(errorProto, 'name');
8282
8283     /**
8284      * Detect if `prototype` properties are enumerable by default.
8285      *
8286      * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1
8287      * (if the prototype or a property on the prototype has been set)
8288      * incorrectly set the `[[Enumerable]]` value of a function's `prototype`
8289      * property to `true`.
8290      *
8291      * @memberOf _.support
8292      * @type boolean
8293      */
8294     support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');
8295
8296     /**
8297      * Detect if properties shadowing those on `Object.prototype` are non-enumerable.
8298      *
8299      * In IE < 9 an object's own properties, shadowing non-enumerable ones,
8300      * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).
8301      *
8302      * @memberOf _.support
8303      * @type boolean
8304      */
8305     support.nonEnumShadows = !/valueOf/.test(props);
8306
8307     /**
8308      * Detect if own properties are iterated after inherited properties (IE < 9).
8309      *
8310      * @memberOf _.support
8311      * @type boolean
8312      */
8313     support.ownLast = props[0] != 'x';
8314
8315     /**
8316      * Detect if `Array#shift` and `Array#splice` augment array-like objects
8317      * correctly.
8318      *
8319      * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array
8320      * `shift()` and `splice()` functions that fail to remove the last element,
8321      * `value[0]`, of array-like objects even though the "length" property is
8322      * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,
8323      * while `splice()` is buggy regardless of mode in IE < 9.
8324      *
8325      * @memberOf _.support
8326      * @type boolean
8327      */
8328     support.spliceObjects = (splice.call(object, 0, 1), !object[0]);
8329
8330     /**
8331      * Detect lack of support for accessing string characters by index.
8332      *
8333      * IE < 8 can't access characters by index. IE 8 can only access characters
8334      * by index on string literals, not string objects.
8335      *
8336      * @memberOf _.support
8337      * @type boolean
8338      */
8339     support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';
8340   }(1, 0));
8341
8342   /*------------------------------------------------------------------------*/
8343
8344   /**
8345    * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
8346    *
8347    * @private
8348    * @param {*} value The value to wrap.
8349    */
8350   function LazyWrapper(value) {
8351     this.__wrapped__ = value;
8352     this.__actions__ = null;
8353     this.__dir__ = 1;
8354     this.__dropCount__ = 0;
8355     this.__filtered__ = false;
8356     this.__iteratees__ = null;
8357     this.__takeCount__ = POSITIVE_INFINITY;
8358     this.__views__ = null;
8359   }
8360
8361   /**
8362    * Creates a clone of the lazy wrapper object.
8363    *
8364    * @private
8365    * @name clone
8366    * @memberOf LazyWrapper
8367    * @returns {Object} Returns the cloned `LazyWrapper` object.
8368    */
8369   function lazyClone() {
8370     var actions = this.__actions__,
8371         iteratees = this.__iteratees__,
8372         views = this.__views__,
8373         result = new LazyWrapper(this.__wrapped__);
8374
8375     result.__actions__ = actions ? arrayCopy(actions) : null;
8376     result.__dir__ = this.__dir__;
8377     result.__filtered__ = this.__filtered__;
8378     result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null;
8379     result.__takeCount__ = this.__takeCount__;
8380     result.__views__ = views ? arrayCopy(views) : null;
8381     return result;
8382   }
8383
8384   /**
8385    * Reverses the direction of lazy iteration.
8386    *
8387    * @private
8388    * @name reverse
8389    * @memberOf LazyWrapper
8390    * @returns {Object} Returns the new reversed `LazyWrapper` object.
8391    */
8392   function lazyReverse() {
8393     if (this.__filtered__) {
8394       var result = new LazyWrapper(this);
8395       result.__dir__ = -1;
8396       result.__filtered__ = true;
8397     } else {
8398       result = this.clone();
8399       result.__dir__ *= -1;
8400     }
8401     return result;
8402   }
8403
8404   /**
8405    * Extracts the unwrapped value from its lazy wrapper.
8406    *
8407    * @private
8408    * @name value
8409    * @memberOf LazyWrapper
8410    * @returns {*} Returns the unwrapped value.
8411    */
8412   function lazyValue() {
8413     var array = this.__wrapped__.value();
8414     if (!isArray(array)) {
8415       return baseWrapperValue(array, this.__actions__);
8416     }
8417     var dir = this.__dir__,
8418         isRight = dir < 0,
8419         view = getView(0, array.length, this.__views__),
8420         start = view.start,
8421         end = view.end,
8422         length = end - start,
8423         index = isRight ? end : (start - 1),
8424         takeCount = nativeMin(length, this.__takeCount__),
8425         iteratees = this.__iteratees__,
8426         iterLength = iteratees ? iteratees.length : 0,
8427         resIndex = 0,
8428         result = [];
8429
8430     outer:
8431     while (length-- && resIndex < takeCount) {
8432       index += dir;
8433
8434       var iterIndex = -1,
8435           value = array[index];
8436
8437       while (++iterIndex < iterLength) {
8438         var data = iteratees[iterIndex],
8439             iteratee = data.iteratee,
8440             type = data.type;
8441
8442         if (type == LAZY_DROP_WHILE_FLAG) {
8443           if (data.done && (isRight ? (index > data.index) : (index < data.index))) {
8444             data.count = 0;
8445             data.done = false;
8446           }
8447           data.index = index;
8448           if (!data.done) {
8449             var limit = data.limit;
8450             if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) {
8451               continue outer;
8452             }
8453           }
8454         } else {
8455           var computed = iteratee(value);
8456           if (type == LAZY_MAP_FLAG) {
8457             value = computed;
8458           } else if (!computed) {
8459             if (type == LAZY_FILTER_FLAG) {
8460               continue outer;
8461             } else {
8462               break outer;
8463             }
8464           }
8465         }
8466       }
8467       result[resIndex++] = value;
8468     }
8469     return result;
8470   }
8471
8472   /*------------------------------------------------------------------------*/
8473
8474   /**
8475    *
8476    * Creates a cache object to store unique values.
8477    *
8478    * @private
8479    * @param {Array} [values] The values to cache.
8480    */
8481   function SetCache(values) {
8482     var length = values ? values.length : 0;
8483
8484     this.data = { 'hash': nativeCreate(null), 'set': new Set };
8485     while (length--) {
8486       this.push(values[length]);
8487     }
8488   }
8489
8490   /**
8491    * Checks if `value` is in `cache` mimicking the return signature of
8492    * `_.indexOf` by returning `0` if the value is found, else `-1`.
8493    *
8494    * @private
8495    * @param {Object} cache The cache to search.
8496    * @param {*} value The value to search for.
8497    * @returns {number} Returns `0` if `value` is found, else `-1`.
8498    */
8499   function cacheIndexOf(cache, value) {
8500     var data = cache.data,
8501         result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
8502
8503     return result ? 0 : -1;
8504   }
8505
8506   /**
8507    * Adds `value` to the cache.
8508    *
8509    * @private
8510    * @name push
8511    * @memberOf SetCache
8512    * @param {*} value The value to cache.
8513    */
8514   function cachePush(value) {
8515     var data = this.data;
8516     if (typeof value == 'string' || isObject(value)) {
8517       data.set.add(value);
8518     } else {
8519       data.hash[value] = true;
8520     }
8521   }
8522
8523   /*------------------------------------------------------------------------*/
8524
8525   /**
8526    * Copies the values of `source` to `array`.
8527    *
8528    * @private
8529    * @param {Array} source The array to copy values from.
8530    * @param {Array} [array=[]] The array to copy values to.
8531    * @returns {Array} Returns `array`.
8532    */
8533   function arrayCopy(source, array) {
8534     var index = -1,
8535         length = source.length;
8536
8537     array || (array = Array(length));
8538     while (++index < length) {
8539       array[index] = source[index];
8540     }
8541     return array;
8542   }
8543
8544   /**
8545    * A specialized version of `_.forEach` for arrays without support for callback
8546    * shorthands and `this` binding.
8547    *
8548    * @private
8549    * @param {Array} array The array to iterate over.
8550    * @param {Function} iteratee The function invoked per iteration.
8551    * @returns {Array} Returns `array`.
8552    */
8553   function arrayEach(array, iteratee) {
8554     var index = -1,
8555         length = array.length;
8556
8557     while (++index < length) {
8558       if (iteratee(array[index], index, array) === false) {
8559         break;
8560       }
8561     }
8562     return array;
8563   }
8564
8565   /**
8566    * A specialized version of `_.every` for arrays without support for callback
8567    * shorthands and `this` binding.
8568    *
8569    * @private
8570    * @param {Array} array The array to iterate over.
8571    * @param {Function} predicate The function invoked per iteration.
8572    * @returns {boolean} Returns `true` if all elements pass the predicate check,
8573    *  else `false`.
8574    */
8575   function arrayEvery(array, predicate) {
8576     var index = -1,
8577         length = array.length;
8578
8579     while (++index < length) {
8580       if (!predicate(array[index], index, array)) {
8581         return false;
8582       }
8583     }
8584     return true;
8585   }
8586
8587   /**
8588    * A specialized version of `_.filter` for arrays without support for callback
8589    * shorthands and `this` binding.
8590    *
8591    * @private
8592    * @param {Array} array The array to iterate over.
8593    * @param {Function} predicate The function invoked per iteration.
8594    * @returns {Array} Returns the new filtered array.
8595    */
8596   function arrayFilter(array, predicate) {
8597     var index = -1,
8598         length = array.length,
8599         resIndex = -1,
8600         result = [];
8601
8602     while (++index < length) {
8603       var value = array[index];
8604       if (predicate(value, index, array)) {
8605         result[++resIndex] = value;
8606       }
8607     }
8608     return result;
8609   }
8610
8611   /**
8612    * A specialized version of `_.map` for arrays without support for callback
8613    * shorthands and `this` binding.
8614    *
8615    * @private
8616    * @param {Array} array The array to iterate over.
8617    * @param {Function} iteratee The function invoked per iteration.
8618    * @returns {Array} Returns the new mapped array.
8619    */
8620   function arrayMap(array, iteratee) {
8621     var index = -1,
8622         length = array.length,
8623         result = Array(length);
8624
8625     while (++index < length) {
8626       result[index] = iteratee(array[index], index, array);
8627     }
8628     return result;
8629   }
8630
8631   /**
8632    * A specialized version of `_.reduce` for arrays without support for callback
8633    * shorthands and `this` binding.
8634    *
8635    * @private
8636    * @param {Array} array The array to iterate over.
8637    * @param {Function} iteratee The function invoked per iteration.
8638    * @param {*} [accumulator] The initial value.
8639    * @param {boolean} [initFromArray] Specify using the first element of `array`
8640    *  as the initial value.
8641    * @returns {*} Returns the accumulated value.
8642    */
8643   function arrayReduce(array, iteratee, accumulator, initFromArray) {
8644     var index = -1,
8645         length = array.length;
8646
8647     if (initFromArray && length) {
8648       accumulator = array[++index];
8649     }
8650     while (++index < length) {
8651       accumulator = iteratee(accumulator, array[index], index, array);
8652     }
8653     return accumulator;
8654   }
8655
8656   /**
8657    * A specialized version of `_.some` for arrays without support for callback
8658    * shorthands and `this` binding.
8659    *
8660    * @private
8661    * @param {Array} array The array to iterate over.
8662    * @param {Function} predicate The function invoked per iteration.
8663    * @returns {boolean} Returns `true` if any element passes the predicate check,
8664    *  else `false`.
8665    */
8666   function arraySome(array, predicate) {
8667     var index = -1,
8668         length = array.length;
8669
8670     while (++index < length) {
8671       if (predicate(array[index], index, array)) {
8672         return true;
8673       }
8674     }
8675     return false;
8676   }
8677
8678   /**
8679    * A specialized version of `_.assign` for customizing assigned values without
8680    * support for argument juggling, multiple sources, and `this` binding `customizer`
8681    * functions.
8682    *
8683    * @private
8684    * @param {Object} object The destination object.
8685    * @param {Object} source The source object.
8686    * @param {Function} customizer The function to customize assigned values.
8687    * @returns {Object} Returns `object`.
8688    */
8689   function assignWith(object, source, customizer) {
8690     var index = -1,
8691         props = keys(source),
8692         length = props.length;
8693
8694     while (++index < length) {
8695       var key = props[index],
8696           value = object[key],
8697           result = customizer(value, source[key], key, object, source);
8698
8699       if ((result === result ? (result !== value) : (value === value)) ||
8700           (value === undefined && !(key in object))) {
8701         object[key] = result;
8702       }
8703     }
8704     return object;
8705   }
8706
8707   /**
8708    * The base implementation of `_.assign` without support for argument juggling,
8709    * multiple sources, and `customizer` functions.
8710    *
8711    * @private
8712    * @param {Object} object The destination object.
8713    * @param {Object} source The source object.
8714    * @returns {Object} Returns `object`.
8715    */
8716   function baseAssign(object, source) {
8717     return source == null
8718       ? object
8719       : baseCopy(source, keys(source), object);
8720   }
8721
8722   /**
8723    * Copies properties of `source` to `object`.
8724    *
8725    * @private
8726    * @param {Object} source The object to copy properties from.
8727    * @param {Array} props The property names to copy.
8728    * @param {Object} [object={}] The object to copy properties to.
8729    * @returns {Object} Returns `object`.
8730    */
8731   function baseCopy(source, props, object) {
8732     object || (object = {});
8733
8734     var index = -1,
8735         length = props.length;
8736
8737     while (++index < length) {
8738       var key = props[index];
8739       object[key] = source[key];
8740     }
8741     return object;
8742   }
8743
8744   /**
8745    * The base implementation of `_.callback` which supports specifying the
8746    * number of arguments to provide to `func`.
8747    *
8748    * @private
8749    * @param {*} [func=_.identity] The value to convert to a callback.
8750    * @param {*} [thisArg] The `this` binding of `func`.
8751    * @param {number} [argCount] The number of arguments to provide to `func`.
8752    * @returns {Function} Returns the callback.
8753    */
8754   function baseCallback(func, thisArg, argCount) {
8755     var type = typeof func;
8756     if (type == 'function') {
8757       return thisArg === undefined
8758         ? func
8759         : bindCallback(func, thisArg, argCount);
8760     }
8761     if (func == null) {
8762       return identity;
8763     }
8764     if (type == 'object') {
8765       return baseMatches(func);
8766     }
8767     return thisArg === undefined
8768       ? property(func)
8769       : baseMatchesProperty(func, thisArg);
8770   }
8771
8772   /**
8773    * The base implementation of `_.clone` without support for argument juggling
8774    * and `this` binding `customizer` functions.
8775    *
8776    * @private
8777    * @param {*} value The value to clone.
8778    * @param {boolean} [isDeep] Specify a deep clone.
8779    * @param {Function} [customizer] The function to customize cloning values.
8780    * @param {string} [key] The key of `value`.
8781    * @param {Object} [object] The object `value` belongs to.
8782    * @param {Array} [stackA=[]] Tracks traversed source objects.
8783    * @param {Array} [stackB=[]] Associates clones with source counterparts.
8784    * @returns {*} Returns the cloned value.
8785    */
8786   function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {
8787     var result;
8788     if (customizer) {
8789       result = object ? customizer(value, key, object) : customizer(value);
8790     }
8791     if (result !== undefined) {
8792       return result;
8793     }
8794     if (!isObject(value)) {
8795       return value;
8796     }
8797     var isArr = isArray(value);
8798     if (isArr) {
8799       result = initCloneArray(value);
8800       if (!isDeep) {
8801         return arrayCopy(value, result);
8802       }
8803     } else {
8804       var tag = objToString.call(value),
8805           isFunc = tag == funcTag;
8806
8807       if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
8808         if (isHostObject(value)) {
8809           return object ? value : {};
8810         }
8811         result = initCloneObject(isFunc ? {} : value);
8812         if (!isDeep) {
8813           return baseAssign(result, value);
8814         }
8815       } else {
8816         return cloneableTags[tag]
8817           ? initCloneByTag(value, tag, isDeep)
8818           : (object ? value : {});
8819       }
8820     }
8821     // Check for circular references and return corresponding clone.
8822     stackA || (stackA = []);
8823     stackB || (stackB = []);
8824
8825     var length = stackA.length;
8826     while (length--) {
8827       if (stackA[length] == value) {
8828         return stackB[length];
8829       }
8830     }
8831     // Add the source value to the stack of traversed objects and associate it with its clone.
8832     stackA.push(value);
8833     stackB.push(result);
8834
8835     // Recursively populate clone (susceptible to call stack limits).
8836     (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {
8837       result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);
8838     });
8839     return result;
8840   }
8841
8842   /**
8843    * The base implementation of `_.create` without support for assigning
8844    * properties to the created object.
8845    *
8846    * @private
8847    * @param {Object} prototype The object to inherit from.
8848    * @returns {Object} Returns the new object.
8849    */
8850   var baseCreate = (function() {
8851     function object() {}
8852     return function(prototype) {
8853       if (isObject(prototype)) {
8854         object.prototype = prototype;
8855         var result = new object;
8856         object.prototype = null;
8857       }
8858       return result || {};
8859     };
8860   }());
8861
8862   /**
8863    * The base implementation of `_.difference` which accepts a single array
8864    * of values to exclude.
8865    *
8866    * @private
8867    * @param {Array} array The array to inspect.
8868    * @param {Array} values The values to exclude.
8869    * @returns {Array} Returns the new array of filtered values.
8870    */
8871   function baseDifference(array, values) {
8872     var length = array ? array.length : 0,
8873         result = [];
8874
8875     if (!length) {
8876       return result;
8877     }
8878     var index = -1,
8879         indexOf = getIndexOf(),
8880         isCommon = indexOf == baseIndexOf,
8881         cache = (isCommon && values.length >= 200) ? createCache(values) : null,
8882         valuesLength = values.length;
8883
8884     if (cache) {
8885       indexOf = cacheIndexOf;
8886       isCommon = false;
8887       values = cache;
8888     }
8889     outer:
8890     while (++index < length) {
8891       var value = array[index];
8892
8893       if (isCommon && value === value) {
8894         var valuesIndex = valuesLength;
8895         while (valuesIndex--) {
8896           if (values[valuesIndex] === value) {
8897             continue outer;
8898           }
8899         }
8900         result.push(value);
8901       }
8902       else if (indexOf(values, value, 0) < 0) {
8903         result.push(value);
8904       }
8905     }
8906     return result;
8907   }
8908
8909   /**
8910    * The base implementation of `_.forEach` without support for callback
8911    * shorthands and `this` binding.
8912    *
8913    * @private
8914    * @param {Array|Object|string} collection The collection to iterate over.
8915    * @param {Function} iteratee The function invoked per iteration.
8916    * @returns {Array|Object|string} Returns `collection`.
8917    */
8918   var baseEach = createBaseEach(baseForOwn);
8919
8920   /**
8921    * The base implementation of `_.every` without support for callback
8922    * shorthands and `this` binding.
8923    *
8924    * @private
8925    * @param {Array|Object|string} collection The collection to iterate over.
8926    * @param {Function} predicate The function invoked per iteration.
8927    * @returns {boolean} Returns `true` if all elements pass the predicate check,
8928    *  else `false`
8929    */
8930   function baseEvery(collection, predicate) {
8931     var result = true;
8932     baseEach(collection, function(value, index, collection) {
8933       result = !!predicate(value, index, collection);
8934       return result;
8935     });
8936     return result;
8937   }
8938
8939   /**
8940    * The base implementation of `_.filter` without support for callback
8941    * shorthands and `this` binding.
8942    *
8943    * @private
8944    * @param {Array|Object|string} collection The collection to iterate over.
8945    * @param {Function} predicate The function invoked per iteration.
8946    * @returns {Array} Returns the new filtered array.
8947    */
8948   function baseFilter(collection, predicate) {
8949     var result = [];
8950     baseEach(collection, function(value, index, collection) {
8951       if (predicate(value, index, collection)) {
8952         result.push(value);
8953       }
8954     });
8955     return result;
8956   }
8957
8958   /**
8959    * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
8960    * without support for callback shorthands and `this` binding, which iterates
8961    * over `collection` using the provided `eachFunc`.
8962    *
8963    * @private
8964    * @param {Array|Object|string} collection The collection to search.
8965    * @param {Function} predicate The function invoked per iteration.
8966    * @param {Function} eachFunc The function to iterate over `collection`.
8967    * @param {boolean} [retKey] Specify returning the key of the found element
8968    *  instead of the element itself.
8969    * @returns {*} Returns the found element or its key, else `undefined`.
8970    */
8971   function baseFind(collection, predicate, eachFunc, retKey) {
8972     var result;
8973     eachFunc(collection, function(value, key, collection) {
8974       if (predicate(value, key, collection)) {
8975         result = retKey ? key : value;
8976         return false;
8977       }
8978     });
8979     return result;
8980   }
8981
8982   /**
8983    * The base implementation of `_.flatten` with added support for restricting
8984    * flattening and specifying the start index.
8985    *
8986    * @private
8987    * @param {Array} array The array to flatten.
8988    * @param {boolean} [isDeep] Specify a deep flatten.
8989    * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.
8990    * @returns {Array} Returns the new flattened array.
8991    */
8992   function baseFlatten(array, isDeep, isStrict) {
8993     var index = -1,
8994         length = array.length,
8995         resIndex = -1,
8996         result = [];
8997
8998     while (++index < length) {
8999       var value = array[index];
9000       if (isObjectLike(value) && isArrayLike(value) &&
9001           (isStrict || isArray(value) || isArguments(value))) {
9002         if (isDeep) {
9003           // Recursively flatten arrays (susceptible to call stack limits).
9004           value = baseFlatten(value, isDeep, isStrict);
9005         }
9006         var valIndex = -1,
9007             valLength = value.length;
9008
9009         while (++valIndex < valLength) {
9010           result[++resIndex] = value[valIndex];
9011         }
9012       } else if (!isStrict) {
9013         result[++resIndex] = value;
9014       }
9015     }
9016     return result;
9017   }
9018
9019   /**
9020    * The base implementation of `baseForIn` and `baseForOwn` which iterates
9021    * over `object` properties returned by `keysFunc` invoking `iteratee` for
9022    * each property. Iteratee functions may exit iteration early by explicitly
9023    * returning `false`.
9024    *
9025    * @private
9026    * @param {Object} object The object to iterate over.
9027    * @param {Function} iteratee The function invoked per iteration.
9028    * @param {Function} keysFunc The function to get the keys of `object`.
9029    * @returns {Object} Returns `object`.
9030    */
9031   var baseFor = createBaseFor();
9032
9033   /**
9034    * The base implementation of `_.forIn` without support for callback
9035    * shorthands and `this` binding.
9036    *
9037    * @private
9038    * @param {Object} object The object to iterate over.
9039    * @param {Function} iteratee The function invoked per iteration.
9040    * @returns {Object} Returns `object`.
9041    */
9042   function baseForIn(object, iteratee) {
9043     return baseFor(object, iteratee, keysIn);
9044   }
9045
9046   /**
9047    * The base implementation of `_.forOwn` without support for callback
9048    * shorthands and `this` binding.
9049    *
9050    * @private
9051    * @param {Object} object The object to iterate over.
9052    * @param {Function} iteratee The function invoked per iteration.
9053    * @returns {Object} Returns `object`.
9054    */
9055   function baseForOwn(object, iteratee) {
9056     return baseFor(object, iteratee, keys);
9057   }
9058
9059   /**
9060    * The base implementation of `_.functions` which creates an array of
9061    * `object` function property names filtered from those provided.
9062    *
9063    * @private
9064    * @param {Object} object The object to inspect.
9065    * @param {Array} props The property names to filter.
9066    * @returns {Array} Returns the new array of filtered property names.
9067    */
9068   function baseFunctions(object, props) {
9069     var index = -1,
9070         length = props.length,
9071         resIndex = -1,
9072         result = [];
9073
9074     while (++index < length) {
9075       var key = props[index];
9076       if (isFunction(object[key])) {
9077         result[++resIndex] = key;
9078       }
9079     }
9080     return result;
9081   }
9082
9083   /**
9084    * The base implementation of `get` without support for string paths
9085    * and default values.
9086    *
9087    * @private
9088    * @param {Object} object The object to query.
9089    * @param {Array} path The path of the property to get.
9090    * @param {string} [pathKey] The key representation of path.
9091    * @returns {*} Returns the resolved value.
9092    */
9093   function baseGet(object, path, pathKey) {
9094     if (object == null) {
9095       return;
9096     }
9097     object = toObject(object);
9098     if (pathKey !== undefined && pathKey in object) {
9099       path = [pathKey];
9100     }
9101     var index = 0,
9102         length = path.length;
9103
9104     while (object != null && index < length) {
9105       object = toObject(object)[path[index++]];
9106     }
9107     return (index && index == length) ? object : undefined;
9108   }
9109
9110   /**
9111    * The base implementation of `_.isEqual` without support for `this` binding
9112    * `customizer` functions.
9113    *
9114    * @private
9115    * @param {*} value The value to compare.
9116    * @param {*} other The other value to compare.
9117    * @param {Function} [customizer] The function to customize comparing values.
9118    * @param {boolean} [isLoose] Specify performing partial comparisons.
9119    * @param {Array} [stackA] Tracks traversed `value` objects.
9120    * @param {Array} [stackB] Tracks traversed `other` objects.
9121    * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
9122    */
9123   function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
9124     if (value === other) {
9125       return true;
9126     }
9127     if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
9128       return value !== value && other !== other;
9129     }
9130     return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
9131   }
9132
9133   /**
9134    * A specialized version of `baseIsEqual` for arrays and objects which performs
9135    * deep comparisons and tracks traversed objects enabling objects with circular
9136    * references to be compared.
9137    *
9138    * @private
9139    * @param {Object} object The object to compare.
9140    * @param {Object} other The other object to compare.
9141    * @param {Function} equalFunc The function to determine equivalents of values.
9142    * @param {Function} [customizer] The function to customize comparing objects.
9143    * @param {boolean} [isLoose] Specify performing partial comparisons.
9144    * @param {Array} [stackA=[]] Tracks traversed `value` objects.
9145    * @param {Array} [stackB=[]] Tracks traversed `other` objects.
9146    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9147    */
9148   function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
9149     var objIsArr = isArray(object),
9150         othIsArr = isArray(other),
9151         objTag = arrayTag,
9152         othTag = arrayTag;
9153
9154     if (!objIsArr) {
9155       objTag = objToString.call(object);
9156       if (objTag == argsTag) {
9157         objTag = objectTag;
9158       } else if (objTag != objectTag) {
9159         objIsArr = isTypedArray(object);
9160       }
9161     }
9162     if (!othIsArr) {
9163       othTag = objToString.call(other);
9164       if (othTag == argsTag) {
9165         othTag = objectTag;
9166       } else if (othTag != objectTag) {
9167         othIsArr = isTypedArray(other);
9168       }
9169     }
9170     var objIsObj = objTag == objectTag && !isHostObject(object),
9171         othIsObj = othTag == objectTag && !isHostObject(other),
9172         isSameTag = objTag == othTag;
9173
9174     if (isSameTag && !(objIsArr || objIsObj)) {
9175       return equalByTag(object, other, objTag);
9176     }
9177     if (!isLoose) {
9178       var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
9179           othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
9180
9181       if (objIsWrapped || othIsWrapped) {
9182         return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
9183       }
9184     }
9185     if (!isSameTag) {
9186       return false;
9187     }
9188     // Assume cyclic values are equal.
9189     // For more information on detecting circular references see https://es5.github.io/#JO.
9190     stackA || (stackA = []);
9191     stackB || (stackB = []);
9192
9193     var length = stackA.length;
9194     while (length--) {
9195       if (stackA[length] == object) {
9196         return stackB[length] == other;
9197       }
9198     }
9199     // Add `object` and `other` to the stack of traversed objects.
9200     stackA.push(object);
9201     stackB.push(other);
9202
9203     var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);
9204
9205     stackA.pop();
9206     stackB.pop();
9207
9208     return result;
9209   }
9210
9211   /**
9212    * The base implementation of `_.isMatch` without support for callback
9213    * shorthands and `this` binding.
9214    *
9215    * @private
9216    * @param {Object} object The object to inspect.
9217    * @param {Array} matchData The propery names, values, and compare flags to match.
9218    * @param {Function} [customizer] The function to customize comparing objects.
9219    * @returns {boolean} Returns `true` if `object` is a match, else `false`.
9220    */
9221   function baseIsMatch(object, matchData, customizer) {
9222     var index = matchData.length,
9223         length = index,
9224         noCustomizer = !customizer;
9225
9226     if (object == null) {
9227       return !length;
9228     }
9229     object = toObject(object);
9230     while (index--) {
9231       var data = matchData[index];
9232       if ((noCustomizer && data[2])
9233             ? data[1] !== object[data[0]]
9234             : !(data[0] in object)
9235           ) {
9236         return false;
9237       }
9238     }
9239     while (++index < length) {
9240       data = matchData[index];
9241       var key = data[0],
9242           objValue = object[key],
9243           srcValue = data[1];
9244
9245       if (noCustomizer && data[2]) {
9246         if (objValue === undefined && !(key in object)) {
9247           return false;
9248         }
9249       } else {
9250         var result = customizer ? customizer(objValue, srcValue, key) : undefined;
9251         if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {
9252           return false;
9253         }
9254       }
9255     }
9256     return true;
9257   }
9258
9259   /**
9260    * The base implementation of `_.map` without support for callback shorthands
9261    * and `this` binding.
9262    *
9263    * @private
9264    * @param {Array|Object|string} collection The collection to iterate over.
9265    * @param {Function} iteratee The function invoked per iteration.
9266    * @returns {Array} Returns the new mapped array.
9267    */
9268   function baseMap(collection, iteratee) {
9269     var index = -1,
9270         result = isArrayLike(collection) ? Array(collection.length) : [];
9271
9272     baseEach(collection, function(value, key, collection) {
9273       result[++index] = iteratee(value, key, collection);
9274     });
9275     return result;
9276   }
9277
9278   /**
9279    * The base implementation of `_.matches` which does not clone `source`.
9280    *
9281    * @private
9282    * @param {Object} source The object of property values to match.
9283    * @returns {Function} Returns the new function.
9284    */
9285   function baseMatches(source) {
9286     var matchData = getMatchData(source);
9287     if (matchData.length == 1 && matchData[0][2]) {
9288       var key = matchData[0][0],
9289           value = matchData[0][1];
9290
9291       return function(object) {
9292         if (object == null) {
9293           return false;
9294         }
9295         object = toObject(object);
9296         return object[key] === value && (value !== undefined || (key in object));
9297       };
9298     }
9299     return function(object) {
9300       return baseIsMatch(object, matchData);
9301     };
9302   }
9303
9304   /**
9305    * The base implementation of `_.matchesProperty` which does not clone `srcValue`.
9306    *
9307    * @private
9308    * @param {string} path The path of the property to get.
9309    * @param {*} srcValue The value to compare.
9310    * @returns {Function} Returns the new function.
9311    */
9312   function baseMatchesProperty(path, srcValue) {
9313     var isArr = isArray(path),
9314         isCommon = isKey(path) && isStrictComparable(srcValue),
9315         pathKey = (path + '');
9316
9317     path = toPath(path);
9318     return function(object) {
9319       if (object == null) {
9320         return false;
9321       }
9322       var key = pathKey;
9323       object = toObject(object);
9324       if ((isArr || !isCommon) && !(key in object)) {
9325         object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
9326         if (object == null) {
9327           return false;
9328         }
9329         key = last(path);
9330         object = toObject(object);
9331       }
9332       return object[key] === srcValue
9333         ? (srcValue !== undefined || (key in object))
9334         : baseIsEqual(srcValue, object[key], undefined, true);
9335     };
9336   }
9337
9338   /**
9339    * The base implementation of `_.merge` without support for argument juggling,
9340    * multiple sources, and `this` binding `customizer` functions.
9341    *
9342    * @private
9343    * @param {Object} object The destination object.
9344    * @param {Object} source The source object.
9345    * @param {Function} [customizer] The function to customize merging properties.
9346    * @param {Array} [stackA=[]] Tracks traversed source objects.
9347    * @param {Array} [stackB=[]] Associates values with source counterparts.
9348    * @returns {Object} Returns `object`.
9349    */
9350   function baseMerge(object, source, customizer, stackA, stackB) {
9351     if (!isObject(object)) {
9352       return object;
9353     }
9354     var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),
9355         props = isSrcArr ? null : keys(source);
9356
9357     arrayEach(props || source, function(srcValue, key) {
9358       if (props) {
9359         key = srcValue;
9360         srcValue = source[key];
9361       }
9362       if (isObjectLike(srcValue)) {
9363         stackA || (stackA = []);
9364         stackB || (stackB = []);
9365         baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
9366       }
9367       else {
9368         var value = object[key],
9369             result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
9370             isCommon = result === undefined;
9371
9372         if (isCommon) {
9373           result = srcValue;
9374         }
9375         if ((result !== undefined || (isSrcArr && !(key in object))) &&
9376             (isCommon || (result === result ? (result !== value) : (value === value)))) {
9377           object[key] = result;
9378         }
9379       }
9380     });
9381     return object;
9382   }
9383
9384   /**
9385    * A specialized version of `baseMerge` for arrays and objects which performs
9386    * deep merges and tracks traversed objects enabling objects with circular
9387    * references to be merged.
9388    *
9389    * @private
9390    * @param {Object} object The destination object.
9391    * @param {Object} source The source object.
9392    * @param {string} key The key of the value to merge.
9393    * @param {Function} mergeFunc The function to merge values.
9394    * @param {Function} [customizer] The function to customize merging properties.
9395    * @param {Array} [stackA=[]] Tracks traversed source objects.
9396    * @param {Array} [stackB=[]] Associates values with source counterparts.
9397    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9398    */
9399   function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {
9400     var length = stackA.length,
9401         srcValue = source[key];
9402
9403     while (length--) {
9404       if (stackA[length] == srcValue) {
9405         object[key] = stackB[length];
9406         return;
9407       }
9408     }
9409     var value = object[key],
9410         result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
9411         isCommon = result === undefined;
9412
9413     if (isCommon) {
9414       result = srcValue;
9415       if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {
9416         result = isArray(value)
9417           ? value
9418           : (isArrayLike(value) ? arrayCopy(value) : []);
9419       }
9420       else if (isPlainObject(srcValue) || isArguments(srcValue)) {
9421         result = isArguments(value)
9422           ? toPlainObject(value)
9423           : (isPlainObject(value) ? value : {});
9424       }
9425       else {
9426         isCommon = false;
9427       }
9428     }
9429     // Add the source value to the stack of traversed objects and associate
9430     // it with its merged value.
9431     stackA.push(srcValue);
9432     stackB.push(result);
9433
9434     if (isCommon) {
9435       // Recursively merge objects and arrays (susceptible to call stack limits).
9436       object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);
9437     } else if (result === result ? (result !== value) : (value === value)) {
9438       object[key] = result;
9439     }
9440   }
9441
9442   /**
9443    * The base implementation of `_.property` without support for deep paths.
9444    *
9445    * @private
9446    * @param {string} key The key of the property to get.
9447    * @returns {Function} Returns the new function.
9448    */
9449   function baseProperty(key) {
9450     return function(object) {
9451       return object == null ? undefined : toObject(object)[key];
9452     };
9453   }
9454
9455   /**
9456    * A specialized version of `baseProperty` which supports deep paths.
9457    *
9458    * @private
9459    * @param {Array|string} path The path of the property to get.
9460    * @returns {Function} Returns the new function.
9461    */
9462   function basePropertyDeep(path) {
9463     var pathKey = (path + '');
9464     path = toPath(path);
9465     return function(object) {
9466       return baseGet(object, path, pathKey);
9467     };
9468   }
9469
9470   /**
9471    * The base implementation of `_.reduce` and `_.reduceRight` without support
9472    * for callback shorthands and `this` binding, which iterates over `collection`
9473    * using the provided `eachFunc`.
9474    *
9475    * @private
9476    * @param {Array|Object|string} collection The collection to iterate over.
9477    * @param {Function} iteratee The function invoked per iteration.
9478    * @param {*} accumulator The initial value.
9479    * @param {boolean} initFromCollection Specify using the first or last element
9480    *  of `collection` as the initial value.
9481    * @param {Function} eachFunc The function to iterate over `collection`.
9482    * @returns {*} Returns the accumulated value.
9483    */
9484   function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
9485     eachFunc(collection, function(value, index, collection) {
9486       accumulator = initFromCollection
9487         ? (initFromCollection = false, value)
9488         : iteratee(accumulator, value, index, collection);
9489     });
9490     return accumulator;
9491   }
9492
9493   /**
9494    * The base implementation of `setData` without support for hot loop detection.
9495    *
9496    * @private
9497    * @param {Function} func The function to associate metadata with.
9498    * @param {*} data The metadata.
9499    * @returns {Function} Returns `func`.
9500    */
9501   var baseSetData = !metaMap ? identity : function(func, data) {
9502     metaMap.set(func, data);
9503     return func;
9504   };
9505
9506   /**
9507    * The base implementation of `_.slice` without an iteratee call guard.
9508    *
9509    * @private
9510    * @param {Array} array The array to slice.
9511    * @param {number} [start=0] The start position.
9512    * @param {number} [end=array.length] The end position.
9513    * @returns {Array} Returns the slice of `array`.
9514    */
9515   function baseSlice(array, start, end) {
9516     var index = -1,
9517         length = array.length;
9518
9519     start = start == null ? 0 : (+start || 0);
9520     if (start < 0) {
9521       start = -start > length ? 0 : (length + start);
9522     }
9523     end = (end === undefined || end > length) ? length : (+end || 0);
9524     if (end < 0) {
9525       end += length;
9526     }
9527     length = start > end ? 0 : ((end - start) >>> 0);
9528     start >>>= 0;
9529
9530     var result = Array(length);
9531     while (++index < length) {
9532       result[index] = array[index + start];
9533     }
9534     return result;
9535   }
9536
9537   /**
9538    * The base implementation of `_.some` without support for callback shorthands
9539    * and `this` binding.
9540    *
9541    * @private
9542    * @param {Array|Object|string} collection The collection to iterate over.
9543    * @param {Function} predicate The function invoked per iteration.
9544    * @returns {boolean} Returns `true` if any element passes the predicate check,
9545    *  else `false`.
9546    */
9547   function baseSome(collection, predicate) {
9548     var result;
9549
9550     baseEach(collection, function(value, index, collection) {
9551       result = predicate(value, index, collection);
9552       return !result;
9553     });
9554     return !!result;
9555   }
9556
9557   /**
9558    * The base implementation of `_.uniq` without support for callback shorthands
9559    * and `this` binding.
9560    *
9561    * @private
9562    * @param {Array} array The array to inspect.
9563    * @param {Function} [iteratee] The function invoked per iteration.
9564    * @returns {Array} Returns the new duplicate-value-free array.
9565    */
9566   function baseUniq(array, iteratee) {
9567     var index = -1,
9568         indexOf = getIndexOf(),
9569         length = array.length,
9570         isCommon = indexOf == baseIndexOf,
9571         isLarge = isCommon && length >= 200,
9572         seen = isLarge ? createCache() : null,
9573         result = [];
9574
9575     if (seen) {
9576       indexOf = cacheIndexOf;
9577       isCommon = false;
9578     } else {
9579       isLarge = false;
9580       seen = iteratee ? [] : result;
9581     }
9582     outer:
9583     while (++index < length) {
9584       var value = array[index],
9585           computed = iteratee ? iteratee(value, index, array) : value;
9586
9587       if (isCommon && value === value) {
9588         var seenIndex = seen.length;
9589         while (seenIndex--) {
9590           if (seen[seenIndex] === computed) {
9591             continue outer;
9592           }
9593         }
9594         if (iteratee) {
9595           seen.push(computed);
9596         }
9597         result.push(value);
9598       }
9599       else if (indexOf(seen, computed, 0) < 0) {
9600         if (iteratee || isLarge) {
9601           seen.push(computed);
9602         }
9603         result.push(value);
9604       }
9605     }
9606     return result;
9607   }
9608
9609   /**
9610    * The base implementation of `_.values` and `_.valuesIn` which creates an
9611    * array of `object` property values corresponding to the property names
9612    * of `props`.
9613    *
9614    * @private
9615    * @param {Object} object The object to query.
9616    * @param {Array} props The property names to get values for.
9617    * @returns {Object} Returns the array of property values.
9618    */
9619   function baseValues(object, props) {
9620     var index = -1,
9621         length = props.length,
9622         result = Array(length);
9623
9624     while (++index < length) {
9625       result[index] = object[props[index]];
9626     }
9627     return result;
9628   }
9629
9630   /**
9631    * The base implementation of `wrapperValue` which returns the result of
9632    * performing a sequence of actions on the unwrapped `value`, where each
9633    * successive action is supplied the return value of the previous.
9634    *
9635    * @private
9636    * @param {*} value The unwrapped value.
9637    * @param {Array} actions Actions to peform to resolve the unwrapped value.
9638    * @returns {*} Returns the resolved value.
9639    */
9640   function baseWrapperValue(value, actions) {
9641     var result = value;
9642     if (result instanceof LazyWrapper) {
9643       result = result.value();
9644     }
9645     var index = -1,
9646         length = actions.length;
9647
9648     while (++index < length) {
9649       var args = [result],
9650           action = actions[index];
9651
9652       push.apply(args, action.args);
9653       result = action.func.apply(action.thisArg, args);
9654     }
9655     return result;
9656   }
9657
9658   /**
9659    * Performs a binary search of `array` to determine the index at which `value`
9660    * should be inserted into `array` in order to maintain its sort order.
9661    *
9662    * @private
9663    * @param {Array} array The sorted array to inspect.
9664    * @param {*} value The value to evaluate.
9665    * @param {boolean} [retHighest] Specify returning the highest qualified index.
9666    * @returns {number} Returns the index at which `value` should be inserted
9667    *  into `array`.
9668    */
9669   function binaryIndex(array, value, retHighest) {
9670     var low = 0,
9671         high = array ? array.length : low;
9672
9673     if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
9674       while (low < high) {
9675         var mid = (low + high) >>> 1,
9676             computed = array[mid];
9677
9678         if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) {
9679           low = mid + 1;
9680         } else {
9681           high = mid;
9682         }
9683       }
9684       return high;
9685     }
9686     return binaryIndexBy(array, value, identity, retHighest);
9687   }
9688
9689   /**
9690    * This function is like `binaryIndex` except that it invokes `iteratee` for
9691    * `value` and each element of `array` to compute their sort ranking. The
9692    * iteratee is invoked with one argument; (value).
9693    *
9694    * @private
9695    * @param {Array} array The sorted array to inspect.
9696    * @param {*} value The value to evaluate.
9697    * @param {Function} iteratee The function invoked per iteration.
9698    * @param {boolean} [retHighest] Specify returning the highest qualified index.
9699    * @returns {number} Returns the index at which `value` should be inserted
9700    *  into `array`.
9701    */
9702   function binaryIndexBy(array, value, iteratee, retHighest) {
9703     value = iteratee(value);
9704
9705     var low = 0,
9706         high = array ? array.length : 0,
9707         valIsNaN = value !== value,
9708         valIsNull = value === null,
9709         valIsUndef = value === undefined;
9710
9711     while (low < high) {
9712       var mid = floor((low + high) / 2),
9713           computed = iteratee(array[mid]),
9714           isDef = computed !== undefined,
9715           isReflexive = computed === computed;
9716
9717       if (valIsNaN) {
9718         var setLow = isReflexive || retHighest;
9719       } else if (valIsNull) {
9720         setLow = isReflexive && isDef && (retHighest || computed != null);
9721       } else if (valIsUndef) {
9722         setLow = isReflexive && (retHighest || isDef);
9723       } else if (computed == null) {
9724         setLow = false;
9725       } else {
9726         setLow = retHighest ? (computed <= value) : (computed < value);
9727       }
9728       if (setLow) {
9729         low = mid + 1;
9730       } else {
9731         high = mid;
9732       }
9733     }
9734     return nativeMin(high, MAX_ARRAY_INDEX);
9735   }
9736
9737   /**
9738    * A specialized version of `baseCallback` which only supports `this` binding
9739    * and specifying the number of arguments to provide to `func`.
9740    *
9741    * @private
9742    * @param {Function} func The function to bind.
9743    * @param {*} thisArg The `this` binding of `func`.
9744    * @param {number} [argCount] The number of arguments to provide to `func`.
9745    * @returns {Function} Returns the callback.
9746    */
9747   function bindCallback(func, thisArg, argCount) {
9748     if (typeof func != 'function') {
9749       return identity;
9750     }
9751     if (thisArg === undefined) {
9752       return func;
9753     }
9754     switch (argCount) {
9755       case 1: return function(value) {
9756         return func.call(thisArg, value);
9757       };
9758       case 3: return function(value, index, collection) {
9759         return func.call(thisArg, value, index, collection);
9760       };
9761       case 4: return function(accumulator, value, index, collection) {
9762         return func.call(thisArg, accumulator, value, index, collection);
9763       };
9764       case 5: return function(value, other, key, object, source) {
9765         return func.call(thisArg, value, other, key, object, source);
9766       };
9767     }
9768     return function() {
9769       return func.apply(thisArg, arguments);
9770     };
9771   }
9772
9773   /**
9774    * Creates a clone of the given array buffer.
9775    *
9776    * @private
9777    * @param {ArrayBuffer} buffer The array buffer to clone.
9778    * @returns {ArrayBuffer} Returns the cloned array buffer.
9779    */
9780   function bufferClone(buffer) {
9781     return bufferSlice.call(buffer, 0);
9782   }
9783   if (!bufferSlice) {
9784     // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.
9785     bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {
9786       var byteLength = buffer.byteLength,
9787           floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,
9788           offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,
9789           result = new ArrayBuffer(byteLength);
9790
9791       if (floatLength) {
9792         var view = new Float64Array(result, 0, floatLength);
9793         view.set(new Float64Array(buffer, 0, floatLength));
9794       }
9795       if (byteLength != offset) {
9796         view = new Uint8Array(result, offset);
9797         view.set(new Uint8Array(buffer, offset));
9798       }
9799       return result;
9800     };
9801   }
9802
9803   /**
9804    * Creates an array that is the composition of partially applied arguments,
9805    * placeholders, and provided arguments into a single array of arguments.
9806    *
9807    * @private
9808    * @param {Array|Object} args The provided arguments.
9809    * @param {Array} partials The arguments to prepend to those provided.
9810    * @param {Array} holders The `partials` placeholder indexes.
9811    * @returns {Array} Returns the new array of composed arguments.
9812    */
9813   function composeArgs(args, partials, holders) {
9814     var holdersLength = holders.length,
9815         argsIndex = -1,
9816         argsLength = nativeMax(args.length - holdersLength, 0),
9817         leftIndex = -1,
9818         leftLength = partials.length,
9819         result = Array(argsLength + leftLength);
9820
9821     while (++leftIndex < leftLength) {
9822       result[leftIndex] = partials[leftIndex];
9823     }
9824     while (++argsIndex < holdersLength) {
9825       result[holders[argsIndex]] = args[argsIndex];
9826     }
9827     while (argsLength--) {
9828       result[leftIndex++] = args[argsIndex++];
9829     }
9830     return result;
9831   }
9832
9833   /**
9834    * This function is like `composeArgs` except that the arguments composition
9835    * is tailored for `_.partialRight`.
9836    *
9837    * @private
9838    * @param {Array|Object} args The provided arguments.
9839    * @param {Array} partials The arguments to append to those provided.
9840    * @param {Array} holders The `partials` placeholder indexes.
9841    * @returns {Array} Returns the new array of composed arguments.
9842    */
9843   function composeArgsRight(args, partials, holders) {
9844     var holdersIndex = -1,
9845         holdersLength = holders.length,
9846         argsIndex = -1,
9847         argsLength = nativeMax(args.length - holdersLength, 0),
9848         rightIndex = -1,
9849         rightLength = partials.length,
9850         result = Array(argsLength + rightLength);
9851
9852     while (++argsIndex < argsLength) {
9853       result[argsIndex] = args[argsIndex];
9854     }
9855     var offset = argsIndex;
9856     while (++rightIndex < rightLength) {
9857       result[offset + rightIndex] = partials[rightIndex];
9858     }
9859     while (++holdersIndex < holdersLength) {
9860       result[offset + holders[holdersIndex]] = args[argsIndex++];
9861     }
9862     return result;
9863   }
9864
9865   /**
9866    * Creates a function that aggregates a collection, creating an accumulator
9867    * object composed from the results of running each element in the collection
9868    * through an iteratee.
9869    *
9870    * **Note:** This function is used to create `_.countBy`, `_.groupBy`, `_.indexBy`,
9871    * and `_.partition`.
9872    *
9873    * @private
9874    * @param {Function} setter The function to set keys and values of the accumulator object.
9875    * @param {Function} [initializer] The function to initialize the accumulator object.
9876    * @returns {Function} Returns the new aggregator function.
9877    */
9878   function createAggregator(setter, initializer) {
9879     return function(collection, iteratee, thisArg) {
9880       var result = initializer ? initializer() : {};
9881       iteratee = getCallback(iteratee, thisArg, 3);
9882
9883       if (isArray(collection)) {
9884         var index = -1,
9885             length = collection.length;
9886
9887         while (++index < length) {
9888           var value = collection[index];
9889           setter(result, value, iteratee(value, index, collection), collection);
9890         }
9891       } else {
9892         baseEach(collection, function(value, key, collection) {
9893           setter(result, value, iteratee(value, key, collection), collection);
9894         });
9895       }
9896       return result;
9897     };
9898   }
9899
9900   /**
9901    * Creates a function that assigns properties of source object(s) to a given
9902    * destination object.
9903    *
9904    * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.
9905    *
9906    * @private
9907    * @param {Function} assigner The function to assign values.
9908    * @returns {Function} Returns the new assigner function.
9909    */
9910   function createAssigner(assigner) {
9911     return restParam(function(object, sources) {
9912       var index = -1,
9913           length = object == null ? 0 : sources.length,
9914           customizer = length > 2 ? sources[length - 2] : undefined,
9915           guard = length > 2 ? sources[2] : undefined,
9916           thisArg = length > 1 ? sources[length - 1] : undefined;
9917
9918       if (typeof customizer == 'function') {
9919         customizer = bindCallback(customizer, thisArg, 5);
9920         length -= 2;
9921       } else {
9922         customizer = typeof thisArg == 'function' ? thisArg : undefined;
9923         length -= (customizer ? 1 : 0);
9924       }
9925       if (guard && isIterateeCall(sources[0], sources[1], guard)) {
9926         customizer = length < 3 ? undefined : customizer;
9927         length = 1;
9928       }
9929       while (++index < length) {
9930         var source = sources[index];
9931         if (source) {
9932           assigner(object, source, customizer);
9933         }
9934       }
9935       return object;
9936     });
9937   }
9938
9939   /**
9940    * Creates a `baseEach` or `baseEachRight` function.
9941    *
9942    * @private
9943    * @param {Function} eachFunc The function to iterate over a collection.
9944    * @param {boolean} [fromRight] Specify iterating from right to left.
9945    * @returns {Function} Returns the new base function.
9946    */
9947   function createBaseEach(eachFunc, fromRight) {
9948     return function(collection, iteratee) {
9949       var length = collection ? getLength(collection) : 0;
9950       if (!isLength(length)) {
9951         return eachFunc(collection, iteratee);
9952       }
9953       var index = fromRight ? length : -1,
9954           iterable = toObject(collection);
9955
9956       while ((fromRight ? index-- : ++index < length)) {
9957         if (iteratee(iterable[index], index, iterable) === false) {
9958           break;
9959         }
9960       }
9961       return collection;
9962     };
9963   }
9964
9965   /**
9966    * Creates a base function for `_.forIn` or `_.forInRight`.
9967    *
9968    * @private
9969    * @param {boolean} [fromRight] Specify iterating from right to left.
9970    * @returns {Function} Returns the new base function.
9971    */
9972   function createBaseFor(fromRight) {
9973     return function(object, iteratee, keysFunc) {
9974       var iterable = toObject(object),
9975           props = keysFunc(object),
9976           length = props.length,
9977           index = fromRight ? length : -1;
9978
9979       while ((fromRight ? index-- : ++index < length)) {
9980         var key = props[index];
9981         if (iteratee(iterable[key], key, iterable) === false) {
9982           break;
9983         }
9984       }
9985       return object;
9986     };
9987   }
9988
9989   /**
9990    * Creates a function that wraps `func` and invokes it with the `this`
9991    * binding of `thisArg`.
9992    *
9993    * @private
9994    * @param {Function} func The function to bind.
9995    * @param {*} [thisArg] The `this` binding of `func`.
9996    * @returns {Function} Returns the new bound function.
9997    */
9998   function createBindWrapper(func, thisArg) {
9999     var Ctor = createCtorWrapper(func);
10000
10001     function wrapper() {
10002       var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10003       return fn.apply(thisArg, arguments);
10004     }
10005     return wrapper;
10006   }
10007
10008   /**
10009    * Creates a `Set` cache object to optimize linear searches of large arrays.
10010    *
10011    * @private
10012    * @param {Array} [values] The values to cache.
10013    * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
10014    */
10015   var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
10016     return new SetCache(values);
10017   };
10018
10019   /**
10020    * Creates a function that produces an instance of `Ctor` regardless of
10021    * whether it was invoked as part of a `new` expression or by `call` or `apply`.
10022    *
10023    * @private
10024    * @param {Function} Ctor The constructor to wrap.
10025    * @returns {Function} Returns the new wrapped function.
10026    */
10027   function createCtorWrapper(Ctor) {
10028     return function() {
10029       // Use a `switch` statement to work with class constructors.
10030       // See https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-call-thisargument-argumentslist
10031       // for more details.
10032       var args = arguments;
10033       switch (args.length) {
10034         case 0: return new Ctor;
10035         case 1: return new Ctor(args[0]);
10036         case 2: return new Ctor(args[0], args[1]);
10037         case 3: return new Ctor(args[0], args[1], args[2]);
10038         case 4: return new Ctor(args[0], args[1], args[2], args[3]);
10039         case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
10040       }
10041       var thisBinding = baseCreate(Ctor.prototype),
10042           result = Ctor.apply(thisBinding, args);
10043
10044       // Mimic the constructor's `return` behavior.
10045       // See https://es5.github.io/#x13.2.2 for more details.
10046       return isObject(result) ? result : thisBinding;
10047     };
10048   }
10049
10050   /**
10051    * Creates a `_.find` or `_.findLast` function.
10052    *
10053    * @private
10054    * @param {Function} eachFunc The function to iterate over a collection.
10055    * @param {boolean} [fromRight] Specify iterating from right to left.
10056    * @returns {Function} Returns the new find function.
10057    */
10058   function createFind(eachFunc, fromRight) {
10059     return function(collection, predicate, thisArg) {
10060       predicate = getCallback(predicate, thisArg, 3);
10061       if (isArray(collection)) {
10062         var index = baseFindIndex(collection, predicate, fromRight);
10063         return index > -1 ? collection[index] : undefined;
10064       }
10065       return baseFind(collection, predicate, eachFunc);
10066     };
10067   }
10068
10069   /**
10070    * Creates a function for `_.forEach` or `_.forEachRight`.
10071    *
10072    * @private
10073    * @param {Function} arrayFunc The function to iterate over an array.
10074    * @param {Function} eachFunc The function to iterate over a collection.
10075    * @returns {Function} Returns the new each function.
10076    */
10077   function createForEach(arrayFunc, eachFunc) {
10078     return function(collection, iteratee, thisArg) {
10079       return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
10080         ? arrayFunc(collection, iteratee)
10081         : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
10082     };
10083   }
10084
10085   /**
10086    * Creates a function for `_.forOwn` or `_.forOwnRight`.
10087    *
10088    * @private
10089    * @param {Function} objectFunc The function to iterate over an object.
10090    * @returns {Function} Returns the new each function.
10091    */
10092   function createForOwn(objectFunc) {
10093     return function(object, iteratee, thisArg) {
10094       if (typeof iteratee != 'function' || thisArg !== undefined) {
10095         iteratee = bindCallback(iteratee, thisArg, 3);
10096       }
10097       return objectFunc(object, iteratee);
10098     };
10099   }
10100
10101   /**
10102    * Creates a function for `_.reduce` or `_.reduceRight`.
10103    *
10104    * @private
10105    * @param {Function} arrayFunc The function to iterate over an array.
10106    * @param {Function} eachFunc The function to iterate over a collection.
10107    * @returns {Function} Returns the new each function.
10108    */
10109   function createReduce(arrayFunc, eachFunc) {
10110     return function(collection, iteratee, accumulator, thisArg) {
10111       var initFromArray = arguments.length < 3;
10112       return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
10113         ? arrayFunc(collection, iteratee, accumulator, initFromArray)
10114         : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
10115     };
10116   }
10117
10118   /**
10119    * Creates a function that wraps `func` and invokes it with optional `this`
10120    * binding of, partial application, and currying.
10121    *
10122    * @private
10123    * @param {Function|string} func The function or method name to reference.
10124    * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
10125    * @param {*} [thisArg] The `this` binding of `func`.
10126    * @param {Array} [partials] The arguments to prepend to those provided to the new function.
10127    * @param {Array} [holders] The `partials` placeholder indexes.
10128    * @param {Array} [partialsRight] The arguments to append to those provided to the new function.
10129    * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
10130    * @param {Array} [argPos] The argument positions of the new function.
10131    * @param {number} [ary] The arity cap of `func`.
10132    * @param {number} [arity] The arity of `func`.
10133    * @returns {Function} Returns the new wrapped function.
10134    */
10135   function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
10136     var isAry = bitmask & ARY_FLAG,
10137         isBind = bitmask & BIND_FLAG,
10138         isBindKey = bitmask & BIND_KEY_FLAG,
10139         isCurry = bitmask & CURRY_FLAG,
10140         isCurryBound = bitmask & CURRY_BOUND_FLAG,
10141         isCurryRight = bitmask & CURRY_RIGHT_FLAG,
10142         Ctor = isBindKey ? null : createCtorWrapper(func);
10143
10144     function wrapper() {
10145       // Avoid `arguments` object use disqualifying optimizations by
10146       // converting it to an array before providing it to other functions.
10147       var length = arguments.length,
10148           index = length,
10149           args = Array(length);
10150
10151       while (index--) {
10152         args[index] = arguments[index];
10153       }
10154       if (partials) {
10155         args = composeArgs(args, partials, holders);
10156       }
10157       if (partialsRight) {
10158         args = composeArgsRight(args, partialsRight, holdersRight);
10159       }
10160       if (isCurry || isCurryRight) {
10161         var placeholder = wrapper.placeholder,
10162             argsHolders = replaceHolders(args, placeholder);
10163
10164         length -= argsHolders.length;
10165         if (length < arity) {
10166           var newArgPos = argPos ? arrayCopy(argPos) : null,
10167               newArity = nativeMax(arity - length, 0),
10168               newsHolders = isCurry ? argsHolders : null,
10169               newHoldersRight = isCurry ? null : argsHolders,
10170               newPartials = isCurry ? args : null,
10171               newPartialsRight = isCurry ? null : args;
10172
10173           bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);
10174           bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
10175
10176           if (!isCurryBound) {
10177             bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
10178           }
10179           var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity],
10180               result = createHybridWrapper.apply(undefined, newData);
10181
10182           if (isLaziable(func)) {
10183             setData(result, newData);
10184           }
10185           result.placeholder = placeholder;
10186           return result;
10187         }
10188       }
10189       var thisBinding = isBind ? thisArg : this,
10190           fn = isBindKey ? thisBinding[func] : func;
10191
10192       if (argPos) {
10193         args = reorder(args, argPos);
10194       }
10195       if (isAry && ary < args.length) {
10196         args.length = ary;
10197       }
10198       if (this && this !== root && this instanceof wrapper) {
10199         fn = Ctor || createCtorWrapper(func);
10200       }
10201       return fn.apply(thisBinding, args);
10202     }
10203     return wrapper;
10204   }
10205
10206   /**
10207    * Creates a function that wraps `func` and invokes it with the optional `this`
10208    * binding of `thisArg` and the `partials` prepended to those provided to
10209    * the wrapper.
10210    *
10211    * @private
10212    * @param {Function} func The function to partially apply arguments to.
10213    * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
10214    * @param {*} thisArg The `this` binding of `func`.
10215    * @param {Array} partials The arguments to prepend to those provided to the new function.
10216    * @returns {Function} Returns the new bound function.
10217    */
10218   function createPartialWrapper(func, bitmask, thisArg, partials) {
10219     var isBind = bitmask & BIND_FLAG,
10220         Ctor = createCtorWrapper(func);
10221
10222     function wrapper() {
10223       // Avoid `arguments` object use disqualifying optimizations by
10224       // converting it to an array before providing it `func`.
10225       var argsIndex = -1,
10226           argsLength = arguments.length,
10227           leftIndex = -1,
10228           leftLength = partials.length,
10229           args = Array(argsLength + leftLength);
10230
10231       while (++leftIndex < leftLength) {
10232         args[leftIndex] = partials[leftIndex];
10233       }
10234       while (argsLength--) {
10235         args[leftIndex++] = arguments[++argsIndex];
10236       }
10237       var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10238       return fn.apply(isBind ? thisArg : this, args);
10239     }
10240     return wrapper;
10241   }
10242
10243   /**
10244    * Creates a function that either curries or invokes `func` with optional
10245    * `this` binding and partially applied arguments.
10246    *
10247    * @private
10248    * @param {Function|string} func The function or method name to reference.
10249    * @param {number} bitmask The bitmask of flags.
10250    *  The bitmask may be composed of the following flags:
10251    *     1 - `_.bind`
10252    *     2 - `_.bindKey`
10253    *     4 - `_.curry` or `_.curryRight` of a bound function
10254    *     8 - `_.curry`
10255    *    16 - `_.curryRight`
10256    *    32 - `_.partial`
10257    *    64 - `_.partialRight`
10258    *   128 - `_.rearg`
10259    *   256 - `_.ary`
10260    * @param {*} [thisArg] The `this` binding of `func`.
10261    * @param {Array} [partials] The arguments to be partially applied.
10262    * @param {Array} [holders] The `partials` placeholder indexes.
10263    * @param {Array} [argPos] The argument positions of the new function.
10264    * @param {number} [ary] The arity cap of `func`.
10265    * @param {number} [arity] The arity of `func`.
10266    * @returns {Function} Returns the new wrapped function.
10267    */
10268   function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
10269     var isBindKey = bitmask & BIND_KEY_FLAG;
10270     if (!isBindKey && typeof func != 'function') {
10271       throw new TypeError(FUNC_ERROR_TEXT);
10272     }
10273     var length = partials ? partials.length : 0;
10274     if (!length) {
10275       bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
10276       partials = holders = null;
10277     }
10278     length -= (holders ? holders.length : 0);
10279     if (bitmask & PARTIAL_RIGHT_FLAG) {
10280       var partialsRight = partials,
10281           holdersRight = holders;
10282
10283       partials = holders = null;
10284     }
10285     var data = isBindKey ? null : getData(func),
10286         newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];
10287
10288     if (data) {
10289       mergeData(newData, data);
10290       bitmask = newData[1];
10291       arity = newData[9];
10292     }
10293     newData[9] = arity == null
10294       ? (isBindKey ? 0 : func.length)
10295       : (nativeMax(arity - length, 0) || 0);
10296
10297     if (bitmask == BIND_FLAG) {
10298       var result = createBindWrapper(newData[0], newData[2]);
10299     } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {
10300       result = createPartialWrapper.apply(undefined, newData);
10301     } else {
10302       result = createHybridWrapper.apply(undefined, newData);
10303     }
10304     var setter = data ? baseSetData : setData;
10305     return setter(result, newData);
10306   }
10307
10308   /**
10309    * A specialized version of `baseIsEqualDeep` for arrays with support for
10310    * partial deep comparisons.
10311    *
10312    * @private
10313    * @param {Array} array The array to compare.
10314    * @param {Array} other The other array to compare.
10315    * @param {Function} equalFunc The function to determine equivalents of values.
10316    * @param {Function} [customizer] The function to customize comparing arrays.
10317    * @param {boolean} [isLoose] Specify performing partial comparisons.
10318    * @param {Array} [stackA] Tracks traversed `value` objects.
10319    * @param {Array} [stackB] Tracks traversed `other` objects.
10320    * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
10321    */
10322   function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
10323     var index = -1,
10324         arrLength = array.length,
10325         othLength = other.length;
10326
10327     if (arrLength != othLength && !(isLoose && othLength > arrLength)) {
10328       return false;
10329     }
10330     // Ignore non-index properties.
10331     while (++index < arrLength) {
10332       var arrValue = array[index],
10333           othValue = other[index],
10334           result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
10335
10336       if (result !== undefined) {
10337         if (result) {
10338           continue;
10339         }
10340         return false;
10341       }
10342       // Recursively compare arrays (susceptible to call stack limits).
10343       if (isLoose) {
10344         if (!arraySome(other, function(othValue) {
10345               return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
10346             })) {
10347           return false;
10348         }
10349       } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {
10350         return false;
10351       }
10352     }
10353     return true;
10354   }
10355
10356   /**
10357    * A specialized version of `baseIsEqualDeep` for comparing objects of
10358    * the same `toStringTag`.
10359    *
10360    * **Note:** This function only supports comparing values with tags of
10361    * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
10362    *
10363    * @private
10364    * @param {Object} value The object to compare.
10365    * @param {Object} other The other object to compare.
10366    * @param {string} tag The `toStringTag` of the objects to compare.
10367    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10368    */
10369   function equalByTag(object, other, tag) {
10370     switch (tag) {
10371       case boolTag:
10372       case dateTag:
10373         // Coerce dates and booleans to numbers, dates to milliseconds and booleans
10374         // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.
10375         return +object == +other;
10376
10377       case errorTag:
10378         return object.name == other.name && object.message == other.message;
10379
10380       case numberTag:
10381         // Treat `NaN` vs. `NaN` as equal.
10382         return (object != +object)
10383           ? other != +other
10384           : object == +other;
10385
10386       case regexpTag:
10387       case stringTag:
10388         // Coerce regexes to strings and treat strings primitives and string
10389         // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.
10390         return object == (other + '');
10391     }
10392     return false;
10393   }
10394
10395   /**
10396    * A specialized version of `baseIsEqualDeep` for objects with support for
10397    * partial deep comparisons.
10398    *
10399    * @private
10400    * @param {Object} object The object to compare.
10401    * @param {Object} other The other object to compare.
10402    * @param {Function} equalFunc The function to determine equivalents of values.
10403    * @param {Function} [customizer] The function to customize comparing values.
10404    * @param {boolean} [isLoose] Specify performing partial comparisons.
10405    * @param {Array} [stackA] Tracks traversed `value` objects.
10406    * @param {Array} [stackB] Tracks traversed `other` objects.
10407    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10408    */
10409   function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
10410     var objProps = keys(object),
10411         objLength = objProps.length,
10412         othProps = keys(other),
10413         othLength = othProps.length;
10414
10415     if (objLength != othLength && !isLoose) {
10416       return false;
10417     }
10418     var index = objLength;
10419     while (index--) {
10420       var key = objProps[index];
10421       if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {
10422         return false;
10423       }
10424     }
10425     var skipCtor = isLoose;
10426     while (++index < objLength) {
10427       key = objProps[index];
10428       var objValue = object[key],
10429           othValue = other[key],
10430           result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;
10431
10432       // Recursively compare objects (susceptible to call stack limits).
10433       if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {
10434         return false;
10435       }
10436       skipCtor || (skipCtor = key == 'constructor');
10437     }
10438     if (!skipCtor) {
10439       var objCtor = object.constructor,
10440           othCtor = other.constructor;
10441
10442       // Non `Object` object instances with different constructors are not equal.
10443       if (objCtor != othCtor &&
10444           ('constructor' in object && 'constructor' in other) &&
10445           !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
10446             typeof othCtor == 'function' && othCtor instanceof othCtor)) {
10447         return false;
10448       }
10449     }
10450     return true;
10451   }
10452
10453   /**
10454    * Gets the appropriate "callback" function. If the `_.callback` method is
10455    * customized this function returns the custom method, otherwise it returns
10456    * the `baseCallback` function. If arguments are provided the chosen function
10457    * is invoked with them and its result is returned.
10458    *
10459    * @private
10460    * @returns {Function} Returns the chosen function or its result.
10461    */
10462   function getCallback(func, thisArg, argCount) {
10463     var result = lodash.callback || callback;
10464     result = result === callback ? baseCallback : result;
10465     return argCount ? result(func, thisArg, argCount) : result;
10466   }
10467
10468   /**
10469    * Gets metadata for `func`.
10470    *
10471    * @private
10472    * @param {Function} func The function to query.
10473    * @returns {*} Returns the metadata for `func`.
10474    */
10475   var getData = !metaMap ? noop : function(func) {
10476     return metaMap.get(func);
10477   };
10478
10479   /**
10480    * Gets the name of `func`.
10481    *
10482    * @private
10483    * @param {Function} func The function to query.
10484    * @returns {string} Returns the function name.
10485    */
10486   function getFuncName(func) {
10487     var result = func.name,
10488         array = realNames[result],
10489         length = array ? array.length : 0;
10490
10491     while (length--) {
10492       var data = array[length],
10493           otherFunc = data.func;
10494       if (otherFunc == null || otherFunc == func) {
10495         return data.name;
10496       }
10497     }
10498     return result;
10499   }
10500
10501   /**
10502    * Gets the appropriate "indexOf" function. If the `_.indexOf` method is
10503    * customized this function returns the custom method, otherwise it returns
10504    * the `baseIndexOf` function. If arguments are provided the chosen function
10505    * is invoked with them and its result is returned.
10506    *
10507    * @private
10508    * @returns {Function|number} Returns the chosen function or its result.
10509    */
10510   function getIndexOf(collection, target, fromIndex) {
10511     var result = lodash.indexOf || indexOf;
10512     result = result === indexOf ? baseIndexOf : result;
10513     return collection ? result(collection, target, fromIndex) : result;
10514   }
10515
10516   /**
10517    * Gets the "length" property value of `object`.
10518    *
10519    * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
10520    * that affects Safari on at least iOS 8.1-8.3 ARM64.
10521    *
10522    * @private
10523    * @param {Object} object The object to query.
10524    * @returns {*} Returns the "length" value.
10525    */
10526   var getLength = baseProperty('length');
10527
10528   /**
10529    * Gets the propery names, values, and compare flags of `object`.
10530    *
10531    * @private
10532    * @param {Object} object The object to query.
10533    * @returns {Array} Returns the match data of `object`.
10534    */
10535   function getMatchData(object) {
10536     var result = pairs(object),
10537         length = result.length;
10538
10539     while (length--) {
10540       result[length][2] = isStrictComparable(result[length][1]);
10541     }
10542     return result;
10543   }
10544
10545   /**
10546    * Gets the native function at `key` of `object`.
10547    *
10548    * @private
10549    * @param {Object} object The object to query.
10550    * @param {string} key The key of the method to get.
10551    * @returns {*} Returns the function if it's native, else `undefined`.
10552    */
10553   function getNative(object, key) {
10554     var value = object == null ? undefined : object[key];
10555     return isNative(value) ? value : undefined;
10556   }
10557
10558   /**
10559    * Gets the view, applying any `transforms` to the `start` and `end` positions.
10560    *
10561    * @private
10562    * @param {number} start The start of the view.
10563    * @param {number} end The end of the view.
10564    * @param {Array} [transforms] The transformations to apply to the view.
10565    * @returns {Object} Returns an object containing the `start` and `end`
10566    *  positions of the view.
10567    */
10568   function getView(start, end, transforms) {
10569     var index = -1,
10570         length = transforms ? transforms.length : 0;
10571
10572     while (++index < length) {
10573       var data = transforms[index],
10574           size = data.size;
10575
10576       switch (data.type) {
10577         case 'drop':      start += size; break;
10578         case 'dropRight': end -= size; break;
10579         case 'take':      end = nativeMin(end, start + size); break;
10580         case 'takeRight': start = nativeMax(start, end - size); break;
10581       }
10582     }
10583     return { 'start': start, 'end': end };
10584   }
10585
10586   /**
10587    * Initializes an array clone.
10588    *
10589    * @private
10590    * @param {Array} array The array to clone.
10591    * @returns {Array} Returns the initialized clone.
10592    */
10593   function initCloneArray(array) {
10594     var length = array.length,
10595         result = new array.constructor(length);
10596
10597     // Add array properties assigned by `RegExp#exec`.
10598     if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
10599       result.index = array.index;
10600       result.input = array.input;
10601     }
10602     return result;
10603   }
10604
10605   /**
10606    * Initializes an object clone.
10607    *
10608    * @private
10609    * @param {Object} object The object to clone.
10610    * @returns {Object} Returns the initialized clone.
10611    */
10612   function initCloneObject(object) {
10613     var Ctor = object.constructor;
10614     if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
10615       Ctor = Object;
10616     }
10617     return new Ctor;
10618   }
10619
10620   /**
10621    * Initializes an object clone based on its `toStringTag`.
10622    *
10623    * **Note:** This function only supports cloning values with tags of
10624    * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
10625    *
10626    * @private
10627    * @param {Object} object The object to clone.
10628    * @param {string} tag The `toStringTag` of the object to clone.
10629    * @param {boolean} [isDeep] Specify a deep clone.
10630    * @returns {Object} Returns the initialized clone.
10631    */
10632   function initCloneByTag(object, tag, isDeep) {
10633     var Ctor = object.constructor;
10634     switch (tag) {
10635       case arrayBufferTag:
10636         return bufferClone(object);
10637
10638       case boolTag:
10639       case dateTag:
10640         return new Ctor(+object);
10641
10642       case float32Tag: case float64Tag:
10643       case int8Tag: case int16Tag: case int32Tag:
10644       case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
10645         // Safari 5 mobile incorrectly has `Object` as the constructor of typed arrays.
10646         if (Ctor instanceof Ctor) {
10647           Ctor = ctorByTag[tag];
10648         }
10649         var buffer = object.buffer;
10650         return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
10651
10652       case numberTag:
10653       case stringTag:
10654         return new Ctor(object);
10655
10656       case regexpTag:
10657         var result = new Ctor(object.source, reFlags.exec(object));
10658         result.lastIndex = object.lastIndex;
10659     }
10660     return result;
10661   }
10662
10663   /**
10664    * Checks if `value` is array-like.
10665    *
10666    * @private
10667    * @param {*} value The value to check.
10668    * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
10669    */
10670   function isArrayLike(value) {
10671     return value != null && isLength(getLength(value));
10672   }
10673
10674   /**
10675    * Checks if `value` is a valid array-like index.
10676    *
10677    * @private
10678    * @param {*} value The value to check.
10679    * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
10680    * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
10681    */
10682   function isIndex(value, length) {
10683     value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
10684     length = length == null ? MAX_SAFE_INTEGER : length;
10685     return value > -1 && value % 1 == 0 && value < length;
10686   }
10687
10688   /**
10689    * Checks if the provided arguments are from an iteratee call.
10690    *
10691    * @private
10692    * @param {*} value The potential iteratee value argument.
10693    * @param {*} index The potential iteratee index or key argument.
10694    * @param {*} object The potential iteratee object argument.
10695    * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
10696    */
10697   function isIterateeCall(value, index, object) {
10698     if (!isObject(object)) {
10699       return false;
10700     }
10701     var type = typeof index;
10702     if (type == 'number'
10703         ? (isArrayLike(object) && isIndex(index, object.length))
10704         : (type == 'string' && index in object)) {
10705       var other = object[index];
10706       return value === value ? (value === other) : (other !== other);
10707     }
10708     return false;
10709   }
10710
10711   /**
10712    * Checks if `value` is a property name and not a property path.
10713    *
10714    * @private
10715    * @param {*} value The value to check.
10716    * @param {Object} [object] The object to query keys on.
10717    * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
10718    */
10719   function isKey(value, object) {
10720     var type = typeof value;
10721     if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
10722       return true;
10723     }
10724     if (isArray(value)) {
10725       return false;
10726     }
10727     var result = !reIsDeepProp.test(value);
10728     return result || (object != null && value in toObject(object));
10729   }
10730
10731   /**
10732    * Checks if `func` has a lazy counterpart.
10733    *
10734    * @private
10735    * @param {Function} func The function to check.
10736    * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`.
10737    */
10738   function isLaziable(func) {
10739     var funcName = getFuncName(func);
10740     if (!(funcName in LazyWrapper.prototype)) {
10741       return false;
10742     }
10743     var other = lodash[funcName];
10744     if (func === other) {
10745       return true;
10746     }
10747     var data = getData(other);
10748     return !!data && func === data[0];
10749   }
10750
10751   /**
10752    * Checks if `value` is a valid array-like length.
10753    *
10754    * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
10755    *
10756    * @private
10757    * @param {*} value The value to check.
10758    * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
10759    */
10760   function isLength(value) {
10761     return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
10762   }
10763
10764   /**
10765    * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
10766    *
10767    * @private
10768    * @param {*} value The value to check.
10769    * @returns {boolean} Returns `true` if `value` if suitable for strict
10770    *  equality comparisons, else `false`.
10771    */
10772   function isStrictComparable(value) {
10773     return value === value && !isObject(value);
10774   }
10775
10776   /**
10777    * Merges the function metadata of `source` into `data`.
10778    *
10779    * Merging metadata reduces the number of wrappers required to invoke a function.
10780    * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
10781    * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`
10782    * augment function arguments, making the order in which they are executed important,
10783    * preventing the merging of metadata. However, we make an exception for a safe
10784    * common case where curried functions have `_.ary` and or `_.rearg` applied.
10785    *
10786    * @private
10787    * @param {Array} data The destination metadata.
10788    * @param {Array} source The source metadata.
10789    * @returns {Array} Returns `data`.
10790    */
10791   function mergeData(data, source) {
10792     var bitmask = data[1],
10793         srcBitmask = source[1],
10794         newBitmask = bitmask | srcBitmask,
10795         isCommon = newBitmask < ARY_FLAG;
10796
10797     var isCombo =
10798       (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) ||
10799       (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) ||
10800       (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG);
10801
10802     // Exit early if metadata can't be merged.
10803     if (!(isCommon || isCombo)) {
10804       return data;
10805     }
10806     // Use source `thisArg` if available.
10807     if (srcBitmask & BIND_FLAG) {
10808       data[2] = source[2];
10809       // Set when currying a bound function.
10810       newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;
10811     }
10812     // Compose partial arguments.
10813     var value = source[3];
10814     if (value) {
10815       var partials = data[3];
10816       data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);
10817       data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);
10818     }
10819     // Compose partial right arguments.
10820     value = source[5];
10821     if (value) {
10822       partials = data[5];
10823       data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);
10824       data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);
10825     }
10826     // Use source `argPos` if available.
10827     value = source[7];
10828     if (value) {
10829       data[7] = arrayCopy(value);
10830     }
10831     // Use source `ary` if it's smaller.
10832     if (srcBitmask & ARY_FLAG) {
10833       data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
10834     }
10835     // Use source `arity` if one is not provided.
10836     if (data[9] == null) {
10837       data[9] = source[9];
10838     }
10839     // Use source `func` and merge bitmasks.
10840     data[0] = source[0];
10841     data[1] = newBitmask;
10842
10843     return data;
10844   }
10845
10846   /**
10847    * A specialized version of `_.pick` which picks `object` properties specified
10848    * by `props`.
10849    *
10850    * @private
10851    * @param {Object} object The source object.
10852    * @param {string[]} props The property names to pick.
10853    * @returns {Object} Returns the new object.
10854    */
10855   function pickByArray(object, props) {
10856     object = toObject(object);
10857
10858     var index = -1,
10859         length = props.length,
10860         result = {};
10861
10862     while (++index < length) {
10863       var key = props[index];
10864       if (key in object) {
10865         result[key] = object[key];
10866       }
10867     }
10868     return result;
10869   }
10870
10871   /**
10872    * A specialized version of `_.pick` which picks `object` properties `predicate`
10873    * returns truthy for.
10874    *
10875    * @private
10876    * @param {Object} object The source object.
10877    * @param {Function} predicate The function invoked per iteration.
10878    * @returns {Object} Returns the new object.
10879    */
10880   function pickByCallback(object, predicate) {
10881     var result = {};
10882     baseForIn(object, function(value, key, object) {
10883       if (predicate(value, key, object)) {
10884         result[key] = value;
10885       }
10886     });
10887     return result;
10888   }
10889
10890   /**
10891    * Reorder `array` according to the specified indexes where the element at
10892    * the first index is assigned as the first element, the element at
10893    * the second index is assigned as the second element, and so on.
10894    *
10895    * @private
10896    * @param {Array} array The array to reorder.
10897    * @param {Array} indexes The arranged array indexes.
10898    * @returns {Array} Returns `array`.
10899    */
10900   function reorder(array, indexes) {
10901     var arrLength = array.length,
10902         length = nativeMin(indexes.length, arrLength),
10903         oldArray = arrayCopy(array);
10904
10905     while (length--) {
10906       var index = indexes[length];
10907       array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
10908     }
10909     return array;
10910   }
10911
10912   /**
10913    * Sets metadata for `func`.
10914    *
10915    * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
10916    * period of time, it will trip its breaker and transition to an identity function
10917    * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)
10918    * for more details.
10919    *
10920    * @private
10921    * @param {Function} func The function to associate metadata with.
10922    * @param {*} data The metadata.
10923    * @returns {Function} Returns `func`.
10924    */
10925   var setData = (function() {
10926     var count = 0,
10927         lastCalled = 0;
10928
10929     return function(key, value) {
10930       var stamp = now(),
10931           remaining = HOT_SPAN - (stamp - lastCalled);
10932
10933       lastCalled = stamp;
10934       if (remaining > 0) {
10935         if (++count >= HOT_COUNT) {
10936           return key;
10937         }
10938       } else {
10939         count = 0;
10940       }
10941       return baseSetData(key, value);
10942     };
10943   }());
10944
10945   /**
10946    * A fallback implementation of `_.isPlainObject` which checks if `value`
10947    * is an object created by the `Object` constructor or has a `[[Prototype]]`
10948    * of `null`.
10949    *
10950    * @private
10951    * @param {*} value The value to check.
10952    * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
10953    */
10954   function shimIsPlainObject(value) {
10955     var Ctor,
10956         support = lodash.support;
10957
10958     // Exit early for non `Object` objects.
10959     if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) ||
10960         (!hasOwnProperty.call(value, 'constructor') &&
10961           (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) ||
10962         (!support.argsTag && isArguments(value))) {
10963       return false;
10964     }
10965     // IE < 9 iterates inherited properties before own properties. If the first
10966     // iterated property is an object's own property then there are no inherited
10967     // enumerable properties.
10968     var result;
10969     if (support.ownLast) {
10970       baseForIn(value, function(subValue, key, object) {
10971         result = hasOwnProperty.call(object, key);
10972         return false;
10973       });
10974       return result !== false;
10975     }
10976     // In most environments an object's own properties are iterated before
10977     // its inherited properties. If the last iterated property is an object's
10978     // own property then there are no inherited enumerable properties.
10979     baseForIn(value, function(subValue, key) {
10980       result = key;
10981     });
10982     return result === undefined || hasOwnProperty.call(value, result);
10983   }
10984
10985   /**
10986    * A fallback implementation of `Object.keys` which creates an array of the
10987    * own enumerable property names of `object`.
10988    *
10989    * @private
10990    * @param {Object} object The object to query.
10991    * @returns {Array} Returns the array of property names.
10992    */
10993   function shimKeys(object) {
10994     var props = keysIn(object),
10995         propsLength = props.length,
10996         length = propsLength && object.length;
10997
10998     var allowIndexes = !!length && isLength(length) &&
10999       (isArray(object) || isArguments(object) || isString(object));
11000
11001     var index = -1,
11002         result = [];
11003
11004     while (++index < propsLength) {
11005       var key = props[index];
11006       if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
11007         result.push(key);
11008       }
11009     }
11010     return result;
11011   }
11012
11013   /**
11014    * Converts `value` to an object if it's not one.
11015    *
11016    * @private
11017    * @param {*} value The value to process.
11018    * @returns {Object} Returns the object.
11019    */
11020   function toObject(value) {
11021     if (lodash.support.unindexedChars && isString(value)) {
11022       var index = -1,
11023           length = value.length,
11024           result = Object(value);
11025
11026       while (++index < length) {
11027         result[index] = value.charAt(index);
11028       }
11029       return result;
11030     }
11031     return isObject(value) ? value : Object(value);
11032   }
11033
11034   /**
11035    * Converts `value` to property path array if it's not one.
11036    *
11037    * @private
11038    * @param {*} value The value to process.
11039    * @returns {Array} Returns the property path array.
11040    */
11041   function toPath(value) {
11042     if (isArray(value)) {
11043       return value;
11044     }
11045     var result = [];
11046     baseToString(value).replace(rePropName, function(match, number, quote, string) {
11047       result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
11048     });
11049     return result;
11050   }
11051
11052   /**
11053    * Creates a clone of `wrapper`.
11054    *
11055    * @private
11056    * @param {Object} wrapper The wrapper to clone.
11057    * @returns {Object} Returns the cloned wrapper.
11058    */
11059   function wrapperClone(wrapper) {
11060     return wrapper instanceof LazyWrapper
11061       ? wrapper.clone()
11062       : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));
11063   }
11064
11065   /*------------------------------------------------------------------------*/
11066
11067   /**
11068    * Creates an array of elements split into groups the length of `size`.
11069    * If `collection` can't be split evenly, the final chunk will be the remaining
11070    * elements.
11071    *
11072    * @static
11073    * @memberOf _
11074    * @category Array
11075    * @param {Array} array The array to process.
11076    * @param {number} [size=1] The length of each chunk.
11077    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
11078    * @returns {Array} Returns the new array containing chunks.
11079    * @example
11080    *
11081    * _.chunk(['a', 'b', 'c', 'd'], 2);
11082    * // => [['a', 'b'], ['c', 'd']]
11083    *
11084    * _.chunk(['a', 'b', 'c', 'd'], 3);
11085    * // => [['a', 'b', 'c'], ['d']]
11086    */
11087   function chunk(array, size, guard) {
11088     if (guard ? isIterateeCall(array, size, guard) : size == null) {
11089       size = 1;
11090     } else {
11091       size = nativeMax(+size || 1, 1);
11092     }
11093     var index = 0,
11094         length = array ? array.length : 0,
11095         resIndex = -1,
11096         result = Array(ceil(length / size));
11097
11098     while (index < length) {
11099       result[++resIndex] = baseSlice(array, index, (index += size));
11100     }
11101     return result;
11102   }
11103
11104   /**
11105    * Creates an array with all falsey values removed. The values `false`, `null`,
11106    * `0`, `""`, `undefined`, and `NaN` are falsey.
11107    *
11108    * @static
11109    * @memberOf _
11110    * @category Array
11111    * @param {Array} array The array to compact.
11112    * @returns {Array} Returns the new array of filtered values.
11113    * @example
11114    *
11115    * _.compact([0, 1, false, 2, '', 3]);
11116    * // => [1, 2, 3]
11117    */
11118   function compact(array) {
11119     var index = -1,
11120         length = array ? array.length : 0,
11121         resIndex = -1,
11122         result = [];
11123
11124     while (++index < length) {
11125       var value = array[index];
11126       if (value) {
11127         result[++resIndex] = value;
11128       }
11129     }
11130     return result;
11131   }
11132
11133   /**
11134    * Creates an array of unique `array` values not included in the other
11135    * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11136    * for equality comparisons.
11137    *
11138    * @static
11139    * @memberOf _
11140    * @category Array
11141    * @param {Array} array The array to inspect.
11142    * @param {...Array} [values] The arrays of values to exclude.
11143    * @returns {Array} Returns the new array of filtered values.
11144    * @example
11145    *
11146    * _.difference([1, 2, 3], [4, 2]);
11147    * // => [1, 3]
11148    */
11149   var difference = restParam(function(array, values) {
11150     return isArrayLike(array)
11151       ? baseDifference(array, baseFlatten(values, false, true))
11152       : [];
11153   });
11154
11155   /**
11156    * Gets the first element of `array`.
11157    *
11158    * @static
11159    * @memberOf _
11160    * @alias head
11161    * @category Array
11162    * @param {Array} array The array to query.
11163    * @returns {*} Returns the first element of `array`.
11164    * @example
11165    *
11166    * _.first([1, 2, 3]);
11167    * // => 1
11168    *
11169    * _.first([]);
11170    * // => undefined
11171    */
11172   function first(array) {
11173     return array ? array[0] : undefined;
11174   }
11175
11176   /**
11177    * Flattens a nested array. If `isDeep` is `true` the array is recursively
11178    * flattened, otherwise it is only flattened a single level.
11179    *
11180    * @static
11181    * @memberOf _
11182    * @category Array
11183    * @param {Array} array The array to flatten.
11184    * @param {boolean} [isDeep] Specify a deep flatten.
11185    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
11186    * @returns {Array} Returns the new flattened array.
11187    * @example
11188    *
11189    * _.flatten([1, [2, 3, [4]]]);
11190    * // => [1, 2, 3, [4]]
11191    *
11192    * // using `isDeep`
11193    * _.flatten([1, [2, 3, [4]]], true);
11194    * // => [1, 2, 3, 4]
11195    */
11196   function flatten(array, isDeep, guard) {
11197     var length = array ? array.length : 0;
11198     if (guard && isIterateeCall(array, isDeep, guard)) {
11199       isDeep = false;
11200     }
11201     return length ? baseFlatten(array, isDeep) : [];
11202   }
11203
11204   /**
11205    * Gets the index at which the first occurrence of `value` is found in `array`
11206    * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11207    * for equality comparisons. If `fromIndex` is negative, it is used as the offset
11208    * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
11209    * performs a faster binary search.
11210    *
11211    * @static
11212    * @memberOf _
11213    * @category Array
11214    * @param {Array} array The array to search.
11215    * @param {*} value The value to search for.
11216    * @param {boolean|number} [fromIndex=0] The index to search from or `true`
11217    *  to perform a binary search on a sorted array.
11218    * @returns {number} Returns the index of the matched value, else `-1`.
11219    * @example
11220    *
11221    * _.indexOf([1, 2, 1, 2], 2);
11222    * // => 1
11223    *
11224    * // using `fromIndex`
11225    * _.indexOf([1, 2, 1, 2], 2, 2);
11226    * // => 3
11227    *
11228    * // performing a binary search
11229    * _.indexOf([1, 1, 2, 2], 2, true);
11230    * // => 2
11231    */
11232   function indexOf(array, value, fromIndex) {
11233     var length = array ? array.length : 0;
11234     if (!length) {
11235       return -1;
11236     }
11237     if (typeof fromIndex == 'number') {
11238       fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
11239     } else if (fromIndex) {
11240       var index = binaryIndex(array, value),
11241           other = array[index];
11242
11243       if (value === value ? (value === other) : (other !== other)) {
11244         return index;
11245       }
11246       return -1;
11247     }
11248     return baseIndexOf(array, value, fromIndex || 0);
11249   }
11250
11251   /**
11252    * Creates an array of unique values that are included in all of the provided
11253    * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11254    * for equality comparisons.
11255    *
11256    * @static
11257    * @memberOf _
11258    * @category Array
11259    * @param {...Array} [arrays] The arrays to inspect.
11260    * @returns {Array} Returns the new array of shared values.
11261    * @example
11262    * _.intersection([1, 2], [4, 2], [2, 1]);
11263    * // => [2]
11264    */
11265   var intersection = restParam(function(arrays) {
11266     var othLength = arrays.length,
11267         othIndex = othLength,
11268         caches = Array(length),
11269         indexOf = getIndexOf(),
11270         isCommon = indexOf == baseIndexOf,
11271         result = [];
11272
11273     while (othIndex--) {
11274       var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];
11275       caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;
11276     }
11277     var array = arrays[0],
11278         index = -1,
11279         length = array ? array.length : 0,
11280         seen = caches[0];
11281
11282     outer:
11283     while (++index < length) {
11284       value = array[index];
11285       if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
11286         var othIndex = othLength;
11287         while (--othIndex) {
11288           var cache = caches[othIndex];
11289           if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {
11290             continue outer;
11291           }
11292         }
11293         if (seen) {
11294           seen.push(value);
11295         }
11296         result.push(value);
11297       }
11298     }
11299     return result;
11300   });
11301
11302   /**
11303    * Gets the last element of `array`.
11304    *
11305    * @static
11306    * @memberOf _
11307    * @category Array
11308    * @param {Array} array The array to query.
11309    * @returns {*} Returns the last element of `array`.
11310    * @example
11311    *
11312    * _.last([1, 2, 3]);
11313    * // => 3
11314    */
11315   function last(array) {
11316     var length = array ? array.length : 0;
11317     return length ? array[length - 1] : undefined;
11318   }
11319
11320   /**
11321    * Creates an array of unique values, in order, from all of the provided arrays
11322    * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11323    * for equality comparisons.
11324    *
11325    * @static
11326    * @memberOf _
11327    * @category Array
11328    * @param {...Array} [arrays] The arrays to inspect.
11329    * @returns {Array} Returns the new array of combined values.
11330    * @example
11331    *
11332    * _.union([1, 2], [4, 2], [2, 1]);
11333    * // => [1, 2, 4]
11334    */
11335   var union = restParam(function(arrays) {
11336     return baseUniq(baseFlatten(arrays, false, true));
11337   });
11338
11339   /**
11340    * Creates a duplicate-free version of an array, using
11341    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11342    * for equality comparisons, in which only the first occurence of each element
11343    * is kept. Providing `true` for `isSorted` performs a faster search algorithm
11344    * for sorted arrays. If an iteratee function is provided it is invoked for
11345    * each element in the array to generate the criterion by which uniqueness
11346    * is computed. The `iteratee` is bound to `thisArg` and invoked with three
11347    * arguments: (value, index, array).
11348    *
11349    * If a property name is provided for `iteratee` the created `_.property`
11350    * style callback returns the property value of the given element.
11351    *
11352    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11353    * style callback returns `true` for elements that have a matching property
11354    * value, else `false`.
11355    *
11356    * If an object is provided for `iteratee` the created `_.matches` style
11357    * callback returns `true` for elements that have the properties of the given
11358    * object, else `false`.
11359    *
11360    * @static
11361    * @memberOf _
11362    * @alias unique
11363    * @category Array
11364    * @param {Array} array The array to inspect.
11365    * @param {boolean} [isSorted] Specify the array is sorted.
11366    * @param {Function|Object|string} [iteratee] The function invoked per iteration.
11367    * @param {*} [thisArg] The `this` binding of `iteratee`.
11368    * @returns {Array} Returns the new duplicate-value-free array.
11369    * @example
11370    *
11371    * _.uniq([2, 1, 2]);
11372    * // => [2, 1]
11373    *
11374    * // using `isSorted`
11375    * _.uniq([1, 1, 2], true);
11376    * // => [1, 2]
11377    *
11378    * // using an iteratee function
11379    * _.uniq([1, 2.5, 1.5, 2], function(n) {
11380    *   return this.floor(n);
11381    * }, Math);
11382    * // => [1, 2.5]
11383    *
11384    * // using the `_.property` callback shorthand
11385    * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
11386    * // => [{ 'x': 1 }, { 'x': 2 }]
11387    */
11388   function uniq(array, isSorted, iteratee, thisArg) {
11389     var length = array ? array.length : 0;
11390     if (!length) {
11391       return [];
11392     }
11393     if (isSorted != null && typeof isSorted != 'boolean') {
11394       thisArg = iteratee;
11395       iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
11396       isSorted = false;
11397     }
11398     var callback = getCallback();
11399     if (!(iteratee == null && callback === baseCallback)) {
11400       iteratee = callback(iteratee, thisArg, 3);
11401     }
11402     return (isSorted && getIndexOf() == baseIndexOf)
11403       ? sortedUniq(array, iteratee)
11404       : baseUniq(array, iteratee);
11405   }
11406
11407   /**
11408    * Creates an array excluding all provided values using
11409    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11410    * for equality comparisons.
11411    *
11412    * @static
11413    * @memberOf _
11414    * @category Array
11415    * @param {Array} array The array to filter.
11416    * @param {...*} [values] The values to exclude.
11417    * @returns {Array} Returns the new array of filtered values.
11418    * @example
11419    *
11420    * _.without([1, 2, 1, 3], 1, 2);
11421    * // => [3]
11422    */
11423   var without = restParam(function(array, values) {
11424     return isArrayLike(array)
11425       ? baseDifference(array, values)
11426       : [];
11427   });
11428
11429   /*------------------------------------------------------------------------*/
11430
11431   /**
11432    * Creates a `lodash` object that wraps `value` with explicit method
11433    * chaining enabled.
11434    *
11435    * @static
11436    * @memberOf _
11437    * @category Chain
11438    * @param {*} value The value to wrap.
11439    * @returns {Object} Returns the new `lodash` wrapper instance.
11440    * @example
11441    *
11442    * var users = [
11443    *   { 'user': 'barney',  'age': 36 },
11444    *   { 'user': 'fred',    'age': 40 },
11445    *   { 'user': 'pebbles', 'age': 1 }
11446    * ];
11447    *
11448    * var youngest = _.chain(users)
11449    *   .sortBy('age')
11450    *   .map(function(chr) {
11451    *     return chr.user + ' is ' + chr.age;
11452    *   })
11453    *   .first()
11454    *   .value();
11455    * // => 'pebbles is 1'
11456    */
11457   function chain(value) {
11458     var result = lodash(value);
11459     result.__chain__ = true;
11460     return result;
11461   }
11462
11463   /**
11464    * This method invokes `interceptor` and returns `value`. The interceptor is
11465    * bound to `thisArg` and invoked with one argument; (value). The purpose of
11466    * this method is to "tap into" a method chain in order to perform operations
11467    * on intermediate results within the chain.
11468    *
11469    * @static
11470    * @memberOf _
11471    * @category Chain
11472    * @param {*} value The value to provide to `interceptor`.
11473    * @param {Function} interceptor The function to invoke.
11474    * @param {*} [thisArg] The `this` binding of `interceptor`.
11475    * @returns {*} Returns `value`.
11476    * @example
11477    *
11478    * _([1, 2, 3])
11479    *  .tap(function(array) {
11480    *    array.pop();
11481    *  })
11482    *  .reverse()
11483    *  .value();
11484    * // => [2, 1]
11485    */
11486   function tap(value, interceptor, thisArg) {
11487     interceptor.call(thisArg, value);
11488     return value;
11489   }
11490
11491   /**
11492    * This method is like `_.tap` except that it returns the result of `interceptor`.
11493    *
11494    * @static
11495    * @memberOf _
11496    * @category Chain
11497    * @param {*} value The value to provide to `interceptor`.
11498    * @param {Function} interceptor The function to invoke.
11499    * @param {*} [thisArg] The `this` binding of `interceptor`.
11500    * @returns {*} Returns the result of `interceptor`.
11501    * @example
11502    *
11503    * _('  abc  ')
11504    *  .chain()
11505    *  .trim()
11506    *  .thru(function(value) {
11507    *    return [value];
11508    *  })
11509    *  .value();
11510    * // => ['abc']
11511    */
11512   function thru(value, interceptor, thisArg) {
11513     return interceptor.call(thisArg, value);
11514   }
11515
11516   /**
11517    * Enables explicit method chaining on the wrapper object.
11518    *
11519    * @name chain
11520    * @memberOf _
11521    * @category Chain
11522    * @returns {Object} Returns the new `lodash` wrapper instance.
11523    * @example
11524    *
11525    * var users = [
11526    *   { 'user': 'barney', 'age': 36 },
11527    *   { 'user': 'fred',   'age': 40 }
11528    * ];
11529    *
11530    * // without explicit chaining
11531    * _(users).first();
11532    * // => { 'user': 'barney', 'age': 36 }
11533    *
11534    * // with explicit chaining
11535    * _(users).chain()
11536    *   .first()
11537    *   .pick('user')
11538    *   .value();
11539    * // => { 'user': 'barney' }
11540    */
11541   function wrapperChain() {
11542     return chain(this);
11543   }
11544
11545   /**
11546    * Executes the chained sequence and returns the wrapped result.
11547    *
11548    * @name commit
11549    * @memberOf _
11550    * @category Chain
11551    * @returns {Object} Returns the new `lodash` wrapper instance.
11552    * @example
11553    *
11554    * var array = [1, 2];
11555    * var wrapper = _(array).push(3);
11556    *
11557    * console.log(array);
11558    * // => [1, 2]
11559    *
11560    * wrapper = wrapper.commit();
11561    * console.log(array);
11562    * // => [1, 2, 3]
11563    *
11564    * wrapper.last();
11565    * // => 3
11566    *
11567    * console.log(array);
11568    * // => [1, 2, 3]
11569    */
11570   function wrapperCommit() {
11571     return new LodashWrapper(this.value(), this.__chain__);
11572   }
11573
11574   /**
11575    * Creates a clone of the chained sequence planting `value` as the wrapped value.
11576    *
11577    * @name plant
11578    * @memberOf _
11579    * @category Chain
11580    * @returns {Object} Returns the new `lodash` wrapper instance.
11581    * @example
11582    *
11583    * var array = [1, 2];
11584    * var wrapper = _(array).map(function(value) {
11585    *   return Math.pow(value, 2);
11586    * });
11587    *
11588    * var other = [3, 4];
11589    * var otherWrapper = wrapper.plant(other);
11590    *
11591    * otherWrapper.value();
11592    * // => [9, 16]
11593    *
11594    * wrapper.value();
11595    * // => [1, 4]
11596    */
11597   function wrapperPlant(value) {
11598     var result,
11599         parent = this;
11600
11601     while (parent instanceof baseLodash) {
11602       var clone = wrapperClone(parent);
11603       if (result) {
11604         previous.__wrapped__ = clone;
11605       } else {
11606         result = clone;
11607       }
11608       var previous = clone;
11609       parent = parent.__wrapped__;
11610     }
11611     previous.__wrapped__ = value;
11612     return result;
11613   }
11614
11615   /**
11616    * Reverses the wrapped array so the first element becomes the last, the
11617    * second element becomes the second to last, and so on.
11618    *
11619    * **Note:** This method mutates the wrapped array.
11620    *
11621    * @name reverse
11622    * @memberOf _
11623    * @category Chain
11624    * @returns {Object} Returns the new reversed `lodash` wrapper instance.
11625    * @example
11626    *
11627    * var array = [1, 2, 3];
11628    *
11629    * _(array).reverse().value()
11630    * // => [3, 2, 1]
11631    *
11632    * console.log(array);
11633    * // => [3, 2, 1]
11634    */
11635   function wrapperReverse() {
11636     var value = this.__wrapped__;
11637     if (value instanceof LazyWrapper) {
11638       if (this.__actions__.length) {
11639         value = new LazyWrapper(this);
11640       }
11641       return new LodashWrapper(value.reverse(), this.__chain__);
11642     }
11643     return this.thru(function(value) {
11644       return value.reverse();
11645     });
11646   }
11647
11648   /**
11649    * Produces the result of coercing the unwrapped value to a string.
11650    *
11651    * @name toString
11652    * @memberOf _
11653    * @category Chain
11654    * @returns {string} Returns the coerced string value.
11655    * @example
11656    *
11657    * _([1, 2, 3]).toString();
11658    * // => '1,2,3'
11659    */
11660   function wrapperToString() {
11661     return (this.value() + '');
11662   }
11663
11664   /**
11665    * Executes the chained sequence to extract the unwrapped value.
11666    *
11667    * @name value
11668    * @memberOf _
11669    * @alias run, toJSON, valueOf
11670    * @category Chain
11671    * @returns {*} Returns the resolved unwrapped value.
11672    * @example
11673    *
11674    * _([1, 2, 3]).value();
11675    * // => [1, 2, 3]
11676    */
11677   function wrapperValue() {
11678     return baseWrapperValue(this.__wrapped__, this.__actions__);
11679   }
11680
11681   /*------------------------------------------------------------------------*/
11682
11683   /**
11684    * Checks if `predicate` returns truthy for **all** elements of `collection`.
11685    * The predicate is bound to `thisArg` and invoked with three arguments:
11686    * (value, index|key, collection).
11687    *
11688    * If a property name is provided for `predicate` the created `_.property`
11689    * style callback returns the property value of the given element.
11690    *
11691    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11692    * style callback returns `true` for elements that have a matching property
11693    * value, else `false`.
11694    *
11695    * If an object is provided for `predicate` the created `_.matches` style
11696    * callback returns `true` for elements that have the properties of the given
11697    * object, else `false`.
11698    *
11699    * @static
11700    * @memberOf _
11701    * @alias all
11702    * @category Collection
11703    * @param {Array|Object|string} collection The collection to iterate over.
11704    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11705    *  per iteration.
11706    * @param {*} [thisArg] The `this` binding of `predicate`.
11707    * @returns {boolean} Returns `true` if all elements pass the predicate check,
11708    *  else `false`.
11709    * @example
11710    *
11711    * _.every([true, 1, null, 'yes'], Boolean);
11712    * // => false
11713    *
11714    * var users = [
11715    *   { 'user': 'barney', 'active': false },
11716    *   { 'user': 'fred',   'active': false }
11717    * ];
11718    *
11719    * // using the `_.matches` callback shorthand
11720    * _.every(users, { 'user': 'barney', 'active': false });
11721    * // => false
11722    *
11723    * // using the `_.matchesProperty` callback shorthand
11724    * _.every(users, 'active', false);
11725    * // => true
11726    *
11727    * // using the `_.property` callback shorthand
11728    * _.every(users, 'active');
11729    * // => false
11730    */
11731   function every(collection, predicate, thisArg) {
11732     var func = isArray(collection) ? arrayEvery : baseEvery;
11733     if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
11734       predicate = null;
11735     }
11736     if (typeof predicate != 'function' || thisArg !== undefined) {
11737       predicate = getCallback(predicate, thisArg, 3);
11738     }
11739     return func(collection, predicate);
11740   }
11741
11742   /**
11743    * Iterates over elements of `collection`, returning an array of all elements
11744    * `predicate` returns truthy for. The predicate is bound to `thisArg` and
11745    * invoked with three arguments: (value, index|key, collection).
11746    *
11747    * If a property name is provided for `predicate` the created `_.property`
11748    * style callback returns the property value of the given element.
11749    *
11750    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11751    * style callback returns `true` for elements that have a matching property
11752    * value, else `false`.
11753    *
11754    * If an object is provided for `predicate` the created `_.matches` style
11755    * callback returns `true` for elements that have the properties of the given
11756    * object, else `false`.
11757    *
11758    * @static
11759    * @memberOf _
11760    * @alias select
11761    * @category Collection
11762    * @param {Array|Object|string} collection The collection to iterate over.
11763    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11764    *  per iteration.
11765    * @param {*} [thisArg] The `this` binding of `predicate`.
11766    * @returns {Array} Returns the new filtered array.
11767    * @example
11768    *
11769    * _.filter([4, 5, 6], function(n) {
11770    *   return n % 2 == 0;
11771    * });
11772    * // => [4, 6]
11773    *
11774    * var users = [
11775    *   { 'user': 'barney', 'age': 36, 'active': true },
11776    *   { 'user': 'fred',   'age': 40, 'active': false }
11777    * ];
11778    *
11779    * // using the `_.matches` callback shorthand
11780    * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
11781    * // => ['barney']
11782    *
11783    * // using the `_.matchesProperty` callback shorthand
11784    * _.pluck(_.filter(users, 'active', false), 'user');
11785    * // => ['fred']
11786    *
11787    * // using the `_.property` callback shorthand
11788    * _.pluck(_.filter(users, 'active'), 'user');
11789    * // => ['barney']
11790    */
11791   function filter(collection, predicate, thisArg) {
11792     var func = isArray(collection) ? arrayFilter : baseFilter;
11793     predicate = getCallback(predicate, thisArg, 3);
11794     return func(collection, predicate);
11795   }
11796
11797   /**
11798    * Iterates over elements of `collection`, returning the first element
11799    * `predicate` returns truthy for. The predicate is bound to `thisArg` and
11800    * invoked with three arguments: (value, index|key, collection).
11801    *
11802    * If a property name is provided for `predicate` the created `_.property`
11803    * style callback returns the property value of the given element.
11804    *
11805    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11806    * style callback returns `true` for elements that have a matching property
11807    * value, else `false`.
11808    *
11809    * If an object is provided for `predicate` the created `_.matches` style
11810    * callback returns `true` for elements that have the properties of the given
11811    * object, else `false`.
11812    *
11813    * @static
11814    * @memberOf _
11815    * @alias detect
11816    * @category Collection
11817    * @param {Array|Object|string} collection The collection to search.
11818    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11819    *  per iteration.
11820    * @param {*} [thisArg] The `this` binding of `predicate`.
11821    * @returns {*} Returns the matched element, else `undefined`.
11822    * @example
11823    *
11824    * var users = [
11825    *   { 'user': 'barney',  'age': 36, 'active': true },
11826    *   { 'user': 'fred',    'age': 40, 'active': false },
11827    *   { 'user': 'pebbles', 'age': 1,  'active': true }
11828    * ];
11829    *
11830    * _.result(_.find(users, function(chr) {
11831    *   return chr.age < 40;
11832    * }), 'user');
11833    * // => 'barney'
11834    *
11835    * // using the `_.matches` callback shorthand
11836    * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
11837    * // => 'pebbles'
11838    *
11839    * // using the `_.matchesProperty` callback shorthand
11840    * _.result(_.find(users, 'active', false), 'user');
11841    * // => 'fred'
11842    *
11843    * // using the `_.property` callback shorthand
11844    * _.result(_.find(users, 'active'), 'user');
11845    * // => 'barney'
11846    */
11847   var find = createFind(baseEach);
11848
11849   /**
11850    * Iterates over elements of `collection` invoking `iteratee` for each element.
11851    * The `iteratee` is bound to `thisArg` and invoked with three arguments:
11852    * (value, index|key, collection). Iteratee functions may exit iteration early
11853    * by explicitly returning `false`.
11854    *
11855    * **Note:** As with other "Collections" methods, objects with a "length" property
11856    * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
11857    * may be used for object iteration.
11858    *
11859    * @static
11860    * @memberOf _
11861    * @alias each
11862    * @category Collection
11863    * @param {Array|Object|string} collection The collection to iterate over.
11864    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
11865    * @param {*} [thisArg] The `this` binding of `iteratee`.
11866    * @returns {Array|Object|string} Returns `collection`.
11867    * @example
11868    *
11869    * _([1, 2]).forEach(function(n) {
11870    *   console.log(n);
11871    * }).value();
11872    * // => logs each value from left to right and returns the array
11873    *
11874    * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
11875    *   console.log(n, key);
11876    * });
11877    * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
11878    */
11879   var forEach = createForEach(arrayEach, baseEach);
11880
11881   /**
11882    * Creates an object composed of keys generated from the results of running
11883    * each element of `collection` through `iteratee`. The corresponding value
11884    * of each key is an array of the elements responsible for generating the key.
11885    * The `iteratee` is bound to `thisArg` and invoked with three arguments:
11886    * (value, index|key, collection).
11887    *
11888    * If a property name is provided for `iteratee` the created `_.property`
11889    * style callback returns the property value of the given element.
11890    *
11891    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11892    * style callback returns `true` for elements that have a matching property
11893    * value, else `false`.
11894    *
11895    * If an object is provided for `iteratee` the created `_.matches` style
11896    * callback returns `true` for elements that have the properties of the given
11897    * object, else `false`.
11898    *
11899    * @static
11900    * @memberOf _
11901    * @category Collection
11902    * @param {Array|Object|string} collection The collection to iterate over.
11903    * @param {Function|Object|string} [iteratee=_.identity] The function invoked
11904    *  per iteration.
11905    * @param {*} [thisArg] The `this` binding of `iteratee`.
11906    * @returns {Object} Returns the composed aggregate object.
11907    * @example
11908    *
11909    * _.groupBy([4.2, 6.1, 6.4], function(n) {
11910    *   return Math.floor(n);
11911    * });
11912    * // => { '4': [4.2], '6': [6.1, 6.4] }
11913    *
11914    * _.groupBy([4.2, 6.1, 6.4], function(n) {
11915    *   return this.floor(n);
11916    * }, Math);
11917    * // => { '4': [4.2], '6': [6.1, 6.4] }
11918    *
11919    * // using the `_.property` callback shorthand
11920    * _.groupBy(['one', 'two', 'three'], 'length');
11921    * // => { '3': ['one', 'two'], '5': ['three'] }
11922    */
11923   var groupBy = createAggregator(function(result, value, key) {
11924     if (hasOwnProperty.call(result, key)) {
11925       result[key].push(value);
11926     } else {
11927       result[key] = [value];
11928     }
11929   });
11930
11931   /**
11932    * Checks if `value` is in `collection` using
11933    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11934    * for equality comparisons. If `fromIndex` is negative, it is used as the offset
11935    * from the end of `collection`.
11936    *
11937    * @static
11938    * @memberOf _
11939    * @alias contains, include
11940    * @category Collection
11941    * @param {Array|Object|string} collection The collection to search.
11942    * @param {*} target The value to search for.
11943    * @param {number} [fromIndex=0] The index to search from.
11944    * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
11945    * @returns {boolean} Returns `true` if a matching element is found, else `false`.
11946    * @example
11947    *
11948    * _.includes([1, 2, 3], 1);
11949    * // => true
11950    *
11951    * _.includes([1, 2, 3], 1, 2);
11952    * // => false
11953    *
11954    * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');
11955    * // => true
11956    *
11957    * _.includes('pebbles', 'eb');
11958    * // => true
11959    */
11960   function includes(collection, target, fromIndex, guard) {
11961     var length = collection ? getLength(collection) : 0;
11962     if (!isLength(length)) {
11963       collection = values(collection);
11964       length = collection.length;
11965     }
11966     if (!length) {
11967       return false;
11968     }
11969     if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {
11970       fromIndex = 0;
11971     } else {
11972       fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
11973     }
11974     return (typeof collection == 'string' || !isArray(collection) && isString(collection))
11975       ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)
11976       : (getIndexOf(collection, target, fromIndex) > -1);
11977   }
11978
11979   /**
11980    * Creates an array of values by running each element in `collection` through
11981    * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
11982    * arguments: (value, index|key, collection).
11983    *
11984    * If a property name is provided for `iteratee` the created `_.property`
11985    * style callback returns the property value of the given element.
11986    *
11987    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11988    * style callback returns `true` for elements that have a matching property
11989    * value, else `false`.
11990    *
11991    * If an object is provided for `iteratee` the created `_.matches` style
11992    * callback returns `true` for elements that have the properties of the given
11993    * object, else `false`.
11994    *
11995    * Many lodash methods are guarded to work as iteratees for methods like
11996    * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
11997    *
11998    * The guarded methods are:
11999    * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
12000    * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
12001    * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
12002    * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
12003    * `sum`, `uniq`, and `words`
12004    *
12005    * @static
12006    * @memberOf _
12007    * @alias collect
12008    * @category Collection
12009    * @param {Array|Object|string} collection The collection to iterate over.
12010    * @param {Function|Object|string} [iteratee=_.identity] The function invoked
12011    *  per iteration.
12012    * @param {*} [thisArg] The `this` binding of `iteratee`.
12013    * @returns {Array} Returns the new mapped array.
12014    * @example
12015    *
12016    * function timesThree(n) {
12017    *   return n * 3;
12018    * }
12019    *
12020    * _.map([1, 2], timesThree);
12021    * // => [3, 6]
12022    *
12023    * _.map({ 'a': 1, 'b': 2 }, timesThree);
12024    * // => [3, 6] (iteration order is not guaranteed)
12025    *
12026    * var users = [
12027    *   { 'user': 'barney' },
12028    *   { 'user': 'fred' }
12029    * ];
12030    *
12031    * // using the `_.property` callback shorthand
12032    * _.map(users, 'user');
12033    * // => ['barney', 'fred']
12034    */
12035   function map(collection, iteratee, thisArg) {
12036     var func = isArray(collection) ? arrayMap : baseMap;
12037     iteratee = getCallback(iteratee, thisArg, 3);
12038     return func(collection, iteratee);
12039   }
12040
12041   /**
12042    * Gets the property value of `path` from all elements in `collection`.
12043    *
12044    * @static
12045    * @memberOf _
12046    * @category Collection
12047    * @param {Array|Object|string} collection The collection to iterate over.
12048    * @param {Array|string} path The path of the property to pluck.
12049    * @returns {Array} Returns the property values.
12050    * @example
12051    *
12052    * var users = [
12053    *   { 'user': 'barney', 'age': 36 },
12054    *   { 'user': 'fred',   'age': 40 }
12055    * ];
12056    *
12057    * _.pluck(users, 'user');
12058    * // => ['barney', 'fred']
12059    *
12060    * var userIndex = _.indexBy(users, 'user');
12061    * _.pluck(userIndex, 'age');
12062    * // => [36, 40] (iteration order is not guaranteed)
12063    */
12064   function pluck(collection, path) {
12065     return map(collection, property(path));
12066   }
12067
12068   /**
12069    * Reduces `collection` to a value which is the accumulated result of running
12070    * each element in `collection` through `iteratee`, where each successive
12071    * invocation is supplied the return value of the previous. If `accumulator`
12072    * is not provided the first element of `collection` is used as the initial
12073    * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
12074    * (accumulator, value, index|key, collection).
12075    *
12076    * Many lodash methods are guarded to work as iteratees for methods like
12077    * `_.reduce`, `_.reduceRight`, and `_.transform`.
12078    *
12079    * The guarded methods are:
12080    * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
12081    *
12082    * @static
12083    * @memberOf _
12084    * @alias foldl, inject
12085    * @category Collection
12086    * @param {Array|Object|string} collection The collection to iterate over.
12087    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
12088    * @param {*} [accumulator] The initial value.
12089    * @param {*} [thisArg] The `this` binding of `iteratee`.
12090    * @returns {*} Returns the accumulated value.
12091    * @example
12092    *
12093    * _.reduce([1, 2], function(total, n) {
12094    *   return total + n;
12095    * });
12096    * // => 3
12097    *
12098    * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
12099    *   result[key] = n * 3;
12100    *   return result;
12101    * }, {});
12102    * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
12103    */
12104   var reduce = createReduce(arrayReduce, baseEach);
12105
12106   /**
12107    * The opposite of `_.filter`; this method returns the elements of `collection`
12108    * that `predicate` does **not** return truthy for.
12109    *
12110    * @static
12111    * @memberOf _
12112    * @category Collection
12113    * @param {Array|Object|string} collection The collection to iterate over.
12114    * @param {Function|Object|string} [predicate=_.identity] The function invoked
12115    *  per iteration.
12116    * @param {*} [thisArg] The `this` binding of `predicate`.
12117    * @returns {Array} Returns the new filtered array.
12118    * @example
12119    *
12120    * _.reject([1, 2, 3, 4], function(n) {
12121    *   return n % 2 == 0;
12122    * });
12123    * // => [1, 3]
12124    *
12125    * var users = [
12126    *   { 'user': 'barney', 'age': 36, 'active': false },
12127    *   { 'user': 'fred',   'age': 40, 'active': true }
12128    * ];
12129    *
12130    * // using the `_.matches` callback shorthand
12131    * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
12132    * // => ['barney']
12133    *
12134    * // using the `_.matchesProperty` callback shorthand
12135    * _.pluck(_.reject(users, 'active', false), 'user');
12136    * // => ['fred']
12137    *
12138    * // using the `_.property` callback shorthand
12139    * _.pluck(_.reject(users, 'active'), 'user');
12140    * // => ['barney']
12141    */
12142   function reject(collection, predicate, thisArg) {
12143     var func = isArray(collection) ? arrayFilter : baseFilter;
12144     predicate = getCallback(predicate, thisArg, 3);
12145     return func(collection, function(value, index, collection) {
12146       return !predicate(value, index, collection);
12147     });
12148   }
12149
12150   /**
12151    * Checks if `predicate` returns truthy for **any** element of `collection`.
12152    * The function returns as soon as it finds a passing value and does not iterate
12153    * over the entire collection. The predicate is bound to `thisArg` and invoked
12154    * with three arguments: (value, index|key, collection).
12155    *
12156    * If a property name is provided for `predicate` the created `_.property`
12157    * style callback returns the property value of the given element.
12158    *
12159    * If a value is also provided for `thisArg` the created `_.matchesProperty`
12160    * style callback returns `true` for elements that have a matching property
12161    * value, else `false`.
12162    *
12163    * If an object is provided for `predicate` the created `_.matches` style
12164    * callback returns `true` for elements that have the properties of the given
12165    * object, else `false`.
12166    *
12167    * @static
12168    * @memberOf _
12169    * @alias any
12170    * @category Collection
12171    * @param {Array|Object|string} collection The collection to iterate over.
12172    * @param {Function|Object|string} [predicate=_.identity] The function invoked
12173    *  per iteration.
12174    * @param {*} [thisArg] The `this` binding of `predicate`.
12175    * @returns {boolean} Returns `true` if any element passes the predicate check,
12176    *  else `false`.
12177    * @example
12178    *
12179    * _.some([null, 0, 'yes', false], Boolean);
12180    * // => true
12181    *
12182    * var users = [
12183    *   { 'user': 'barney', 'active': true },
12184    *   { 'user': 'fred',   'active': false }
12185    * ];
12186    *
12187    * // using the `_.matches` callback shorthand
12188    * _.some(users, { 'user': 'barney', 'active': false });
12189    * // => false
12190    *
12191    * // using the `_.matchesProperty` callback shorthand
12192    * _.some(users, 'active', false);
12193    * // => true
12194    *
12195    * // using the `_.property` callback shorthand
12196    * _.some(users, 'active');
12197    * // => true
12198    */
12199   function some(collection, predicate, thisArg) {
12200     var func = isArray(collection) ? arraySome : baseSome;
12201     if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
12202       predicate = null;
12203     }
12204     if (typeof predicate != 'function' || thisArg !== undefined) {
12205       predicate = getCallback(predicate, thisArg, 3);
12206     }
12207     return func(collection, predicate);
12208   }
12209
12210   /*------------------------------------------------------------------------*/
12211
12212   /**
12213    * Gets the number of milliseconds that have elapsed since the Unix epoch
12214    * (1 January 1970 00:00:00 UTC).
12215    *
12216    * @static
12217    * @memberOf _
12218    * @category Date
12219    * @example
12220    *
12221    * _.defer(function(stamp) {
12222    *   console.log(_.now() - stamp);
12223    * }, _.now());
12224    * // => logs the number of milliseconds it took for the deferred function to be invoked
12225    */
12226   var now = nativeNow || function() {
12227     return new Date().getTime();
12228   };
12229
12230   /*------------------------------------------------------------------------*/
12231
12232   /**
12233    * Creates a function that invokes `func` with the `this` binding of `thisArg`
12234    * and prepends any additional `_.bind` arguments to those provided to the
12235    * bound function.
12236    *
12237    * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
12238    * may be used as a placeholder for partially applied arguments.
12239    *
12240    * **Note:** Unlike native `Function#bind` this method does not set the "length"
12241    * property of bound functions.
12242    *
12243    * @static
12244    * @memberOf _
12245    * @category Function
12246    * @param {Function} func The function to bind.
12247    * @param {*} thisArg The `this` binding of `func`.
12248    * @param {...*} [partials] The arguments to be partially applied.
12249    * @returns {Function} Returns the new bound function.
12250    * @example
12251    *
12252    * var greet = function(greeting, punctuation) {
12253    *   return greeting + ' ' + this.user + punctuation;
12254    * };
12255    *
12256    * var object = { 'user': 'fred' };
12257    *
12258    * var bound = _.bind(greet, object, 'hi');
12259    * bound('!');
12260    * // => 'hi fred!'
12261    *
12262    * // using placeholders
12263    * var bound = _.bind(greet, object, _, '!');
12264    * bound('hi');
12265    * // => 'hi fred!'
12266    */
12267   var bind = restParam(function(func, thisArg, partials) {
12268     var bitmask = BIND_FLAG;
12269     if (partials.length) {
12270       var holders = replaceHolders(partials, bind.placeholder);
12271       bitmask |= PARTIAL_FLAG;
12272     }
12273     return createWrapper(func, bitmask, thisArg, partials, holders);
12274   });
12275
12276   /**
12277    * Creates a debounced function that delays invoking `func` until after `wait`
12278    * milliseconds have elapsed since the last time the debounced function was
12279    * invoked. The debounced function comes with a `cancel` method to cancel
12280    * delayed invocations. Provide an options object to indicate that `func`
12281    * should be invoked on the leading and/or trailing edge of the `wait` timeout.
12282    * Subsequent calls to the debounced function return the result of the last
12283    * `func` invocation.
12284    *
12285    * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
12286    * on the trailing edge of the timeout only if the the debounced function is
12287    * invoked more than once during the `wait` timeout.
12288    *
12289    * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
12290    * for details over the differences between `_.debounce` and `_.throttle`.
12291    *
12292    * @static
12293    * @memberOf _
12294    * @category Function
12295    * @param {Function} func The function to debounce.
12296    * @param {number} [wait=0] The number of milliseconds to delay.
12297    * @param {Object} [options] The options object.
12298    * @param {boolean} [options.leading=false] Specify invoking on the leading
12299    *  edge of the timeout.
12300    * @param {number} [options.maxWait] The maximum time `func` is allowed to be
12301    *  delayed before it is invoked.
12302    * @param {boolean} [options.trailing=true] Specify invoking on the trailing
12303    *  edge of the timeout.
12304    * @returns {Function} Returns the new debounced function.
12305    * @example
12306    *
12307    * // avoid costly calculations while the window size is in flux
12308    * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
12309    *
12310    * // invoke `sendMail` when the click event is fired, debouncing subsequent calls
12311    * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
12312    *   'leading': true,
12313    *   'trailing': false
12314    * }));
12315    *
12316    * // ensure `batchLog` is invoked once after 1 second of debounced calls
12317    * var source = new EventSource('/stream');
12318    * jQuery(source).on('message', _.debounce(batchLog, 250, {
12319    *   'maxWait': 1000
12320    * }));
12321    *
12322    * // cancel a debounced call
12323    * var todoChanges = _.debounce(batchLog, 1000);
12324    * Object.observe(models.todo, todoChanges);
12325    *
12326    * Object.observe(models, function(changes) {
12327    *   if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {
12328    *     todoChanges.cancel();
12329    *   }
12330    * }, ['delete']);
12331    *
12332    * // ...at some point `models.todo` is changed
12333    * models.todo.completed = true;
12334    *
12335    * // ...before 1 second has passed `models.todo` is deleted
12336    * // which cancels the debounced `todoChanges` call
12337    * delete models.todo;
12338    */
12339   function debounce(func, wait, options) {
12340     var args,
12341         maxTimeoutId,
12342         result,
12343         stamp,
12344         thisArg,
12345         timeoutId,
12346         trailingCall,
12347         lastCalled = 0,
12348         maxWait = false,
12349         trailing = true;
12350
12351     if (typeof func != 'function') {
12352       throw new TypeError(FUNC_ERROR_TEXT);
12353     }
12354     wait = wait < 0 ? 0 : (+wait || 0);
12355     if (options === true) {
12356       var leading = true;
12357       trailing = false;
12358     } else if (isObject(options)) {
12359       leading = options.leading;
12360       maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
12361       trailing = 'trailing' in options ? options.trailing : trailing;
12362     }
12363
12364     function cancel() {
12365       if (timeoutId) {
12366         clearTimeout(timeoutId);
12367       }
12368       if (maxTimeoutId) {
12369         clearTimeout(maxTimeoutId);
12370       }
12371       maxTimeoutId = timeoutId = trailingCall = undefined;
12372     }
12373
12374     function delayed() {
12375       var remaining = wait - (now() - stamp);
12376       if (remaining <= 0 || remaining > wait) {
12377         if (maxTimeoutId) {
12378           clearTimeout(maxTimeoutId);
12379         }
12380         var isCalled = trailingCall;
12381         maxTimeoutId = timeoutId = trailingCall = undefined;
12382         if (isCalled) {
12383           lastCalled = now();
12384           result = func.apply(thisArg, args);
12385           if (!timeoutId && !maxTimeoutId) {
12386             args = thisArg = null;
12387           }
12388         }
12389       } else {
12390         timeoutId = setTimeout(delayed, remaining);
12391       }
12392     }
12393
12394     function maxDelayed() {
12395       if (timeoutId) {
12396         clearTimeout(timeoutId);
12397       }
12398       maxTimeoutId = timeoutId = trailingCall = undefined;
12399       if (trailing || (maxWait !== wait)) {
12400         lastCalled = now();
12401         result = func.apply(thisArg, args);
12402         if (!timeoutId && !maxTimeoutId) {
12403           args = thisArg = null;
12404         }
12405       }
12406     }
12407
12408     function debounced() {
12409       args = arguments;
12410       stamp = now();
12411       thisArg = this;
12412       trailingCall = trailing && (timeoutId || !leading);
12413
12414       if (maxWait === false) {
12415         var leadingCall = leading && !timeoutId;
12416       } else {
12417         if (!maxTimeoutId && !leading) {
12418           lastCalled = stamp;
12419         }
12420         var remaining = maxWait - (stamp - lastCalled),
12421             isCalled = remaining <= 0 || remaining > maxWait;
12422
12423         if (isCalled) {
12424           if (maxTimeoutId) {
12425             maxTimeoutId = clearTimeout(maxTimeoutId);
12426           }
12427           lastCalled = stamp;
12428           result = func.apply(thisArg, args);
12429         }
12430         else if (!maxTimeoutId) {
12431           maxTimeoutId = setTimeout(maxDelayed, remaining);
12432         }
12433       }
12434       if (isCalled && timeoutId) {
12435         timeoutId = clearTimeout(timeoutId);
12436       }
12437       else if (!timeoutId && wait !== maxWait) {
12438         timeoutId = setTimeout(delayed, wait);
12439       }
12440       if (leadingCall) {
12441         isCalled = true;
12442         result = func.apply(thisArg, args);
12443       }
12444       if (isCalled && !timeoutId && !maxTimeoutId) {
12445         args = thisArg = null;
12446       }
12447       return result;
12448     }
12449     debounced.cancel = cancel;
12450     return debounced;
12451   }
12452
12453   /**
12454    * Creates a function that invokes `func` with the `this` binding of the
12455    * created function and arguments from `start` and beyond provided as an array.
12456    *
12457    * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).
12458    *
12459    * @static
12460    * @memberOf _
12461    * @category Function
12462    * @param {Function} func The function to apply a rest parameter to.
12463    * @param {number} [start=func.length-1] The start position of the rest parameter.
12464    * @returns {Function} Returns the new function.
12465    * @example
12466    *
12467    * var say = _.restParam(function(what, names) {
12468    *   return what + ' ' + _.initial(names).join(', ') +
12469    *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
12470    * });
12471    *
12472    * say('hello', 'fred', 'barney', 'pebbles');
12473    * // => 'hello fred, barney, & pebbles'
12474    */
12475   function restParam(func, start) {
12476     if (typeof func != 'function') {
12477       throw new TypeError(FUNC_ERROR_TEXT);
12478     }
12479     start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
12480     return function() {
12481       var args = arguments,
12482           index = -1,
12483           length = nativeMax(args.length - start, 0),
12484           rest = Array(length);
12485
12486       while (++index < length) {
12487         rest[index] = args[start + index];
12488       }
12489       switch (start) {
12490         case 0: return func.call(this, rest);
12491         case 1: return func.call(this, args[0], rest);
12492         case 2: return func.call(this, args[0], args[1], rest);
12493       }
12494       var otherArgs = Array(start + 1);
12495       index = -1;
12496       while (++index < start) {
12497         otherArgs[index] = args[index];
12498       }
12499       otherArgs[start] = rest;
12500       return func.apply(this, otherArgs);
12501     };
12502   }
12503
12504   /**
12505    * Creates a throttled function that only invokes `func` at most once per
12506    * every `wait` milliseconds. The throttled function comes with a `cancel`
12507    * method to cancel delayed invocations. Provide an options object to indicate
12508    * that `func` should be invoked on the leading and/or trailing edge of the
12509    * `wait` timeout. Subsequent calls to the throttled function return the
12510    * result of the last `func` call.
12511    *
12512    * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
12513    * on the trailing edge of the timeout only if the the throttled function is
12514    * invoked more than once during the `wait` timeout.
12515    *
12516    * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
12517    * for details over the differences between `_.throttle` and `_.debounce`.
12518    *
12519    * @static
12520    * @memberOf _
12521    * @category Function
12522    * @param {Function} func The function to throttle.
12523    * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
12524    * @param {Object} [options] The options object.
12525    * @param {boolean} [options.leading=true] Specify invoking on the leading
12526    *  edge of the timeout.
12527    * @param {boolean} [options.trailing=true] Specify invoking on the trailing
12528    *  edge of the timeout.
12529    * @returns {Function} Returns the new throttled function.
12530    * @example
12531    *
12532    * // avoid excessively updating the position while scrolling
12533    * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
12534    *
12535    * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
12536    * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {
12537    *   'trailing': false
12538    * }));
12539    *
12540    * // cancel a trailing throttled call
12541    * jQuery(window).on('popstate', throttled.cancel);
12542    */
12543   function throttle(func, wait, options) {
12544     var leading = true,
12545         trailing = true;
12546
12547     if (typeof func != 'function') {
12548       throw new TypeError(FUNC_ERROR_TEXT);
12549     }
12550     if (options === false) {
12551       leading = false;
12552     } else if (isObject(options)) {
12553       leading = 'leading' in options ? !!options.leading : leading;
12554       trailing = 'trailing' in options ? !!options.trailing : trailing;
12555     }
12556     debounceOptions.leading = leading;
12557     debounceOptions.maxWait = +wait;
12558     debounceOptions.trailing = trailing;
12559     return debounce(func, wait, debounceOptions);
12560   }
12561
12562   /*------------------------------------------------------------------------*/
12563
12564   /**
12565    * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
12566    * otherwise they are assigned by reference. If `customizer` is provided it is
12567    * invoked to produce the cloned values. If `customizer` returns `undefined`
12568    * cloning is handled by the method instead. The `customizer` is bound to
12569    * `thisArg` and invoked with two argument; (value [, index|key, object]).
12570    *
12571    * **Note:** This method is loosely based on the
12572    * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
12573    * The enumerable properties of `arguments` objects and objects created by
12574    * constructors other than `Object` are cloned to plain `Object` objects. An
12575    * empty object is returned for uncloneable values such as functions, DOM nodes,
12576    * Maps, Sets, and WeakMaps.
12577    *
12578    * @static
12579    * @memberOf _
12580    * @category Lang
12581    * @param {*} value The value to clone.
12582    * @param {boolean} [isDeep] Specify a deep clone.
12583    * @param {Function} [customizer] The function to customize cloning values.
12584    * @param {*} [thisArg] The `this` binding of `customizer`.
12585    * @returns {*} Returns the cloned value.
12586    * @example
12587    *
12588    * var users = [
12589    *   { 'user': 'barney' },
12590    *   { 'user': 'fred' }
12591    * ];
12592    *
12593    * var shallow = _.clone(users);
12594    * shallow[0] === users[0];
12595    * // => true
12596    *
12597    * var deep = _.clone(users, true);
12598    * deep[0] === users[0];
12599    * // => false
12600    *
12601    * // using a customizer callback
12602    * var el = _.clone(document.body, function(value) {
12603    *   if (_.isElement(value)) {
12604    *     return value.cloneNode(false);
12605    *   }
12606    * });
12607    *
12608    * el === document.body
12609    * // => false
12610    * el.nodeName
12611    * // => BODY
12612    * el.childNodes.length;
12613    * // => 0
12614    */
12615   function clone(value, isDeep, customizer, thisArg) {
12616     if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
12617       isDeep = false;
12618     }
12619     else if (typeof isDeep == 'function') {
12620       thisArg = customizer;
12621       customizer = isDeep;
12622       isDeep = false;
12623     }
12624     return typeof customizer == 'function'
12625       ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1))
12626       : baseClone(value, isDeep);
12627   }
12628
12629   /**
12630    * Creates a deep clone of `value`. If `customizer` is provided it is invoked
12631    * to produce the cloned values. If `customizer` returns `undefined` cloning
12632    * is handled by the method instead. The `customizer` is bound to `thisArg`
12633    * and invoked with two argument; (value [, index|key, object]).
12634    *
12635    * **Note:** This method is loosely based on the
12636    * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
12637    * The enumerable properties of `arguments` objects and objects created by
12638    * constructors other than `Object` are cloned to plain `Object` objects. An
12639    * empty object is returned for uncloneable values such as functions, DOM nodes,
12640    * Maps, Sets, and WeakMaps.
12641    *
12642    * @static
12643    * @memberOf _
12644    * @category Lang
12645    * @param {*} value The value to deep clone.
12646    * @param {Function} [customizer] The function to customize cloning values.
12647    * @param {*} [thisArg] The `this` binding of `customizer`.
12648    * @returns {*} Returns the deep cloned value.
12649    * @example
12650    *
12651    * var users = [
12652    *   { 'user': 'barney' },
12653    *   { 'user': 'fred' }
12654    * ];
12655    *
12656    * var deep = _.cloneDeep(users);
12657    * deep[0] === users[0];
12658    * // => false
12659    *
12660    * // using a customizer callback
12661    * var el = _.cloneDeep(document.body, function(value) {
12662    *   if (_.isElement(value)) {
12663    *     return value.cloneNode(true);
12664    *   }
12665    * });
12666    *
12667    * el === document.body
12668    * // => false
12669    * el.nodeName
12670    * // => BODY
12671    * el.childNodes.length;
12672    * // => 20
12673    */
12674   function cloneDeep(value, customizer, thisArg) {
12675     return typeof customizer == 'function'
12676       ? baseClone(value, true, bindCallback(customizer, thisArg, 1))
12677       : baseClone(value, true);
12678   }
12679
12680   /**
12681    * Checks if `value` is classified as an `arguments` object.
12682    *
12683    * @static
12684    * @memberOf _
12685    * @category Lang
12686    * @param {*} value The value to check.
12687    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12688    * @example
12689    *
12690    * _.isArguments(function() { return arguments; }());
12691    * // => true
12692    *
12693    * _.isArguments([1, 2, 3]);
12694    * // => false
12695    */
12696   function isArguments(value) {
12697     return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
12698   }
12699   // Fallback for environments without a `toStringTag` for `arguments` objects.
12700   if (!support.argsTag) {
12701     isArguments = function(value) {
12702       return isObjectLike(value) && isArrayLike(value) &&
12703         hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
12704     };
12705   }
12706
12707   /**
12708    * Checks if `value` is classified as an `Array` object.
12709    *
12710    * @static
12711    * @memberOf _
12712    * @category Lang
12713    * @param {*} value The value to check.
12714    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12715    * @example
12716    *
12717    * _.isArray([1, 2, 3]);
12718    * // => true
12719    *
12720    * _.isArray(function() { return arguments; }());
12721    * // => false
12722    */
12723   var isArray = nativeIsArray || function(value) {
12724     return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
12725   };
12726
12727   /**
12728    * Checks if `value` is empty. A value is considered empty unless it is an
12729    * `arguments` object, array, string, or jQuery-like collection with a length
12730    * greater than `0` or an object with own enumerable properties.
12731    *
12732    * @static
12733    * @memberOf _
12734    * @category Lang
12735    * @param {Array|Object|string} value The value to inspect.
12736    * @returns {boolean} Returns `true` if `value` is empty, else `false`.
12737    * @example
12738    *
12739    * _.isEmpty(null);
12740    * // => true
12741    *
12742    * _.isEmpty(true);
12743    * // => true
12744    *
12745    * _.isEmpty(1);
12746    * // => true
12747    *
12748    * _.isEmpty([1, 2, 3]);
12749    * // => false
12750    *
12751    * _.isEmpty({ 'a': 1 });
12752    * // => false
12753    */
12754   function isEmpty(value) {
12755     if (value == null) {
12756       return true;
12757     }
12758     if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) ||
12759         (isObjectLike(value) && isFunction(value.splice)))) {
12760       return !value.length;
12761     }
12762     return !keys(value).length;
12763   }
12764
12765   /**
12766    * Performs a deep comparison between two values to determine if they are
12767    * equivalent. If `customizer` is provided it is invoked to compare values.
12768    * If `customizer` returns `undefined` comparisons are handled by the method
12769    * instead. The `customizer` is bound to `thisArg` and invoked with three
12770    * arguments: (value, other [, index|key]).
12771    *
12772    * **Note:** This method supports comparing arrays, booleans, `Date` objects,
12773    * numbers, `Object` objects, regexes, and strings. Objects are compared by
12774    * their own, not inherited, enumerable properties. Functions and DOM nodes
12775    * are **not** supported. Provide a customizer function to extend support
12776    * for comparing other values.
12777    *
12778    * @static
12779    * @memberOf _
12780    * @alias eq
12781    * @category Lang
12782    * @param {*} value The value to compare.
12783    * @param {*} other The other value to compare.
12784    * @param {Function} [customizer] The function to customize value comparisons.
12785    * @param {*} [thisArg] The `this` binding of `customizer`.
12786    * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
12787    * @example
12788    *
12789    * var object = { 'user': 'fred' };
12790    * var other = { 'user': 'fred' };
12791    *
12792    * object == other;
12793    * // => false
12794    *
12795    * _.isEqual(object, other);
12796    * // => true
12797    *
12798    * // using a customizer callback
12799    * var array = ['hello', 'goodbye'];
12800    * var other = ['hi', 'goodbye'];
12801    *
12802    * _.isEqual(array, other, function(value, other) {
12803    *   if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {
12804    *     return true;
12805    *   }
12806    * });
12807    * // => true
12808    */
12809   function isEqual(value, other, customizer, thisArg) {
12810     customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;
12811     var result = customizer ? customizer(value, other) : undefined;
12812     return  result === undefined ? baseIsEqual(value, other, customizer) : !!result;
12813   }
12814
12815   /**
12816    * Checks if `value` is classified as a `Function` object.
12817    *
12818    * @static
12819    * @memberOf _
12820    * @category Lang
12821    * @param {*} value The value to check.
12822    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12823    * @example
12824    *
12825    * _.isFunction(_);
12826    * // => true
12827    *
12828    * _.isFunction(/abc/);
12829    * // => false
12830    */
12831   var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {
12832     // The use of `Object#toString` avoids issues with the `typeof` operator
12833     // in older versions of Chrome and Safari which return 'function' for regexes
12834     // and Safari 8 equivalents which return 'object' for typed array constructors.
12835     return objToString.call(value) == funcTag;
12836   };
12837
12838   /**
12839    * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
12840    * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
12841    *
12842    * @static
12843    * @memberOf _
12844    * @category Lang
12845    * @param {*} value The value to check.
12846    * @returns {boolean} Returns `true` if `value` is an object, else `false`.
12847    * @example
12848    *
12849    * _.isObject({});
12850    * // => true
12851    *
12852    * _.isObject([1, 2, 3]);
12853    * // => true
12854    *
12855    * _.isObject(1);
12856    * // => false
12857    */
12858   function isObject(value) {
12859     // Avoid a V8 JIT bug in Chrome 19-20.
12860     // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
12861     var type = typeof value;
12862     return !!value && (type == 'object' || type == 'function');
12863   }
12864
12865   /**
12866    * Checks if `value` is a native function.
12867    *
12868    * @static
12869    * @memberOf _
12870    * @category Lang
12871    * @param {*} value The value to check.
12872    * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
12873    * @example
12874    *
12875    * _.isNative(Array.prototype.push);
12876    * // => true
12877    *
12878    * _.isNative(_);
12879    * // => false
12880    */
12881   function isNative(value) {
12882     if (value == null) {
12883       return false;
12884     }
12885     if (objToString.call(value) == funcTag) {
12886       return reIsNative.test(fnToString.call(value));
12887     }
12888     return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);
12889   }
12890
12891   /**
12892    * Checks if `value` is a plain object, that is, an object created by the
12893    * `Object` constructor or one with a `[[Prototype]]` of `null`.
12894    *
12895    * **Note:** This method assumes objects created by the `Object` constructor
12896    * have no inherited enumerable properties.
12897    *
12898    * @static
12899    * @memberOf _
12900    * @category Lang
12901    * @param {*} value The value to check.
12902    * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
12903    * @example
12904    *
12905    * function Foo() {
12906    *   this.a = 1;
12907    * }
12908    *
12909    * _.isPlainObject(new Foo);
12910    * // => false
12911    *
12912    * _.isPlainObject([1, 2, 3]);
12913    * // => false
12914    *
12915    * _.isPlainObject({ 'x': 0, 'y': 0 });
12916    * // => true
12917    *
12918    * _.isPlainObject(Object.create(null));
12919    * // => true
12920    */
12921   var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {
12922     if (!(value && objToString.call(value) == objectTag) || (!lodash.support.argsTag && isArguments(value))) {
12923       return false;
12924     }
12925     var valueOf = getNative(value, 'valueOf'),
12926         objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
12927
12928     return objProto
12929       ? (value == objProto || getPrototypeOf(value) == objProto)
12930       : shimIsPlainObject(value);
12931   };
12932
12933   /**
12934    * Checks if `value` is classified as a `String` primitive or object.
12935    *
12936    * @static
12937    * @memberOf _
12938    * @category Lang
12939    * @param {*} value The value to check.
12940    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12941    * @example
12942    *
12943    * _.isString('abc');
12944    * // => true
12945    *
12946    * _.isString(1);
12947    * // => false
12948    */
12949   function isString(value) {
12950     return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);
12951   }
12952
12953   /**
12954    * Checks if `value` is classified as a typed array.
12955    *
12956    * @static
12957    * @memberOf _
12958    * @category Lang
12959    * @param {*} value The value to check.
12960    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12961    * @example
12962    *
12963    * _.isTypedArray(new Uint8Array);
12964    * // => true
12965    *
12966    * _.isTypedArray([]);
12967    * // => false
12968    */
12969   function isTypedArray(value) {
12970     return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
12971   }
12972
12973   /**
12974    * Converts `value` to a plain object flattening inherited enumerable
12975    * properties of `value` to own properties of the plain object.
12976    *
12977    * @static
12978    * @memberOf _
12979    * @category Lang
12980    * @param {*} value The value to convert.
12981    * @returns {Object} Returns the converted plain object.
12982    * @example
12983    *
12984    * function Foo() {
12985    *   this.b = 2;
12986    * }
12987    *
12988    * Foo.prototype.c = 3;
12989    *
12990    * _.assign({ 'a': 1 }, new Foo);
12991    * // => { 'a': 1, 'b': 2 }
12992    *
12993    * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
12994    * // => { 'a': 1, 'b': 2, 'c': 3 }
12995    */
12996   function toPlainObject(value) {
12997     return baseCopy(value, keysIn(value));
12998   }
12999
13000   /*------------------------------------------------------------------------*/
13001
13002   /**
13003    * Assigns own enumerable properties of source object(s) to the destination
13004    * object. Subsequent sources overwrite property assignments of previous sources.
13005    * If `customizer` is provided it is invoked to produce the assigned values.
13006    * The `customizer` is bound to `thisArg` and invoked with five arguments:
13007    * (objectValue, sourceValue, key, object, source).
13008    *
13009    * **Note:** This method mutates `object` and is based on
13010    * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).
13011    *
13012    * @static
13013    * @memberOf _
13014    * @alias extend
13015    * @category Object
13016    * @param {Object} object The destination object.
13017    * @param {...Object} [sources] The source objects.
13018    * @param {Function} [customizer] The function to customize assigned values.
13019    * @param {*} [thisArg] The `this` binding of `customizer`.
13020    * @returns {Object} Returns `object`.
13021    * @example
13022    *
13023    * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });
13024    * // => { 'user': 'fred', 'age': 40 }
13025    *
13026    * // using a customizer callback
13027    * var defaults = _.partialRight(_.assign, function(value, other) {
13028    *   return _.isUndefined(value) ? other : value;
13029    * });
13030    *
13031    * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
13032    * // => { 'user': 'barney', 'age': 36 }
13033    */
13034   var assign = createAssigner(function(object, source, customizer) {
13035     return customizer
13036       ? assignWith(object, source, customizer)
13037       : baseAssign(object, source);
13038   });
13039
13040   /**
13041    * Iterates over own enumerable properties of an object invoking `iteratee`
13042    * for each property. The `iteratee` is bound to `thisArg` and invoked with
13043    * three arguments: (value, key, object). Iteratee functions may exit iteration
13044    * early by explicitly returning `false`.
13045    *
13046    * @static
13047    * @memberOf _
13048    * @category Object
13049    * @param {Object} object The object to iterate over.
13050    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
13051    * @param {*} [thisArg] The `this` binding of `iteratee`.
13052    * @returns {Object} Returns `object`.
13053    * @example
13054    *
13055    * function Foo() {
13056    *   this.a = 1;
13057    *   this.b = 2;
13058    * }
13059    *
13060    * Foo.prototype.c = 3;
13061    *
13062    * _.forOwn(new Foo, function(value, key) {
13063    *   console.log(key);
13064    * });
13065    * // => logs 'a' and 'b' (iteration order is not guaranteed)
13066    */
13067   var forOwn = createForOwn(baseForOwn);
13068
13069   /**
13070    * Creates an array of the own enumerable property names of `object`.
13071    *
13072    * **Note:** Non-object values are coerced to objects. See the
13073    * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
13074    * for more details.
13075    *
13076    * @static
13077    * @memberOf _
13078    * @category Object
13079    * @param {Object} object The object to query.
13080    * @returns {Array} Returns the array of property names.
13081    * @example
13082    *
13083    * function Foo() {
13084    *   this.a = 1;
13085    *   this.b = 2;
13086    * }
13087    *
13088    * Foo.prototype.c = 3;
13089    *
13090    * _.keys(new Foo);
13091    * // => ['a', 'b'] (iteration order is not guaranteed)
13092    *
13093    * _.keys('hi');
13094    * // => ['0', '1']
13095    */
13096   var keys = !nativeKeys ? shimKeys : function(object) {
13097     var Ctor = object == null ? null : object.constructor;
13098     if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
13099         (typeof object == 'function' ? lodash.support.enumPrototypes : isArrayLike(object))) {
13100       return shimKeys(object);
13101     }
13102     return isObject(object) ? nativeKeys(object) : [];
13103   };
13104
13105   /**
13106    * Creates an array of the own and inherited enumerable property names of `object`.
13107    *
13108    * **Note:** Non-object values are coerced to objects.
13109    *
13110    * @static
13111    * @memberOf _
13112    * @category Object
13113    * @param {Object} object The object to query.
13114    * @returns {Array} Returns the array of property names.
13115    * @example
13116    *
13117    * function Foo() {
13118    *   this.a = 1;
13119    *   this.b = 2;
13120    * }
13121    *
13122    * Foo.prototype.c = 3;
13123    *
13124    * _.keysIn(new Foo);
13125    * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
13126    */
13127   function keysIn(object) {
13128     if (object == null) {
13129       return [];
13130     }
13131     if (!isObject(object)) {
13132       object = Object(object);
13133     }
13134     var length = object.length,
13135         support = lodash.support;
13136
13137     length = (length && isLength(length) &&
13138       (isArray(object) || isArguments(object) || isString(object)) && length) || 0;
13139
13140     var Ctor = object.constructor,
13141         index = -1,
13142         proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,
13143         isProto = proto === object,
13144         result = Array(length),
13145         skipIndexes = length > 0,
13146         skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),
13147         skipProto = support.enumPrototypes && isFunction(object);
13148
13149     while (++index < length) {
13150       result[index] = (index + '');
13151     }
13152     // lodash skips the `constructor` property when it infers it is iterating
13153     // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`
13154     // attribute of an existing property and the `constructor` property of a
13155     // prototype defaults to non-enumerable.
13156     for (var key in object) {
13157       if (!(skipProto && key == 'prototype') &&
13158           !(skipErrorProps && (key == 'message' || key == 'name')) &&
13159           !(skipIndexes && isIndex(key, length)) &&
13160           !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
13161         result.push(key);
13162       }
13163     }
13164     if (support.nonEnumShadows && object !== objectProto) {
13165       var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),
13166           nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];
13167
13168       if (tag == objectTag) {
13169         proto = objectProto;
13170       }
13171       length = shadowProps.length;
13172       while (length--) {
13173         key = shadowProps[length];
13174         var nonEnum = nonEnums[key];
13175         if (!(isProto && nonEnum) &&
13176             (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {
13177           result.push(key);
13178         }
13179       }
13180     }
13181     return result;
13182   }
13183
13184   /**
13185    * Recursively merges own enumerable properties of the source object(s), that
13186    * don't resolve to `undefined` into the destination object. Subsequent sources
13187    * overwrite property assignments of previous sources. If `customizer` is
13188    * provided it is invoked to produce the merged values of the destination and
13189    * source properties. If `customizer` returns `undefined` merging is handled
13190    * by the method instead. The `customizer` is bound to `thisArg` and invoked
13191    * with five arguments: (objectValue, sourceValue, key, object, source).
13192    *
13193    * @static
13194    * @memberOf _
13195    * @category Object
13196    * @param {Object} object The destination object.
13197    * @param {...Object} [sources] The source objects.
13198    * @param {Function} [customizer] The function to customize assigned values.
13199    * @param {*} [thisArg] The `this` binding of `customizer`.
13200    * @returns {Object} Returns `object`.
13201    * @example
13202    *
13203    * var users = {
13204    *   'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
13205    * };
13206    *
13207    * var ages = {
13208    *   'data': [{ 'age': 36 }, { 'age': 40 }]
13209    * };
13210    *
13211    * _.merge(users, ages);
13212    * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
13213    *
13214    * // using a customizer callback
13215    * var object = {
13216    *   'fruits': ['apple'],
13217    *   'vegetables': ['beet']
13218    * };
13219    *
13220    * var other = {
13221    *   'fruits': ['banana'],
13222    *   'vegetables': ['carrot']
13223    * };
13224    *
13225    * _.merge(object, other, function(a, b) {
13226    *   if (_.isArray(a)) {
13227    *     return a.concat(b);
13228    *   }
13229    * });
13230    * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
13231    */
13232   var merge = createAssigner(baseMerge);
13233
13234   /**
13235    * The opposite of `_.pick`; this method creates an object composed of the
13236    * own and inherited enumerable properties of `object` that are not omitted.
13237    *
13238    * @static
13239    * @memberOf _
13240    * @category Object
13241    * @param {Object} object The source object.
13242    * @param {Function|...(string|string[])} [predicate] The function invoked per
13243    *  iteration or property names to omit, specified as individual property
13244    *  names or arrays of property names.
13245    * @param {*} [thisArg] The `this` binding of `predicate`.
13246    * @returns {Object} Returns the new object.
13247    * @example
13248    *
13249    * var object = { 'user': 'fred', 'age': 40 };
13250    *
13251    * _.omit(object, 'age');
13252    * // => { 'user': 'fred' }
13253    *
13254    * _.omit(object, _.isNumber);
13255    * // => { 'user': 'fred' }
13256    */
13257   var omit = restParam(function(object, props) {
13258     if (object == null) {
13259       return {};
13260     }
13261     if (typeof props[0] != 'function') {
13262       var props = arrayMap(baseFlatten(props), String);
13263       return pickByArray(object, baseDifference(keysIn(object), props));
13264     }
13265     var predicate = bindCallback(props[0], props[1], 3);
13266     return pickByCallback(object, function(value, key, object) {
13267       return !predicate(value, key, object);
13268     });
13269   });
13270
13271   /**
13272    * Creates a two dimensional array of the key-value pairs for `object`,
13273    * e.g. `[[key1, value1], [key2, value2]]`.
13274    *
13275    * @static
13276    * @memberOf _
13277    * @category Object
13278    * @param {Object} object The object to query.
13279    * @returns {Array} Returns the new array of key-value pairs.
13280    * @example
13281    *
13282    * _.pairs({ 'barney': 36, 'fred': 40 });
13283    * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
13284    */
13285   function pairs(object) {
13286     object = toObject(object);
13287
13288     var index = -1,
13289         props = keys(object),
13290         length = props.length,
13291         result = Array(length);
13292
13293     while (++index < length) {
13294       var key = props[index];
13295       result[index] = [key, object[key]];
13296     }
13297     return result;
13298   }
13299
13300   /**
13301    * Creates an object composed of the picked `object` properties. Property
13302    * names may be specified as individual arguments or as arrays of property
13303    * names. If `predicate` is provided it is invoked for each property of `object`
13304    * picking the properties `predicate` returns truthy for. The predicate is
13305    * bound to `thisArg` and invoked with three arguments: (value, key, object).
13306    *
13307    * @static
13308    * @memberOf _
13309    * @category Object
13310    * @param {Object} object The source object.
13311    * @param {Function|...(string|string[])} [predicate] The function invoked per
13312    *  iteration or property names to pick, specified as individual property
13313    *  names or arrays of property names.
13314    * @param {*} [thisArg] The `this` binding of `predicate`.
13315    * @returns {Object} Returns the new object.
13316    * @example
13317    *
13318    * var object = { 'user': 'fred', 'age': 40 };
13319    *
13320    * _.pick(object, 'user');
13321    * // => { 'user': 'fred' }
13322    *
13323    * _.pick(object, _.isString);
13324    * // => { 'user': 'fred' }
13325    */
13326   var pick = restParam(function(object, props) {
13327     if (object == null) {
13328       return {};
13329     }
13330     return typeof props[0] == 'function'
13331       ? pickByCallback(object, bindCallback(props[0], props[1], 3))
13332       : pickByArray(object, baseFlatten(props));
13333   });
13334
13335   /**
13336    * Creates an array of the own enumerable property values of `object`.
13337    *
13338    * **Note:** Non-object values are coerced to objects.
13339    *
13340    * @static
13341    * @memberOf _
13342    * @category Object
13343    * @param {Object} object The object to query.
13344    * @returns {Array} Returns the array of property values.
13345    * @example
13346    *
13347    * function Foo() {
13348    *   this.a = 1;
13349    *   this.b = 2;
13350    * }
13351    *
13352    * Foo.prototype.c = 3;
13353    *
13354    * _.values(new Foo);
13355    * // => [1, 2] (iteration order is not guaranteed)
13356    *
13357    * _.values('hi');
13358    * // => ['h', 'i']
13359    */
13360   function values(object) {
13361     return baseValues(object, keys(object));
13362   }
13363
13364   /*------------------------------------------------------------------------*/
13365
13366   /**
13367    * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
13368    * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
13369    *
13370    * @static
13371    * @memberOf _
13372    * @category String
13373    * @param {string} [string=''] The string to escape.
13374    * @returns {string} Returns the escaped string.
13375    * @example
13376    *
13377    * _.escapeRegExp('[lodash](https://lodash.com/)');
13378    * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
13379    */
13380   function escapeRegExp(string) {
13381     string = baseToString(string);
13382     return (string && reHasRegExpChars.test(string))
13383       ? string.replace(reRegExpChars, '\\$&')
13384       : string;
13385   }
13386
13387   /*------------------------------------------------------------------------*/
13388
13389   /**
13390    * Creates a function that invokes `func` with the `this` binding of `thisArg`
13391    * and arguments of the created function. If `func` is a property name the
13392    * created callback returns the property value for a given element. If `func`
13393    * is an object the created callback returns `true` for elements that contain
13394    * the equivalent object properties, otherwise it returns `false`.
13395    *
13396    * @static
13397    * @memberOf _
13398    * @alias iteratee
13399    * @category Utility
13400    * @param {*} [func=_.identity] The value to convert to a callback.
13401    * @param {*} [thisArg] The `this` binding of `func`.
13402    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
13403    * @returns {Function} Returns the callback.
13404    * @example
13405    *
13406    * var users = [
13407    *   { 'user': 'barney', 'age': 36 },
13408    *   { 'user': 'fred',   'age': 40 }
13409    * ];
13410    *
13411    * // wrap to create custom callback shorthands
13412    * _.callback = _.wrap(_.callback, function(callback, func, thisArg) {
13413    *   var match = /^(.+?)__([gl]t)(.+)$/.exec(func);
13414    *   if (!match) {
13415    *     return callback(func, thisArg);
13416    *   }
13417    *   return function(object) {
13418    *     return match[2] == 'gt'
13419    *       ? object[match[1]] > match[3]
13420    *       : object[match[1]] < match[3];
13421    *   };
13422    * });
13423    *
13424    * _.filter(users, 'age__gt36');
13425    * // => [{ 'user': 'fred', 'age': 40 }]
13426    */
13427   function callback(func, thisArg, guard) {
13428     if (guard && isIterateeCall(func, thisArg, guard)) {
13429       thisArg = null;
13430     }
13431     return isObjectLike(func)
13432       ? matches(func)
13433       : baseCallback(func, thisArg);
13434   }
13435
13436   /**
13437    * Creates a function that returns `value`.
13438    *
13439    * @static
13440    * @memberOf _
13441    * @category Utility
13442    * @param {*} value The value to return from the new function.
13443    * @returns {Function} Returns the new function.
13444    * @example
13445    *
13446    * var object = { 'user': 'fred' };
13447    * var getter = _.constant(object);
13448    *
13449    * getter() === object;
13450    * // => true
13451    */
13452   function constant(value) {
13453     return function() {
13454       return value;
13455     };
13456   }
13457
13458   /**
13459    * This method returns the first argument provided to it.
13460    *
13461    * @static
13462    * @memberOf _
13463    * @category Utility
13464    * @param {*} value Any value.
13465    * @returns {*} Returns `value`.
13466    * @example
13467    *
13468    * var object = { 'user': 'fred' };
13469    *
13470    * _.identity(object) === object;
13471    * // => true
13472    */
13473   function identity(value) {
13474     return value;
13475   }
13476
13477   /**
13478    * Creates a function that performs a deep comparison between a given object
13479    * and `source`, returning `true` if the given object has equivalent property
13480    * values, else `false`.
13481    *
13482    * **Note:** This method supports comparing arrays, booleans, `Date` objects,
13483    * numbers, `Object` objects, regexes, and strings. Objects are compared by
13484    * their own, not inherited, enumerable properties. For comparing a single
13485    * own or inherited property value see `_.matchesProperty`.
13486    *
13487    * @static
13488    * @memberOf _
13489    * @category Utility
13490    * @param {Object} source The object of property values to match.
13491    * @returns {Function} Returns the new function.
13492    * @example
13493    *
13494    * var users = [
13495    *   { 'user': 'barney', 'age': 36, 'active': true },
13496    *   { 'user': 'fred',   'age': 40, 'active': false }
13497    * ];
13498    *
13499    * _.filter(users, _.matches({ 'age': 40, 'active': false }));
13500    * // => [{ 'user': 'fred', 'age': 40, 'active': false }]
13501    */
13502   function matches(source) {
13503     return baseMatches(baseClone(source, true));
13504   }
13505
13506   /**
13507    * Adds all own enumerable function properties of a source object to the
13508    * destination object. If `object` is a function then methods are added to
13509    * its prototype as well.
13510    *
13511    * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
13512    * avoid conflicts caused by modifying the original.
13513    *
13514    * @static
13515    * @memberOf _
13516    * @category Utility
13517    * @param {Function|Object} [object=lodash] The destination object.
13518    * @param {Object} source The object of functions to add.
13519    * @param {Object} [options] The options object.
13520    * @param {boolean} [options.chain=true] Specify whether the functions added
13521    *  are chainable.
13522    * @returns {Function|Object} Returns `object`.
13523    * @example
13524    *
13525    * function vowels(string) {
13526    *   return _.filter(string, function(v) {
13527    *     return /[aeiou]/i.test(v);
13528    *   });
13529    * }
13530    *
13531    * _.mixin({ 'vowels': vowels });
13532    * _.vowels('fred');
13533    * // => ['e']
13534    *
13535    * _('fred').vowels().value();
13536    * // => ['e']
13537    *
13538    * _.mixin({ 'vowels': vowels }, { 'chain': false });
13539    * _('fred').vowels();
13540    * // => ['e']
13541    */
13542   function mixin(object, source, options) {
13543     if (options == null) {
13544       var isObj = isObject(source),
13545           props = isObj ? keys(source) : null,
13546           methodNames = (props && props.length) ? baseFunctions(source, props) : null;
13547
13548       if (!(methodNames ? methodNames.length : isObj)) {
13549         methodNames = false;
13550         options = source;
13551         source = object;
13552         object = this;
13553       }
13554     }
13555     if (!methodNames) {
13556       methodNames = baseFunctions(source, keys(source));
13557     }
13558     var chain = true,
13559         index = -1,
13560         isFunc = isFunction(object),
13561         length = methodNames.length;
13562
13563     if (options === false) {
13564       chain = false;
13565     } else if (isObject(options) && 'chain' in options) {
13566       chain = options.chain;
13567     }
13568     while (++index < length) {
13569       var methodName = methodNames[index],
13570           func = source[methodName];
13571
13572       object[methodName] = func;
13573       if (isFunc) {
13574         object.prototype[methodName] = (function(func) {
13575           return function() {
13576             var chainAll = this.__chain__;
13577             if (chain || chainAll) {
13578               var result = object(this.__wrapped__),
13579                   actions = result.__actions__ = arrayCopy(this.__actions__);
13580
13581               actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
13582               result.__chain__ = chainAll;
13583               return result;
13584             }
13585             var args = [this.value()];
13586             push.apply(args, arguments);
13587             return func.apply(object, args);
13588           };
13589         }(func));
13590       }
13591     }
13592     return object;
13593   }
13594
13595   /**
13596    * A no-operation function that returns `undefined` regardless of the
13597    * arguments it receives.
13598    *
13599    * @static
13600    * @memberOf _
13601    * @category Utility
13602    * @example
13603    *
13604    * var object = { 'user': 'fred' };
13605    *
13606    * _.noop(object) === undefined;
13607    * // => true
13608    */
13609   function noop() {
13610     // No operation performed.
13611   }
13612
13613   /**
13614    * Creates a function that returns the property value at `path` on a
13615    * given object.
13616    *
13617    * @static
13618    * @memberOf _
13619    * @category Utility
13620    * @param {Array|string} path The path of the property to get.
13621    * @returns {Function} Returns the new function.
13622    * @example
13623    *
13624    * var objects = [
13625    *   { 'a': { 'b': { 'c': 2 } } },
13626    *   { 'a': { 'b': { 'c': 1 } } }
13627    * ];
13628    *
13629    * _.map(objects, _.property('a.b.c'));
13630    * // => [2, 1]
13631    *
13632    * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
13633    * // => [1, 2]
13634    */
13635   function property(path) {
13636     return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
13637   }
13638
13639   /*------------------------------------------------------------------------*/
13640
13641   // Ensure wrappers are instances of `baseLodash`.
13642   lodash.prototype = baseLodash.prototype;
13643
13644   LodashWrapper.prototype = baseCreate(baseLodash.prototype);
13645   LodashWrapper.prototype.constructor = LodashWrapper;
13646
13647   LazyWrapper.prototype = baseCreate(baseLodash.prototype);
13648   LazyWrapper.prototype.constructor = LazyWrapper;
13649
13650   // Add functions to the `Set` cache.
13651   SetCache.prototype.push = cachePush;
13652
13653   // Add functions that return wrapped values when chaining.
13654   lodash.assign = assign;
13655   lodash.bind = bind;
13656   lodash.callback = callback;
13657   lodash.chain = chain;
13658   lodash.chunk = chunk;
13659   lodash.compact = compact;
13660   lodash.constant = constant;
13661   lodash.debounce = debounce;
13662   lodash.difference = difference;
13663   lodash.filter = filter;
13664   lodash.flatten = flatten;
13665   lodash.forEach = forEach;
13666   lodash.forOwn = forOwn;
13667   lodash.groupBy = groupBy;
13668   lodash.intersection = intersection;
13669   lodash.keys = keys;
13670   lodash.keysIn = keysIn;
13671   lodash.map = map;
13672   lodash.matches = matches;
13673   lodash.merge = merge;
13674   lodash.mixin = mixin;
13675   lodash.omit = omit;
13676   lodash.pairs = pairs;
13677   lodash.pick = pick;
13678   lodash.pluck = pluck;
13679   lodash.property = property;
13680   lodash.reject = reject;
13681   lodash.restParam = restParam;
13682   lodash.tap = tap;
13683   lodash.throttle = throttle;
13684   lodash.thru = thru;
13685   lodash.toPlainObject = toPlainObject;
13686   lodash.union = union;
13687   lodash.uniq = uniq;
13688   lodash.values = values;
13689   lodash.without = without;
13690
13691   // Add aliases.
13692   lodash.collect = map;
13693   lodash.each = forEach;
13694   lodash.extend = assign;
13695   lodash.iteratee = callback;
13696   lodash.select = filter;
13697   lodash.unique = uniq;
13698
13699   // Add functions to `lodash.prototype`.
13700   mixin(lodash, lodash);
13701
13702   /*------------------------------------------------------------------------*/
13703
13704   // Add functions that return unwrapped values when chaining.
13705   lodash.clone = clone;
13706   lodash.cloneDeep = cloneDeep;
13707   lodash.escapeRegExp = escapeRegExp;
13708   lodash.every = every;
13709   lodash.find = find;
13710   lodash.first = first;
13711   lodash.identity = identity;
13712   lodash.includes = includes;
13713   lodash.indexOf = indexOf;
13714   lodash.isArguments = isArguments;
13715   lodash.isArray = isArray;
13716   lodash.isEmpty = isEmpty;
13717   lodash.isEqual = isEqual;
13718   lodash.isFunction = isFunction;
13719   lodash.isNative = isNative;
13720   lodash.isObject = isObject;
13721   lodash.isPlainObject = isPlainObject;
13722   lodash.isString = isString;
13723   lodash.isTypedArray = isTypedArray;
13724   lodash.last = last;
13725   lodash.noop = noop;
13726   lodash.now = now;
13727   lodash.reduce = reduce;
13728   lodash.some = some;
13729
13730   // Add aliases.
13731   lodash.all = every;
13732   lodash.any = some;
13733   lodash.contains = includes;
13734   lodash.eq = isEqual;
13735   lodash.detect = find;
13736   lodash.foldl = reduce;
13737   lodash.head = first;
13738   lodash.include = includes;
13739   lodash.inject = reduce;
13740
13741   mixin(lodash, (function() {
13742     var source = {};
13743     baseForOwn(lodash, function(func, methodName) {
13744       if (!lodash.prototype[methodName]) {
13745         source[methodName] = func;
13746       }
13747     });
13748     return source;
13749   }()), false);
13750
13751   /*------------------------------------------------------------------------*/
13752
13753   lodash.prototype.sample = function(n) {
13754     if (!this.__chain__ && n == null) {
13755       return sample(this.value());
13756     }
13757     return this.thru(function(value) {
13758       return sample(value, n);
13759     });
13760   };
13761
13762   /*------------------------------------------------------------------------*/
13763
13764   /**
13765    * The semantic version number.
13766    *
13767    * @static
13768    * @memberOf _
13769    * @type string
13770    */
13771   lodash.VERSION = VERSION;
13772
13773   // Assign default placeholders.
13774   bind.placeholder = lodash;
13775
13776   // Add `LazyWrapper` methods that accept an `iteratee` value.
13777   arrayEach(['dropWhile', 'filter', 'map', 'takeWhile'], function(methodName, type) {
13778     var isFilter = type != LAZY_MAP_FLAG,
13779         isDropWhile = type == LAZY_DROP_WHILE_FLAG;
13780
13781     LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
13782       var filtered = this.__filtered__,
13783           result = (filtered && isDropWhile) ? new LazyWrapper(this) : this.clone(),
13784           iteratees = result.__iteratees__ || (result.__iteratees__ = []);
13785
13786       iteratees.push({
13787         'done': false,
13788         'count': 0,
13789         'index': 0,
13790         'iteratee': getCallback(iteratee, thisArg, 1),
13791         'limit': -1,
13792         'type': type
13793       });
13794
13795       result.__filtered__ = filtered || isFilter;
13796       return result;
13797     };
13798   });
13799
13800   // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
13801   arrayEach(['drop', 'take'], function(methodName, index) {
13802     var whileName = methodName + 'While';
13803
13804     LazyWrapper.prototype[methodName] = function(n) {
13805       var filtered = this.__filtered__,
13806           result = (filtered && !index) ? this.dropWhile() : this.clone();
13807
13808       n = n == null ? 1 : nativeMax(floor(n) || 0, 0);
13809       if (filtered) {
13810         if (index) {
13811           result.__takeCount__ = nativeMin(result.__takeCount__, n);
13812         } else {
13813           last(result.__iteratees__).limit = n;
13814         }
13815       } else {
13816         var views = result.__views__ || (result.__views__ = []);
13817         views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
13818       }
13819       return result;
13820     };
13821
13822     LazyWrapper.prototype[methodName + 'Right'] = function(n) {
13823       return this.reverse()[methodName](n).reverse();
13824     };
13825
13826     LazyWrapper.prototype[methodName + 'RightWhile'] = function(predicate, thisArg) {
13827       return this.reverse()[whileName](predicate, thisArg).reverse();
13828     };
13829   });
13830
13831   // Add `LazyWrapper` methods for `_.first` and `_.last`.
13832   arrayEach(['first', 'last'], function(methodName, index) {
13833     var takeName = 'take' + (index ? 'Right' : '');
13834
13835     LazyWrapper.prototype[methodName] = function() {
13836       return this[takeName](1).value()[0];
13837     };
13838   });
13839
13840   // Add `LazyWrapper` methods for `_.initial` and `_.rest`.
13841   arrayEach(['initial', 'rest'], function(methodName, index) {
13842     var dropName = 'drop' + (index ? '' : 'Right');
13843
13844     LazyWrapper.prototype[methodName] = function() {
13845       return this[dropName](1);
13846     };
13847   });
13848
13849   // Add `LazyWrapper` methods for `_.pluck` and `_.where`.
13850   arrayEach(['pluck', 'where'], function(methodName, index) {
13851     var operationName = index ? 'filter' : 'map',
13852         createCallback = index ? baseMatches : property;
13853
13854     LazyWrapper.prototype[methodName] = function(value) {
13855       return this[operationName](createCallback(value));
13856     };
13857   });
13858
13859   LazyWrapper.prototype.compact = function() {
13860     return this.filter(identity);
13861   };
13862
13863   LazyWrapper.prototype.reject = function(predicate, thisArg) {
13864     predicate = getCallback(predicate, thisArg, 1);
13865     return this.filter(function(value) {
13866       return !predicate(value);
13867     });
13868   };
13869
13870   LazyWrapper.prototype.slice = function(start, end) {
13871     start = start == null ? 0 : (+start || 0);
13872
13873     var result = this;
13874     if (start < 0) {
13875       result = this.takeRight(-start);
13876     } else if (start) {
13877       result = this.drop(start);
13878     }
13879     if (end !== undefined) {
13880       end = (+end || 0);
13881       result = end < 0 ? result.dropRight(-end) : result.take(end - start);
13882     }
13883     return result;
13884   };
13885
13886   LazyWrapper.prototype.toArray = function() {
13887     return this.drop(0);
13888   };
13889
13890   // Add `LazyWrapper` methods to `lodash.prototype`.
13891   baseForOwn(LazyWrapper.prototype, function(func, methodName) {
13892     var lodashFunc = lodash[methodName];
13893     if (!lodashFunc) {
13894       return;
13895     }
13896     var checkIteratee = /^(?:filter|map|reject)|While$/.test(methodName),
13897         retUnwrapped = /^(?:first|last)$/.test(methodName);
13898
13899     lodash.prototype[methodName] = function() {
13900       var args = arguments,
13901           chainAll = this.__chain__,
13902           value = this.__wrapped__,
13903           isHybrid = !!this.__actions__.length,
13904           isLazy = value instanceof LazyWrapper,
13905           iteratee = args[0],
13906           useLazy = isLazy || isArray(value);
13907
13908       if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
13909         // avoid lazy use if the iteratee has a "length" value other than `1`
13910         isLazy = useLazy = false;
13911       }
13912       var onlyLazy = isLazy && !isHybrid;
13913       if (retUnwrapped && !chainAll) {
13914         return onlyLazy
13915           ? func.call(value)
13916           : lodashFunc.call(lodash, this.value());
13917       }
13918       var interceptor = function(value) {
13919         var otherArgs = [value];
13920         push.apply(otherArgs, args);
13921         return lodashFunc.apply(lodash, otherArgs);
13922       };
13923       if (useLazy) {
13924         var wrapper = onlyLazy ? value : new LazyWrapper(this),
13925             result = func.apply(wrapper, args);
13926
13927         if (!retUnwrapped && (isHybrid || result.__actions__)) {
13928           var actions = result.__actions__ || (result.__actions__ = []);
13929           actions.push({ 'func': thru, 'args': [interceptor], 'thisArg': lodash });
13930         }
13931         return new LodashWrapper(result, chainAll);
13932       }
13933       return this.thru(interceptor);
13934     };
13935   });
13936
13937   // Add `Array` and `String` methods to `lodash.prototype`.
13938   arrayEach(['concat', 'join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) {
13939     var protoFunc = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName],
13940         chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
13941         fixObjects = !support.spliceObjects && /^(?:pop|shift|splice)$/.test(methodName),
13942         retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName);
13943
13944     // Avoid array-like object bugs with `Array#shift` and `Array#splice` in
13945     // IE < 9, Firefox < 10, and RingoJS.
13946     var func = !fixObjects ? protoFunc : function() {
13947       var result = protoFunc.apply(this, arguments);
13948       if (this.length === 0) {
13949         delete this[0];
13950       }
13951       return result;
13952     };
13953
13954     lodash.prototype[methodName] = function() {
13955       var args = arguments;
13956       if (retUnwrapped && !this.__chain__) {
13957         return func.apply(this.value(), args);
13958       }
13959       return this[chainName](function(value) {
13960         return func.apply(value, args);
13961       });
13962     };
13963   });
13964
13965   // Map minified function names to their real names.
13966   baseForOwn(LazyWrapper.prototype, function(func, methodName) {
13967     var lodashFunc = lodash[methodName];
13968     if (lodashFunc) {
13969       var key = lodashFunc.name,
13970           names = realNames[key] || (realNames[key] = []);
13971
13972       names.push({ 'name': methodName, 'func': lodashFunc });
13973     }
13974   });
13975
13976   realNames[createHybridWrapper(null, BIND_KEY_FLAG).name] = [{ 'name': 'wrapper', 'func': null }];
13977
13978   // Add functions to the lazy wrapper.
13979   LazyWrapper.prototype.clone = lazyClone;
13980   LazyWrapper.prototype.reverse = lazyReverse;
13981   LazyWrapper.prototype.value = lazyValue;
13982
13983   // Add chaining functions to the `lodash` wrapper.
13984   lodash.prototype.chain = wrapperChain;
13985   lodash.prototype.commit = wrapperCommit;
13986   lodash.prototype.plant = wrapperPlant;
13987   lodash.prototype.reverse = wrapperReverse;
13988   lodash.prototype.toString = wrapperToString;
13989   lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
13990
13991   // Add function aliases to the `lodash` wrapper.
13992   lodash.prototype.collect = lodash.prototype.map;
13993   lodash.prototype.head = lodash.prototype.first;
13994   lodash.prototype.select = lodash.prototype.filter;
13995   lodash.prototype.tail = lodash.prototype.rest;
13996
13997   /*--------------------------------------------------------------------------*/
13998
13999   if (freeExports && freeModule) {
14000     // Export for Node.js or RingoJS.
14001     if (moduleExports) {
14002       (freeModule.exports = lodash)._ = lodash;
14003     }
14004   }
14005   else {
14006     // Export for a browser or Rhino.
14007     root._ = lodash;
14008   }
14009 }.call(this));
14010 (function(e){if("function"==typeof bootstrap)bootstrap("osmauth",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeOsmAuth=e}else"undefined"!=typeof window?window.osmAuth=e():global.osmAuth=e()})(function(){var define,ses,bootstrap,module,exports;
14011 return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){
14012 'use strict';
14013
14014 var ohauth = require('ohauth'),
14015     xtend = require('xtend'),
14016     store = require('store');
14017
14018 // # osm-auth
14019 //
14020 // This code is only compatible with IE10+ because the [XDomainRequest](http://bit.ly/LfO7xo)
14021 // object, IE<10's idea of [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing),
14022 // does not support custom headers, which this uses everywhere.
14023 module.exports = function(o) {
14024
14025     var oauth = {};
14026
14027     // authenticated users will also have a request token secret, but it's
14028     // not used in transactions with the server
14029     oauth.authenticated = function() {
14030         return !!(token('oauth_token') && token('oauth_token_secret'));
14031     };
14032
14033     oauth.logout = function() {
14034         token('oauth_token', '');
14035         token('oauth_token_secret', '');
14036         token('oauth_request_token_secret', '');
14037         return oauth;
14038     };
14039
14040     // TODO: detect lack of click event
14041     oauth.authenticate = function(callback) {
14042         if (oauth.authenticated()) return callback();
14043
14044         oauth.logout();
14045
14046         // ## Getting a request token
14047         var params = timenonce(getAuth(o)),
14048             url = o.url + '/oauth/request_token';
14049
14050         params.oauth_signature = ohauth.signature(
14051             o.oauth_secret, '',
14052             ohauth.baseString('POST', url, params));
14053
14054         if (!o.singlepage) {
14055             // Create a 600x550 popup window in the center of the screen
14056             var w = 600, h = 550,
14057                 settings = [
14058                     ['width', w], ['height', h],
14059                     ['left', screen.width / 2 - w / 2],
14060                     ['top', screen.height / 2 - h / 2]].map(function(x) {
14061                         return x.join('=');
14062                     }).join(','),
14063                 popup = window.open('about:blank', 'oauth_window', settings);
14064         }
14065
14066         // Request a request token. When this is complete, the popup
14067         // window is redirected to OSM's authorization page.
14068         ohauth.xhr('POST', url, params, null, {}, reqTokenDone);
14069         o.loading();
14070
14071         function reqTokenDone(err, xhr) {
14072             o.done();
14073             if (err) return callback(err);
14074             var resp = ohauth.stringQs(xhr.response);
14075             token('oauth_request_token_secret', resp.oauth_token_secret);
14076             var authorize_url = o.url + '/oauth/authorize?' + ohauth.qsString({
14077                 oauth_token: resp.oauth_token,
14078                 oauth_callback: location.href.replace('index.html', '')
14079                     .replace(/#.*/, '') + o.landing
14080             });
14081
14082             if (o.singlepage) {
14083                 location.href = authorize_url;
14084             } else {
14085                 popup.location = authorize_url;
14086             }
14087         }
14088
14089         // Called by a function in a landing page, in the popup window. The
14090         // window closes itself.
14091         window.authComplete = function(token) {
14092             var oauth_token = ohauth.stringQs(token.split('?')[1]);
14093             get_access_token(oauth_token.oauth_token);
14094             delete window.authComplete;
14095         };
14096
14097         // ## Getting an request token
14098         //
14099         // At this point we have an `oauth_token`, brought in from a function
14100         // call on a landing page popup.
14101         function get_access_token(oauth_token) {
14102             var url = o.url + '/oauth/access_token',
14103                 params = timenonce(getAuth(o)),
14104                 request_token_secret = token('oauth_request_token_secret');
14105             params.oauth_token = oauth_token;
14106             params.oauth_signature = ohauth.signature(
14107                 o.oauth_secret,
14108                 request_token_secret,
14109                 ohauth.baseString('POST', url, params));
14110
14111             // ## Getting an access token
14112             //
14113             // The final token required for authentication. At this point
14114             // we have a `request token secret`
14115             ohauth.xhr('POST', url, params, null, {}, accessTokenDone);
14116             o.loading();
14117         }
14118
14119         function accessTokenDone(err, xhr) {
14120             o.done();
14121             if (err) return callback(err);
14122             var access_token = ohauth.stringQs(xhr.response);
14123             token('oauth_token', access_token.oauth_token);
14124             token('oauth_token_secret', access_token.oauth_token_secret);
14125             callback(null, oauth);
14126         }
14127     };
14128
14129     oauth.bootstrapToken = function(oauth_token, callback) {
14130         // ## Getting an request token
14131         // At this point we have an `oauth_token`, brought in from a function
14132         // call on a landing page popup.
14133         function get_access_token(oauth_token) {
14134             var url = o.url + '/oauth/access_token',
14135                 params = timenonce(getAuth(o)),
14136                 request_token_secret = token('oauth_request_token_secret');
14137             params.oauth_token = oauth_token;
14138             params.oauth_signature = ohauth.signature(
14139                 o.oauth_secret,
14140                 request_token_secret,
14141                 ohauth.baseString('POST', url, params));
14142
14143             // ## Getting an access token
14144             // The final token required for authentication. At this point
14145             // we have a `request token secret`
14146             ohauth.xhr('POST', url, params, null, {}, accessTokenDone);
14147             o.loading();
14148         }
14149
14150         function accessTokenDone(err, xhr) {
14151             o.done();
14152             if (err) return callback(err);
14153             var access_token = ohauth.stringQs(xhr.response);
14154             token('oauth_token', access_token.oauth_token);
14155             token('oauth_token_secret', access_token.oauth_token_secret);
14156             callback(null, oauth);
14157         }
14158
14159         get_access_token(oauth_token);
14160     };
14161
14162     // # xhr
14163     //
14164     // A single XMLHttpRequest wrapper that does authenticated calls if the
14165     // user has logged in.
14166     oauth.xhr = function(options, callback) {
14167         if (!oauth.authenticated()) {
14168             if (o.auto) return oauth.authenticate(run);
14169             else return callback('not authenticated', null);
14170         } else return run();
14171
14172         function run() {
14173             var params = timenonce(getAuth(o)),
14174                 url = o.url + options.path,
14175                 oauth_token_secret = token('oauth_token_secret');
14176
14177             // https://tools.ietf.org/html/rfc5849#section-3.4.1.3.1
14178             if ((!options.options || !options.options.header ||
14179                 options.options.header['Content-Type'] === 'application/x-www-form-urlencoded') &&
14180                 options.content) {
14181                 params = xtend(params, ohauth.stringQs(options.content));
14182             }
14183
14184             params.oauth_token = token('oauth_token');
14185             params.oauth_signature = ohauth.signature(
14186                 o.oauth_secret,
14187                 oauth_token_secret,
14188                 ohauth.baseString(options.method, url, params));
14189
14190             ohauth.xhr(options.method,
14191                 url, params, options.content, options.options, done);
14192         }
14193
14194         function done(err, xhr) {
14195             if (err) return callback(err);
14196             else if (xhr.responseXML) return callback(err, xhr.responseXML);
14197             else return callback(err, xhr.response);
14198         }
14199     };
14200
14201     // pre-authorize this object, if we can just get a token and token_secret
14202     // from the start
14203     oauth.preauth = function(c) {
14204         if (!c) return;
14205         if (c.oauth_token) token('oauth_token', c.oauth_token);
14206         if (c.oauth_token_secret) token('oauth_token_secret', c.oauth_token_secret);
14207         return oauth;
14208     };
14209
14210     oauth.options = function(_) {
14211         if (!arguments.length) return o;
14212
14213         o = _;
14214
14215         o.url = o.url || 'http://www.openstreetmap.org';
14216         o.landing = o.landing || 'land.html';
14217
14218         o.singlepage = o.singlepage || false;
14219
14220         // Optional loading and loading-done functions for nice UI feedback.
14221         // by default, no-ops
14222         o.loading = o.loading || function() {};
14223         o.done = o.done || function() {};
14224
14225         return oauth.preauth(o);
14226     };
14227
14228     // 'stamp' an authentication object from `getAuth()`
14229     // with a [nonce](http://en.wikipedia.org/wiki/Cryptographic_nonce)
14230     // and timestamp
14231     function timenonce(o) {
14232         o.oauth_timestamp = ohauth.timestamp();
14233         o.oauth_nonce = ohauth.nonce();
14234         return o;
14235     }
14236
14237     // get/set tokens. These are prefixed with the base URL so that `osm-auth`
14238     // can be used with multiple APIs and the keys in `localStorage`
14239     // will not clash
14240     var token;
14241
14242     if (store.enabled) {
14243         token = function (x, y) {
14244             if (arguments.length === 1) return store.get(o.url + x);
14245             else if (arguments.length === 2) return store.set(o.url + x, y);
14246         };
14247     } else {
14248         var storage = {};
14249         token = function (x, y) {
14250             if (arguments.length === 1) return storage[o.url + x];
14251             else if (arguments.length === 2) return storage[o.url + x] = y;
14252         };
14253     }
14254
14255     // Get an authentication object. If you just add and remove properties
14256     // from a single object, you'll need to use `delete` to make sure that
14257     // it doesn't contain undesired properties for authentication
14258     function getAuth(o) {
14259         return {
14260             oauth_consumer_key: o.oauth_consumer_key,
14261             oauth_signature_method: "HMAC-SHA1"
14262         };
14263     }
14264
14265     // potentially pre-authorize
14266     oauth.options(o);
14267
14268     return oauth;
14269 };
14270
14271 },{"ohauth":2,"store":3,"xtend":4}],3:[function(require,module,exports){
14272 (function(global){;(function(win){
14273         var store = {},
14274                 doc = win.document,
14275                 localStorageName = 'localStorage',
14276                 storage
14277
14278         store.disabled = false
14279         store.set = function(key, value) {}
14280         store.get = function(key) {}
14281         store.remove = function(key) {}
14282         store.clear = function() {}
14283         store.transact = function(key, defaultVal, transactionFn) {
14284                 var val = store.get(key)
14285                 if (transactionFn == null) {
14286                         transactionFn = defaultVal
14287                         defaultVal = null
14288                 }
14289                 if (typeof val == 'undefined') { val = defaultVal || {} }
14290                 transactionFn(val)
14291                 store.set(key, val)
14292         }
14293         store.getAll = function() {}
14294         store.forEach = function() {}
14295
14296         store.serialize = function(value) {
14297                 return JSON.stringify(value)
14298         }
14299         store.deserialize = function(value) {
14300                 if (typeof value != 'string') { return undefined }
14301                 try { return JSON.parse(value) }
14302                 catch(e) { return value || undefined }
14303         }
14304
14305         // Functions to encapsulate questionable FireFox 3.6.13 behavior
14306         // when about.config::dom.storage.enabled === false
14307         // See https://github.com/marcuswestin/store.js/issues#issue/13
14308         function isLocalStorageNameSupported() {
14309                 try { return (localStorageName in win && win[localStorageName]) }
14310                 catch(err) { return false }
14311         }
14312
14313         if (isLocalStorageNameSupported()) {
14314                 storage = win[localStorageName]
14315                 store.set = function(key, val) {
14316                         if (val === undefined) { return store.remove(key) }
14317                         storage.setItem(key, store.serialize(val))
14318                         return val
14319                 }
14320                 store.get = function(key) { return store.deserialize(storage.getItem(key)) }
14321                 store.remove = function(key) { storage.removeItem(key) }
14322                 store.clear = function() { storage.clear() }
14323                 store.getAll = function() {
14324                         var ret = {}
14325                         store.forEach(function(key, val) {
14326                                 ret[key] = val
14327                         })
14328                         return ret
14329                 }
14330                 store.forEach = function(callback) {
14331                         for (var i=0; i<storage.length; i++) {
14332                                 var key = storage.key(i)
14333                                 callback(key, store.get(key))
14334                         }
14335                 }
14336         } else if (doc.documentElement.addBehavior) {
14337                 var storageOwner,
14338                         storageContainer
14339                 // Since #userData storage applies only to specific paths, we need to
14340                 // somehow link our data to a specific path.  We choose /favicon.ico
14341                 // as a pretty safe option, since all browsers already make a request to
14342                 // this URL anyway and being a 404 will not hurt us here.  We wrap an
14343                 // iframe pointing to the favicon in an ActiveXObject(htmlfile) object
14344                 // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)
14345                 // since the iframe access rules appear to allow direct access and
14346                 // manipulation of the document element, even for a 404 page.  This
14347                 // document can be used instead of the current document (which would
14348                 // have been limited to the current path) to perform #userData storage.
14349                 try {
14350                         storageContainer = new ActiveXObject('htmlfile')
14351                         storageContainer.open()
14352                         storageContainer.write('<s' + 'cript>document.w=window</s' + 'cript><iframe src="/favicon.ico"></iframe>')
14353                         storageContainer.close()
14354                         storageOwner = storageContainer.w.frames[0].document
14355                         storage = storageOwner.createElement('div')
14356                 } catch(e) {
14357                         // somehow ActiveXObject instantiation failed (perhaps some special
14358                         // security settings or otherwse), fall back to per-path storage
14359                         storage = doc.createElement('div')
14360                         storageOwner = doc.body
14361                 }
14362                 function withIEStorage(storeFunction) {
14363                         return function() {
14364                                 var args = Array.prototype.slice.call(arguments, 0)
14365                                 args.unshift(storage)
14366                                 // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
14367                                 // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
14368                                 storageOwner.appendChild(storage)
14369                                 storage.addBehavior('#default#userData')
14370                                 storage.load(localStorageName)
14371                                 var result = storeFunction.apply(store, args)
14372                                 storageOwner.removeChild(storage)
14373                                 return result
14374                         }
14375                 }
14376
14377                 // In IE7, keys may not contain special chars. See all of https://github.com/marcuswestin/store.js/issues/40
14378                 var forbiddenCharsRegex = new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]", "g")
14379                 function ieKeyFix(key) {
14380                         return key.replace(forbiddenCharsRegex, '___')
14381                 }
14382                 store.set = withIEStorage(function(storage, key, val) {
14383                         key = ieKeyFix(key)
14384                         if (val === undefined) { return store.remove(key) }
14385                         storage.setAttribute(key, store.serialize(val))
14386                         storage.save(localStorageName)
14387                         return val
14388                 })
14389                 store.get = withIEStorage(function(storage, key) {
14390                         key = ieKeyFix(key)
14391                         return store.deserialize(storage.getAttribute(key))
14392                 })
14393                 store.remove = withIEStorage(function(storage, key) {
14394                         key = ieKeyFix(key)
14395                         storage.removeAttribute(key)
14396                         storage.save(localStorageName)
14397                 })
14398                 store.clear = withIEStorage(function(storage) {
14399                         var attributes = storage.XMLDocument.documentElement.attributes
14400                         storage.load(localStorageName)
14401                         for (var i=0, attr; attr=attributes[i]; i++) {
14402                                 storage.removeAttribute(attr.name)
14403                         }
14404                         storage.save(localStorageName)
14405                 })
14406                 store.getAll = function(storage) {
14407                         var ret = {}
14408                         store.forEach(function(key, val) {
14409                                 ret[key] = val
14410                         })
14411                         return ret
14412                 }
14413                 store.forEach = withIEStorage(function(storage, callback) {
14414                         var attributes = storage.XMLDocument.documentElement.attributes
14415                         for (var i=0, attr; attr=attributes[i]; ++i) {
14416                                 callback(attr.name, store.deserialize(storage.getAttribute(attr.name)))
14417                         }
14418                 })
14419         }
14420
14421         try {
14422                 var testKey = '__storejs__'
14423                 store.set(testKey, testKey)
14424                 if (store.get(testKey) != testKey) { store.disabled = true }
14425                 store.remove(testKey)
14426         } catch(e) {
14427                 store.disabled = true
14428         }
14429         store.enabled = !store.disabled
14430         
14431         if (typeof module != 'undefined' && module.exports) { module.exports = store }
14432         else if (typeof define === 'function' && define.amd) { define(store) }
14433         else { win.store = store }
14434         
14435 })(this.window || global);
14436
14437 })(window)
14438 },{}],5:[function(require,module,exports){
14439 module.exports = hasKeys
14440
14441 function hasKeys(source) {
14442     return source !== null &&
14443         (typeof source === "object" ||
14444         typeof source === "function")
14445 }
14446
14447 },{}],4:[function(require,module,exports){
14448 var Keys = require("object-keys")
14449 var hasKeys = require("./has-keys")
14450
14451 module.exports = extend
14452
14453 function extend() {
14454     var target = {}
14455
14456     for (var i = 0; i < arguments.length; i++) {
14457         var source = arguments[i]
14458
14459         if (!hasKeys(source)) {
14460             continue
14461         }
14462
14463         var keys = Keys(source)
14464
14465         for (var j = 0; j < keys.length; j++) {
14466             var name = keys[j]
14467             target[name] = source[name]
14468         }
14469     }
14470
14471     return target
14472 }
14473
14474 },{"./has-keys":5,"object-keys":6}],7:[function(require,module,exports){
14475 (function(global){/**
14476  * jsHashes - A fast and independent hashing library pure JavaScript implemented (ES3 compliant) for both server and client side
14477  * 
14478  * @class Hashes
14479  * @author Tomas Aparicio <tomas@rijndael-project.com>
14480  * @license New BSD (see LICENSE file)
14481  * @version 1.0.4
14482  *
14483  * Algorithms specification:
14484  *
14485  * MD5 <http://www.ietf.org/rfc/rfc1321.txt>
14486  * RIPEMD-160 <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
14487  * SHA1   <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14488  * SHA256 <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14489  * SHA512 <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14490  * HMAC <http://www.ietf.org/rfc/rfc2104.txt>
14491  *
14492  */
14493 (function(){
14494   var Hashes;
14495   
14496   // private helper methods
14497   function utf8Encode(str) {
14498     var  x, y, output = '', i = -1, l;
14499     
14500     if (str && str.length) {
14501       l = str.length;
14502       while ((i+=1) < l) {
14503         /* Decode utf-16 surrogate pairs */
14504         x = str.charCodeAt(i);
14505         y = i + 1 < l ? str.charCodeAt(i + 1) : 0;
14506         if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
14507             x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
14508             i += 1;
14509         }
14510         /* Encode output as utf-8 */
14511         if (x <= 0x7F) {
14512             output += String.fromCharCode(x);
14513         } else if (x <= 0x7FF) {
14514             output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
14515                         0x80 | ( x & 0x3F));
14516         } else if (x <= 0xFFFF) {
14517             output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
14518                         0x80 | ((x >>> 6 ) & 0x3F),
14519                         0x80 | ( x & 0x3F));
14520         } else if (x <= 0x1FFFFF) {
14521             output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
14522                         0x80 | ((x >>> 12) & 0x3F),
14523                         0x80 | ((x >>> 6 ) & 0x3F),
14524                         0x80 | ( x & 0x3F));
14525         }
14526       }
14527     }
14528     return output;
14529   }
14530   
14531   function utf8Decode(str) {
14532     var i, ac, c1, c2, c3, arr = [], l;
14533     i = ac = c1 = c2 = c3 = 0;
14534     
14535     if (str && str.length) {
14536       l = str.length;
14537       str += '';
14538     
14539       while (i < l) {
14540           c1 = str.charCodeAt(i);
14541           ac += 1;
14542           if (c1 < 128) {
14543               arr[ac] = String.fromCharCode(c1);
14544               i+=1;
14545           } else if (c1 > 191 && c1 < 224) {
14546               c2 = str.charCodeAt(i + 1);
14547               arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
14548               i += 2;
14549           } else {
14550               c2 = str.charCodeAt(i + 1);
14551               c3 = str.charCodeAt(i + 2);
14552               arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
14553               i += 3;
14554           }
14555       }
14556     }
14557     return arr.join('');
14558   }
14559
14560   /**
14561    * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14562    * to work around bugs in some JS interpreters.
14563    */
14564   function safe_add(x, y) {
14565     var lsw = (x & 0xFFFF) + (y & 0xFFFF),
14566         msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14567     return (msw << 16) | (lsw & 0xFFFF);
14568   }
14569
14570   /**
14571    * Bitwise rotate a 32-bit number to the left.
14572    */
14573   function bit_rol(num, cnt) {
14574     return (num << cnt) | (num >>> (32 - cnt));
14575   }
14576
14577   /**
14578    * Convert a raw string to a hex string
14579    */
14580   function rstr2hex(input, hexcase) {
14581     var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef',
14582         output = '', x, i = 0, l = input.length;
14583     for (; i < l; i+=1) {
14584       x = input.charCodeAt(i);
14585       output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);
14586     }
14587     return output;
14588   }
14589
14590   /**
14591    * Encode a string as utf-16
14592    */
14593   function str2rstr_utf16le(input) {
14594     var i, l = input.length, output = '';
14595     for (i = 0; i < l; i+=1) {
14596       output += String.fromCharCode( input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);
14597     }
14598     return output;
14599   }
14600
14601   function str2rstr_utf16be(input) {
14602     var i, l = input.length, output = '';
14603     for (i = 0; i < l; i+=1) {
14604       output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);
14605     }
14606     return output;
14607   }
14608
14609   /**
14610    * Convert an array of big-endian words to a string
14611    */
14612   function binb2rstr(input) {
14613     var i, l = input.length * 32, output = '';
14614     for (i = 0; i < l; i += 8) {
14615         output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);
14616     }
14617     return output;
14618   }
14619
14620   /**
14621    * Convert an array of little-endian words to a string
14622    */
14623   function binl2rstr(input) {
14624     var i, l = input.length * 32, output = '';
14625     for (i = 0;i < l; i += 8) {
14626       output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
14627     }
14628     return output;
14629   }
14630
14631   /**
14632    * Convert a raw string to an array of little-endian words
14633    * Characters >255 have their high-byte silently ignored.
14634    */
14635   function rstr2binl(input) {
14636     var i, l = input.length * 8, output = Array(input.length >> 2), lo = output.length;
14637     for (i = 0; i < lo; i+=1) {
14638       output[i] = 0;
14639     }
14640     for (i = 0; i < l; i += 8) {
14641       output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
14642     }
14643     return output;
14644   }
14645   
14646   /**
14647    * Convert a raw string to an array of big-endian words 
14648    * Characters >255 have their high-byte silently ignored.
14649    */
14650    function rstr2binb(input) {
14651       var i, l = input.length * 8, output = Array(input.length >> 2), lo = output.length;
14652       for (i = 0; i < lo; i+=1) {
14653             output[i] = 0;
14654         }
14655       for (i = 0; i < l; i += 8) {
14656             output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);
14657         }
14658       return output;
14659    }
14660
14661   /**
14662    * Convert a raw string to an arbitrary string encoding
14663    */
14664   function rstr2any(input, encoding) {
14665     var divisor = encoding.length,
14666         remainders = Array(),
14667         i, q, x, ld, quotient, dividend, output, full_length;
14668   
14669     /* Convert to an array of 16-bit big-endian values, forming the dividend */
14670     dividend = Array(Math.ceil(input.length / 2));
14671     ld = dividend.length;
14672     for (i = 0; i < ld; i+=1) {
14673       dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
14674     }
14675   
14676     /**
14677      * Repeatedly perform a long division. The binary array forms the dividend,
14678      * the length of the encoding is the divisor. Once computed, the quotient
14679      * forms the dividend for the next step. We stop when the dividend is zerHashes.
14680      * All remainders are stored for later use.
14681      */
14682     while(dividend.length > 0) {
14683       quotient = Array();
14684       x = 0;
14685       for (i = 0; i < dividend.length; i+=1) {
14686         x = (x << 16) + dividend[i];
14687         q = Math.floor(x / divisor);
14688         x -= q * divisor;
14689         if (quotient.length > 0 || q > 0) {
14690           quotient[quotient.length] = q;
14691         }
14692       }
14693       remainders[remainders.length] = x;
14694       dividend = quotient;
14695     }
14696   
14697     /* Convert the remainders to the output string */
14698     output = '';
14699     for (i = remainders.length - 1; i >= 0; i--) {
14700       output += encoding.charAt(remainders[i]);
14701     }
14702   
14703     /* Append leading zero equivalents */
14704     full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));
14705     for (i = output.length; i < full_length; i+=1) {
14706       output = encoding[0] + output;
14707     }
14708     return output;
14709   }
14710
14711   /**
14712    * Convert a raw string to a base-64 string
14713    */
14714   function rstr2b64(input, b64pad) {
14715     var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
14716         output = '',
14717         len = input.length, i, j, triplet;
14718     b64pad= b64pad || '=';
14719     for (i = 0; i < len; i += 3) {
14720       triplet = (input.charCodeAt(i) << 16)
14721             | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
14722             | (i + 2 < len ? input.charCodeAt(i+2)      : 0);
14723       for (j = 0; j < 4; j+=1) {
14724         if (i * 8 + j * 6 > input.length * 8) { 
14725           output += b64pad; 
14726         } else { 
14727           output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); 
14728         }
14729        }
14730     }
14731     return output;
14732   }
14733
14734   Hashes = {
14735   /**  
14736    * @property {String} version
14737    * @readonly
14738    */
14739   VERSION : '1.0.3',
14740   /**
14741    * @member Hashes
14742    * @class Base64
14743    * @constructor
14744    */
14745   Base64 : function () {
14746     // private properties
14747     var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
14748         pad = '=', // default pad according with the RFC standard
14749         url = false, // URL encoding support @todo
14750         utf8 = true; // by default enable UTF-8 support encoding
14751
14752     // public method for encoding
14753     this.encode = function (input) {
14754       var i, j, triplet,
14755           output = '', 
14756           len = input.length;
14757
14758       pad = pad || '=';
14759       input = (utf8) ? utf8Encode(input) : input;
14760
14761       for (i = 0; i < len; i += 3) {
14762         triplet = (input.charCodeAt(i) << 16)
14763               | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
14764               | (i + 2 < len ? input.charCodeAt(i+2) : 0);
14765         for (j = 0; j < 4; j+=1) {
14766           if (i * 8 + j * 6 > len * 8) {
14767               output += pad;
14768           } else {
14769               output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
14770           }
14771         }
14772       }
14773       return output;    
14774     };
14775
14776     // public method for decoding
14777     this.decode = function (input) {
14778       // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
14779       var i, o1, o2, o3, h1, h2, h3, h4, bits, ac,
14780         dec = '',
14781         arr = [];
14782       if (!input) { return input; }
14783
14784       i = ac = 0;
14785       input = input.replace(new RegExp('\\'+pad,'gi'),''); // use '='
14786       //input += '';
14787
14788       do { // unpack four hexets into three octets using index points in b64
14789         h1 = tab.indexOf(input.charAt(i+=1));
14790         h2 = tab.indexOf(input.charAt(i+=1));
14791         h3 = tab.indexOf(input.charAt(i+=1));
14792         h4 = tab.indexOf(input.charAt(i+=1));
14793
14794         bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
14795
14796         o1 = bits >> 16 & 0xff;
14797         o2 = bits >> 8 & 0xff;
14798         o3 = bits & 0xff;
14799         ac += 1;
14800
14801         if (h3 === 64) {
14802           arr[ac] = String.fromCharCode(o1);
14803         } else if (h4 === 64) {
14804           arr[ac] = String.fromCharCode(o1, o2);
14805         } else {
14806           arr[ac] = String.fromCharCode(o1, o2, o3);
14807         }
14808       } while (i < input.length);
14809
14810       dec = arr.join('');
14811       dec = (utf8) ? utf8Decode(dec) : dec;
14812
14813       return dec;
14814     };
14815
14816     // set custom pad string
14817     this.setPad = function (str) {
14818         pad = str || pad;
14819         return this;
14820     };
14821     // set custom tab string characters
14822     this.setTab = function (str) {
14823         tab = str || tab;
14824         return this;
14825     };
14826     this.setUTF8 = function (bool) {
14827         if (typeof bool === 'boolean') {
14828           utf8 = bool;
14829         }
14830         return this;
14831     };
14832   },
14833
14834   /**
14835    * CRC-32 calculation
14836    * @member Hashes
14837    * @method CRC32
14838    * @static
14839    * @param {String} str Input String
14840    * @return {String}
14841    */
14842   CRC32 : function (str) {
14843     var crc = 0, x = 0, y = 0, table, i, iTop;
14844     str = utf8Encode(str);
14845         
14846     table = [ 
14847         '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ',
14848         '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ',
14849         '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ',
14850         '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ',
14851         'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ',
14852         '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ',
14853         'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ',
14854         '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ',
14855         'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ',
14856         '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ',
14857         'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ',
14858         '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ',
14859         'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ',
14860         '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ',
14861         '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ',
14862         '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ',
14863         '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ',
14864         'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ', 
14865         '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ',
14866         'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ',
14867         '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ',
14868         'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ',
14869         '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ',
14870         'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ',
14871         '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ',
14872         'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'
14873     ].join('');
14874
14875     crc = crc ^ (-1);
14876     for (i = 0, iTop = str.length; i < iTop; i+=1 ) {
14877         y = ( crc ^ str.charCodeAt( i ) ) & 0xFF;
14878         x = '0x' + table.substr( y * 9, 8 );
14879         crc = ( crc >>> 8 ) ^ x;
14880     }
14881     // always return a positive number (that's what >>> 0 does)
14882     return (crc ^ (-1)) >>> 0;
14883   },
14884   /**
14885    * @member Hashes
14886    * @class MD5
14887    * @constructor
14888    * @param {Object} [config]
14889    * 
14890    * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14891    * Digest Algorithm, as defined in RFC 1321.
14892    * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
14893    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14894    * See <http://pajhome.org.uk/crypt/md5> for more infHashes.
14895    */
14896   MD5 : function (options) {  
14897     /**
14898      * Private config properties. You may need to tweak these to be compatible with
14899      * the server-side, but the defaults work in most cases.
14900      * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}
14901      */
14902     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase
14903         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance
14904         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding
14905
14906     // privileged (public) methods 
14907     this.hex = function (s) { 
14908       return rstr2hex(rstr(s, utf8), hexcase);
14909     };
14910     this.b64 = function (s) { 
14911       return rstr2b64(rstr(s), b64pad);
14912     };
14913     this.any = function(s, e) { 
14914       return rstr2any(rstr(s, utf8), e); 
14915     };
14916     this.hex_hmac = function (k, d) { 
14917       return rstr2hex(rstr_hmac(k, d), hexcase); 
14918     };
14919     this.b64_hmac = function (k, d) { 
14920       return rstr2b64(rstr_hmac(k,d), b64pad); 
14921     };
14922     this.any_hmac = function (k, d, e) { 
14923       return rstr2any(rstr_hmac(k, d), e); 
14924     };
14925     /**
14926      * Perform a simple self-test to see if the VM is working
14927      * @return {String} Hexadecimal hash sample
14928      */
14929     this.vm_test = function () {
14930       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
14931     };
14932     /** 
14933      * Enable/disable uppercase hexadecimal returned string 
14934      * @param {Boolean} 
14935      * @return {Object} this
14936      */ 
14937     this.setUpperCase = function (a) {
14938       if (typeof a === 'boolean' ) {
14939         hexcase = a;
14940       }
14941       return this;
14942     };
14943     /** 
14944      * Defines a base64 pad string 
14945      * @param {String} Pad
14946      * @return {Object} this
14947      */ 
14948     this.setPad = function (a) {
14949       b64pad = a || b64pad;
14950       return this;
14951     };
14952     /** 
14953      * Defines a base64 pad string 
14954      * @param {Boolean} 
14955      * @return {Object} [this]
14956      */ 
14957     this.setUTF8 = function (a) {
14958       if (typeof a === 'boolean') { 
14959         utf8 = a;
14960       }
14961       return this;
14962     };
14963
14964     // private methods
14965
14966     /**
14967      * Calculate the MD5 of a raw string
14968      */
14969     function rstr(s) {
14970       s = (utf8) ? utf8Encode(s): s;
14971       return binl2rstr(binl(rstr2binl(s), s.length * 8));
14972     }
14973     
14974     /**
14975      * Calculate the HMAC-MD5, of a key and some data (raw strings)
14976      */
14977     function rstr_hmac(key, data) {
14978       var bkey, ipad, opad, hash, i;
14979
14980       key = (utf8) ? utf8Encode(key) : key;
14981       data = (utf8) ? utf8Encode(data) : data;
14982       bkey = rstr2binl(key);
14983       if (bkey.length > 16) { 
14984         bkey = binl(bkey, key.length * 8); 
14985       }
14986
14987       ipad = Array(16), opad = Array(16); 
14988       for (i = 0; i < 16; i+=1) {
14989           ipad[i] = bkey[i] ^ 0x36363636;
14990           opad[i] = bkey[i] ^ 0x5C5C5C5C;
14991       }
14992       hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
14993       return binl2rstr(binl(opad.concat(hash), 512 + 128));
14994     }
14995
14996     /**
14997      * Calculate the MD5 of an array of little-endian words, and a bit length.
14998      */
14999     function binl(x, len) {
15000       var i, olda, oldb, oldc, oldd,
15001           a =  1732584193,
15002           b = -271733879,
15003           c = -1732584194,
15004           d =  271733878;
15005         
15006       /* append padding */
15007       x[len >> 5] |= 0x80 << ((len) % 32);
15008       x[(((len + 64) >>> 9) << 4) + 14] = len;
15009
15010       for (i = 0; i < x.length; i += 16) {
15011         olda = a;
15012         oldb = b;
15013         oldc = c;
15014         oldd = d;
15015
15016         a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
15017         d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
15018         c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
15019         b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
15020         a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
15021         d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
15022         c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
15023         b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
15024         a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
15025         d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
15026         c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
15027         b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
15028         a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
15029         d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
15030         c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
15031         b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
15032
15033         a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
15034         d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
15035         c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
15036         b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
15037         a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
15038         d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
15039         c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
15040         b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
15041         a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
15042         d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
15043         c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
15044         b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
15045         a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
15046         d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
15047         c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
15048         b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
15049
15050         a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
15051         d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
15052         c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
15053         b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
15054         a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
15055         d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
15056         c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
15057         b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
15058         a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
15059         d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
15060         c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
15061         b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
15062         a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
15063         d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
15064         c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
15065         b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
15066
15067         a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
15068         d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
15069         c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
15070         b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
15071         a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
15072         d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
15073         c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
15074         b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
15075         a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
15076         d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
15077         c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
15078         b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
15079         a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
15080         d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
15081         c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
15082         b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
15083
15084         a = safe_add(a, olda);
15085         b = safe_add(b, oldb);
15086         c = safe_add(c, oldc);
15087         d = safe_add(d, oldd);
15088       }
15089       return Array(a, b, c, d);
15090     }
15091
15092     /**
15093      * These functions implement the four basic operations the algorithm uses.
15094      */
15095     function md5_cmn(q, a, b, x, s, t) {
15096       return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
15097     }
15098     function md5_ff(a, b, c, d, x, s, t) {
15099       return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
15100     }
15101     function md5_gg(a, b, c, d, x, s, t) {
15102       return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
15103     }
15104     function md5_hh(a, b, c, d, x, s, t) {
15105       return md5_cmn(b ^ c ^ d, a, b, x, s, t);
15106     }
15107     function md5_ii(a, b, c, d, x, s, t) {
15108       return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
15109     }
15110   },
15111   /**
15112    * @member Hashes
15113    * @class Hashes.SHA1
15114    * @param {Object} [config]
15115    * @constructor
15116    * 
15117    * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1
15118    * Version 2.2 Copyright Paul Johnston 2000 - 2009.
15119    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15120    * See http://pajhome.org.uk/crypt/md5 for details.
15121    */
15122   SHA1 : function (options) {
15123    /**
15124      * Private config properties. You may need to tweak these to be compatible with
15125      * the server-side, but the defaults work in most cases.
15126      * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}
15127      */
15128     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase
15129         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance
15130         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding
15131
15132     // public methods
15133     this.hex = function (s) { 
15134         return rstr2hex(rstr(s, utf8), hexcase); 
15135     };
15136     this.b64 = function (s) { 
15137         return rstr2b64(rstr(s, utf8), b64pad);
15138     };
15139     this.any = function (s, e) { 
15140         return rstr2any(rstr(s, utf8), e);
15141     };
15142     this.hex_hmac = function (k, d) {
15143         return rstr2hex(rstr_hmac(k, d));
15144     };
15145     this.b64_hmac = function (k, d) { 
15146         return rstr2b64(rstr_hmac(k, d), b64pad); 
15147     };
15148     this.any_hmac = function (k, d, e) { 
15149         return rstr2any(rstr_hmac(k, d), e);
15150     };
15151     /**
15152      * Perform a simple self-test to see if the VM is working
15153      * @return {String} Hexadecimal hash sample
15154      * @public
15155      */
15156     this.vm_test = function () {
15157       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15158     };
15159     /** 
15160      * @description Enable/disable uppercase hexadecimal returned string 
15161      * @param {boolean} 
15162      * @return {Object} this
15163      * @public
15164      */ 
15165     this.setUpperCase = function (a) {
15166         if (typeof a === 'boolean') {
15167         hexcase = a;
15168       }
15169         return this;
15170     };
15171     /** 
15172      * @description Defines a base64 pad string 
15173      * @param {string} Pad
15174      * @return {Object} this
15175      * @public
15176      */ 
15177     this.setPad = function (a) {
15178       b64pad = a || b64pad;
15179         return this;
15180     };
15181     /** 
15182      * @description Defines a base64 pad string 
15183      * @param {boolean} 
15184      * @return {Object} this
15185      * @public
15186      */ 
15187     this.setUTF8 = function (a) {
15188         if (typeof a === 'boolean') {
15189         utf8 = a;
15190       }
15191         return this;
15192     };
15193
15194     // private methods
15195
15196     /**
15197          * Calculate the SHA-512 of a raw string
15198          */
15199         function rstr(s) {
15200       s = (utf8) ? utf8Encode(s) : s;
15201       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15202         }
15203
15204     /**
15205      * Calculate the HMAC-SHA1 of a key and some data (raw strings)
15206      */
15207     function rstr_hmac(key, data) {
15208         var bkey, ipad, opad, i, hash;
15209         key = (utf8) ? utf8Encode(key) : key;
15210         data = (utf8) ? utf8Encode(data) : data;
15211         bkey = rstr2binb(key);
15212
15213         if (bkey.length > 16) {
15214         bkey = binb(bkey, key.length * 8);
15215       }
15216         ipad = Array(16), opad = Array(16);
15217         for (i = 0; i < 16; i+=1) {
15218                 ipad[i] = bkey[i] ^ 0x36363636;
15219                 opad[i] = bkey[i] ^ 0x5C5C5C5C;
15220         }
15221         hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
15222         return binb2rstr(binb(opad.concat(hash), 512 + 160));
15223     }
15224
15225     /**
15226      * Calculate the SHA-1 of an array of big-endian words, and a bit length
15227      */
15228     function binb(x, len) {
15229       var i, j, t, olda, oldb, oldc, oldd, olde,
15230           w = Array(80),
15231           a =  1732584193,
15232           b = -271733879,
15233           c = -1732584194,
15234           d =  271733878,
15235           e = -1009589776;
15236
15237       /* append padding */
15238       x[len >> 5] |= 0x80 << (24 - len % 32);
15239       x[((len + 64 >> 9) << 4) + 15] = len;
15240
15241       for (i = 0; i < x.length; i += 16) {
15242         olda = a,
15243         oldb = b;
15244         oldc = c;
15245         oldd = d;
15246         olde = e;
15247       
15248         for (j = 0; j < 80; j+=1)       {
15249           if (j < 16) { 
15250             w[j] = x[i + j]; 
15251           } else { 
15252             w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); 
15253           }
15254           t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),
15255                                            safe_add(safe_add(e, w[j]), sha1_kt(j)));
15256           e = d;
15257           d = c;
15258           c = bit_rol(b, 30);
15259           b = a;
15260           a = t;
15261         }
15262
15263         a = safe_add(a, olda);
15264         b = safe_add(b, oldb);
15265         c = safe_add(c, oldc);
15266         d = safe_add(d, oldd);
15267         e = safe_add(e, olde);
15268       }
15269       return Array(a, b, c, d, e);
15270     }
15271
15272     /**
15273      * Perform the appropriate triplet combination function for the current
15274      * iteration
15275      */
15276     function sha1_ft(t, b, c, d) {
15277       if (t < 20) { return (b & c) | ((~b) & d); }
15278       if (t < 40) { return b ^ c ^ d; }
15279       if (t < 60) { return (b & c) | (b & d) | (c & d); }
15280       return b ^ c ^ d;
15281     }
15282
15283     /**
15284      * Determine the appropriate additive constant for the current iteration
15285      */
15286     function sha1_kt(t) {
15287       return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
15288                  (t < 60) ? -1894007588 : -899497514;
15289     }
15290   },
15291   /**
15292    * @class Hashes.SHA256
15293    * @param {config}
15294    * 
15295    * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2
15296    * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.
15297    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15298    * See http://pajhome.org.uk/crypt/md5 for details.
15299    * Also http://anmar.eu.org/projects/jssha2/
15300    */
15301   SHA256 : function (options) {
15302     /**
15303      * Private properties configuration variables. You may need to tweak these to be compatible with
15304      * the server-side, but the defaults work in most cases.
15305      * @see this.setUpperCase() method
15306      * @see this.setPad() method
15307      */
15308     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase  */
15309               b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', /* base-64 pad character. Default '=' for strict RFC compliance   */
15310               utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15311               sha256_K;
15312
15313     /* privileged (public) methods */
15314     this.hex = function (s) { 
15315       return rstr2hex(rstr(s, utf8)); 
15316     };
15317     this.b64 = function (s) { 
15318       return rstr2b64(rstr(s, utf8), b64pad);
15319     };
15320     this.any = function (s, e) { 
15321       return rstr2any(rstr(s, utf8), e); 
15322     };
15323     this.hex_hmac = function (k, d) { 
15324       return rstr2hex(rstr_hmac(k, d)); 
15325     };
15326     this.b64_hmac = function (k, d) { 
15327       return rstr2b64(rstr_hmac(k, d), b64pad);
15328     };
15329     this.any_hmac = function (k, d, e) { 
15330       return rstr2any(rstr_hmac(k, d), e); 
15331     };
15332     /**
15333      * Perform a simple self-test to see if the VM is working
15334      * @return {String} Hexadecimal hash sample
15335      * @public
15336      */
15337     this.vm_test = function () {
15338       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15339     };
15340     /** 
15341      * Enable/disable uppercase hexadecimal returned string 
15342      * @param {boolean} 
15343      * @return {Object} this
15344      * @public
15345      */ 
15346     this.setUpperCase = function (a) {
15347       if (typeof a === 'boolean') { 
15348         hexcase = a;
15349       }
15350       return this;
15351     };
15352     /** 
15353      * @description Defines a base64 pad string 
15354      * @param {string} Pad
15355      * @return {Object} this
15356      * @public
15357      */ 
15358     this.setPad = function (a) {
15359       b64pad = a || b64pad;
15360       return this;
15361     };
15362     /** 
15363      * Defines a base64 pad string 
15364      * @param {boolean} 
15365      * @return {Object} this
15366      * @public
15367      */ 
15368     this.setUTF8 = function (a) {
15369       if (typeof a === 'boolean') {
15370         utf8 = a;
15371       }
15372       return this;
15373     };
15374     
15375     // private methods
15376
15377     /**
15378      * Calculate the SHA-512 of a raw string
15379      */
15380     function rstr(s, utf8) {
15381       s = (utf8) ? utf8Encode(s) : s;
15382       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15383     }
15384
15385     /**
15386      * Calculate the HMAC-sha256 of a key and some data (raw strings)
15387      */
15388     function rstr_hmac(key, data) {
15389       key = (utf8) ? utf8Encode(key) : key;
15390       data = (utf8) ? utf8Encode(data) : data;
15391       var hash, i = 0,
15392           bkey = rstr2binb(key), 
15393           ipad = Array(16), 
15394           opad = Array(16);
15395
15396       if (bkey.length > 16) { bkey = binb(bkey, key.length * 8); }
15397       
15398       for (; i < 16; i+=1) {
15399         ipad[i] = bkey[i] ^ 0x36363636;
15400         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15401       }
15402       
15403       hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
15404       return binb2rstr(binb(opad.concat(hash), 512 + 256));
15405     }
15406     
15407     /*
15408      * Main sha256 function, with its support functions
15409      */
15410     function sha256_S (X, n) {return ( X >>> n ) | (X << (32 - n));}
15411     function sha256_R (X, n) {return ( X >>> n );}
15412     function sha256_Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}
15413     function sha256_Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}
15414     function sha256_Sigma0256(x) {return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));}
15415     function sha256_Sigma1256(x) {return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));}
15416     function sha256_Gamma0256(x) {return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));}
15417     function sha256_Gamma1256(x) {return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));}
15418     function sha256_Sigma0512(x) {return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));}
15419     function sha256_Sigma1512(x) {return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));}
15420     function sha256_Gamma0512(x) {return (sha256_S(x, 1)  ^ sha256_S(x, 8) ^ sha256_R(x, 7));}
15421     function sha256_Gamma1512(x) {return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));}
15422     
15423     sha256_K = [
15424       1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,
15425       -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,
15426       1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,
15427       264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,
15428       -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,
15429       113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,
15430       1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,
15431       -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,
15432       430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,
15433       1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,
15434       -1866530822, -1538233109, -1090935817, -965641998
15435     ];
15436     
15437     function binb(m, l) {
15438       var HASH = [1779033703, -1150833019, 1013904242, -1521486534,
15439                  1359893119, -1694144372, 528734635, 1541459225];
15440       var W = new Array(64);
15441       var a, b, c, d, e, f, g, h;
15442       var i, j, T1, T2;
15443     
15444       /* append padding */
15445       m[l >> 5] |= 0x80 << (24 - l % 32);
15446       m[((l + 64 >> 9) << 4) + 15] = l;
15447     
15448       for (i = 0; i < m.length; i += 16)
15449       {
15450       a = HASH[0];
15451       b = HASH[1];
15452       c = HASH[2];
15453       d = HASH[3];
15454       e = HASH[4];
15455       f = HASH[5];
15456       g = HASH[6];
15457       h = HASH[7];
15458     
15459       for (j = 0; j < 64; j+=1)
15460       {
15461         if (j < 16) { 
15462           W[j] = m[j + i];
15463         } else { 
15464           W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),
15465                           sha256_Gamma0256(W[j - 15])), W[j - 16]);
15466         }
15467     
15468         T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),
15469                                   sha256_K[j]), W[j]);
15470         T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));
15471         h = g;
15472         g = f;
15473         f = e;
15474         e = safe_add(d, T1);
15475         d = c;
15476         c = b;
15477         b = a;
15478         a = safe_add(T1, T2);
15479       }
15480     
15481       HASH[0] = safe_add(a, HASH[0]);
15482       HASH[1] = safe_add(b, HASH[1]);
15483       HASH[2] = safe_add(c, HASH[2]);
15484       HASH[3] = safe_add(d, HASH[3]);
15485       HASH[4] = safe_add(e, HASH[4]);
15486       HASH[5] = safe_add(f, HASH[5]);
15487       HASH[6] = safe_add(g, HASH[6]);
15488       HASH[7] = safe_add(h, HASH[7]);
15489       }
15490       return HASH;
15491     }
15492
15493   },
15494
15495   /**
15496    * @class Hashes.SHA512
15497    * @param {config}
15498    * 
15499    * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2
15500    * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.
15501    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15502    * See http://pajhome.org.uk/crypt/md5 for details. 
15503    */
15504   SHA512 : function (options) {
15505     /**
15506      * Private properties configuration variables. You may need to tweak these to be compatible with
15507      * the server-side, but the defaults work in most cases.
15508      * @see this.setUpperCase() method
15509      * @see this.setPad() method
15510      */
15511     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false , /* hexadecimal output case format. false - lowercase; true - uppercase  */
15512         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=',  /* base-64 pad character. Default '=' for strict RFC compliance   */
15513         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15514         sha512_k;
15515
15516     /* privileged (public) methods */
15517     this.hex = function (s) { 
15518       return rstr2hex(rstr(s)); 
15519     };
15520     this.b64 = function (s) { 
15521       return rstr2b64(rstr(s), b64pad);  
15522     };
15523     this.any = function (s, e) { 
15524       return rstr2any(rstr(s), e);
15525     };
15526     this.hex_hmac = function (k, d) {
15527       return rstr2hex(rstr_hmac(k, d));
15528     };
15529     this.b64_hmac = function (k, d) { 
15530       return rstr2b64(rstr_hmac(k, d), b64pad);
15531     };
15532     this.any_hmac = function (k, d, e) { 
15533       return rstr2any(rstr_hmac(k, d), e);
15534     };
15535     /**
15536      * Perform a simple self-test to see if the VM is working
15537      * @return {String} Hexadecimal hash sample
15538      * @public
15539      */
15540     this.vm_test = function () {
15541       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15542     };
15543     /** 
15544      * @description Enable/disable uppercase hexadecimal returned string 
15545      * @param {boolean} 
15546      * @return {Object} this
15547      * @public
15548      */ 
15549     this.setUpperCase = function (a) {
15550       if (typeof a === 'boolean') {
15551         hexcase = a;
15552       }
15553       return this;
15554     };
15555     /** 
15556      * @description Defines a base64 pad string 
15557      * @param {string} Pad
15558      * @return {Object} this
15559      * @public
15560      */ 
15561     this.setPad = function (a) {
15562       b64pad = a || b64pad;
15563       return this;
15564     };
15565     /** 
15566      * @description Defines a base64 pad string 
15567      * @param {boolean} 
15568      * @return {Object} this
15569      * @public
15570      */ 
15571     this.setUTF8 = function (a) {
15572       if (typeof a === 'boolean') {
15573         utf8 = a;
15574       }
15575       return this;
15576     };
15577
15578     /* private methods */
15579     
15580     /**
15581      * Calculate the SHA-512 of a raw string
15582      */
15583     function rstr(s) {
15584       s = (utf8) ? utf8Encode(s) : s;
15585       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15586     }
15587     /*
15588      * Calculate the HMAC-SHA-512 of a key and some data (raw strings)
15589      */
15590     function rstr_hmac(key, data) {
15591       key = (utf8) ? utf8Encode(key) : key;
15592       data = (utf8) ? utf8Encode(data) : data;
15593       
15594       var hash, i = 0, 
15595           bkey = rstr2binb(key),
15596           ipad = Array(32), opad = Array(32);
15597
15598       if (bkey.length > 32) { bkey = binb(bkey, key.length * 8); }
15599       
15600       for (; i < 32; i+=1) {
15601         ipad[i] = bkey[i] ^ 0x36363636;
15602         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15603       }
15604       
15605       hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);
15606       return binb2rstr(binb(opad.concat(hash), 1024 + 512));
15607     }
15608             
15609     /**
15610      * Calculate the SHA-512 of an array of big-endian dwords, and a bit length
15611      */
15612     function binb(x, len) {
15613       var j, i, l,
15614           W = new Array(80),
15615           hash = new Array(16),
15616           //Initial hash values
15617           H = [
15618             new int64(0x6a09e667, -205731576),
15619             new int64(-1150833019, -2067093701),
15620             new int64(0x3c6ef372, -23791573),
15621             new int64(-1521486534, 0x5f1d36f1),
15622             new int64(0x510e527f, -1377402159),
15623             new int64(-1694144372, 0x2b3e6c1f),
15624             new int64(0x1f83d9ab, -79577749),
15625             new int64(0x5be0cd19, 0x137e2179)
15626           ],
15627           T1 = new int64(0, 0),
15628           T2 = new int64(0, 0),
15629           a = new int64(0,0),
15630           b = new int64(0,0),
15631           c = new int64(0,0),
15632           d = new int64(0,0),
15633           e = new int64(0,0),
15634           f = new int64(0,0),
15635           g = new int64(0,0),
15636           h = new int64(0,0),
15637           //Temporary variables not specified by the document
15638           s0 = new int64(0, 0),
15639           s1 = new int64(0, 0),
15640           Ch = new int64(0, 0),
15641           Maj = new int64(0, 0),
15642           r1 = new int64(0, 0),
15643           r2 = new int64(0, 0),
15644           r3 = new int64(0, 0);
15645
15646       if (sha512_k === undefined) {
15647           //SHA512 constants
15648           sha512_k = [
15649             new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),
15650             new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),
15651             new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),
15652             new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),
15653             new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),
15654             new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),
15655             new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),
15656             new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),
15657             new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),
15658             new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),
15659             new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),
15660             new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),
15661             new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),
15662             new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),
15663             new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),
15664             new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),
15665             new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),
15666             new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),
15667             new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),
15668             new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),
15669             new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),
15670             new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),
15671             new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),
15672             new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),
15673             new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),
15674             new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),
15675             new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),
15676             new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),
15677             new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),
15678             new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),
15679             new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),
15680             new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),
15681             new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),
15682             new int64(-354779690, -840897762), new int64(-176337025, -294727304),
15683             new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),
15684             new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),
15685             new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),
15686             new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),
15687             new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),
15688             new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)
15689           ];
15690       }
15691   
15692       for (i=0; i<80; i+=1) {
15693         W[i] = new int64(0, 0);
15694       }
15695     
15696       // append padding to the source string. The format is described in the FIPS.
15697       x[len >> 5] |= 0x80 << (24 - (len & 0x1f));
15698       x[((len + 128 >> 10)<< 5) + 31] = len;
15699       l = x.length;
15700       for (i = 0; i<l; i+=32) { //32 dwords is the block size
15701         int64copy(a, H[0]);
15702         int64copy(b, H[1]);
15703         int64copy(c, H[2]);
15704         int64copy(d, H[3]);
15705         int64copy(e, H[4]);
15706         int64copy(f, H[5]);
15707         int64copy(g, H[6]);
15708         int64copy(h, H[7]);
15709       
15710         for (j=0; j<16; j+=1) {
15711           W[j].h = x[i + 2*j];
15712           W[j].l = x[i + 2*j + 1];
15713         }
15714       
15715         for (j=16; j<80; j+=1) {
15716           //sigma1
15717           int64rrot(r1, W[j-2], 19);
15718           int64revrrot(r2, W[j-2], 29);
15719           int64shr(r3, W[j-2], 6);
15720           s1.l = r1.l ^ r2.l ^ r3.l;
15721           s1.h = r1.h ^ r2.h ^ r3.h;
15722           //sigma0
15723           int64rrot(r1, W[j-15], 1);
15724           int64rrot(r2, W[j-15], 8);
15725           int64shr(r3, W[j-15], 7);
15726           s0.l = r1.l ^ r2.l ^ r3.l;
15727           s0.h = r1.h ^ r2.h ^ r3.h;
15728       
15729           int64add4(W[j], s1, W[j-7], s0, W[j-16]);
15730         }
15731       
15732         for (j = 0; j < 80; j+=1) {
15733           //Ch
15734           Ch.l = (e.l & f.l) ^ (~e.l & g.l);
15735           Ch.h = (e.h & f.h) ^ (~e.h & g.h);
15736       
15737           //Sigma1
15738           int64rrot(r1, e, 14);
15739           int64rrot(r2, e, 18);
15740           int64revrrot(r3, e, 9);
15741           s1.l = r1.l ^ r2.l ^ r3.l;
15742           s1.h = r1.h ^ r2.h ^ r3.h;
15743       
15744           //Sigma0
15745           int64rrot(r1, a, 28);
15746           int64revrrot(r2, a, 2);
15747           int64revrrot(r3, a, 7);
15748           s0.l = r1.l ^ r2.l ^ r3.l;
15749           s0.h = r1.h ^ r2.h ^ r3.h;
15750       
15751           //Maj
15752           Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);
15753           Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);
15754       
15755           int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);
15756           int64add(T2, s0, Maj);
15757       
15758           int64copy(h, g);
15759           int64copy(g, f);
15760           int64copy(f, e);
15761           int64add(e, d, T1);
15762           int64copy(d, c);
15763           int64copy(c, b);
15764           int64copy(b, a);
15765           int64add(a, T1, T2);
15766         }
15767         int64add(H[0], H[0], a);
15768         int64add(H[1], H[1], b);
15769         int64add(H[2], H[2], c);
15770         int64add(H[3], H[3], d);
15771         int64add(H[4], H[4], e);
15772         int64add(H[5], H[5], f);
15773         int64add(H[6], H[6], g);
15774         int64add(H[7], H[7], h);
15775       }
15776     
15777       //represent the hash as an array of 32-bit dwords
15778       for (i=0; i<8; i+=1) {
15779         hash[2*i] = H[i].h;
15780         hash[2*i + 1] = H[i].l;
15781       }
15782       return hash;
15783     }
15784     
15785     //A constructor for 64-bit numbers
15786     function int64(h, l) {
15787       this.h = h;
15788       this.l = l;
15789       //this.toString = int64toString;
15790     }
15791     
15792     //Copies src into dst, assuming both are 64-bit numbers
15793     function int64copy(dst, src) {
15794       dst.h = src.h;
15795       dst.l = src.l;
15796     }
15797     
15798     //Right-rotates a 64-bit number by shift
15799     //Won't handle cases of shift>=32
15800     //The function revrrot() is for that
15801     function int64rrot(dst, x, shift) {
15802       dst.l = (x.l >>> shift) | (x.h << (32-shift));
15803       dst.h = (x.h >>> shift) | (x.l << (32-shift));
15804     }
15805     
15806     //Reverses the dwords of the source and then rotates right by shift.
15807     //This is equivalent to rotation by 32+shift
15808     function int64revrrot(dst, x, shift) {
15809       dst.l = (x.h >>> shift) | (x.l << (32-shift));
15810       dst.h = (x.l >>> shift) | (x.h << (32-shift));
15811     }
15812     
15813     //Bitwise-shifts right a 64-bit number by shift
15814     //Won't handle shift>=32, but it's never needed in SHA512
15815     function int64shr(dst, x, shift) {
15816       dst.l = (x.l >>> shift) | (x.h << (32-shift));
15817       dst.h = (x.h >>> shift);
15818     }
15819     
15820     //Adds two 64-bit numbers
15821     //Like the original implementation, does not rely on 32-bit operations
15822     function int64add(dst, x, y) {
15823        var w0 = (x.l & 0xffff) + (y.l & 0xffff);
15824        var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);
15825        var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);
15826        var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);
15827        dst.l = (w0 & 0xffff) | (w1 << 16);
15828        dst.h = (w2 & 0xffff) | (w3 << 16);
15829     }
15830     
15831     //Same, except with 4 addends. Works faster than adding them one by one.
15832     function int64add4(dst, a, b, c, d) {
15833        var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);
15834        var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);
15835        var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);
15836        var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);
15837        dst.l = (w0 & 0xffff) | (w1 << 16);
15838        dst.h = (w2 & 0xffff) | (w3 << 16);
15839     }
15840     
15841     //Same, except with 5 addends
15842     function int64add5(dst, a, b, c, d, e) {
15843       var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff),
15844           w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16),
15845           w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16),
15846           w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);
15847        dst.l = (w0 & 0xffff) | (w1 << 16);
15848        dst.h = (w2 & 0xffff) | (w3 << 16);
15849     }
15850   },
15851   /**
15852    * @class Hashes.RMD160
15853    * @constructor
15854    * @param {Object} [config]
15855    * 
15856    * A JavaScript implementation of the RIPEMD-160 Algorithm
15857    * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.
15858    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15859    * See http://pajhome.org.uk/crypt/md5 for details.
15860    * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/
15861    */
15862   RMD160 : function (options) {
15863     /**
15864      * Private properties configuration variables. You may need to tweak these to be compatible with
15865      * the server-side, but the defaults work in most cases.
15866      * @see this.setUpperCase() method
15867      * @see this.setPad() method
15868      */
15869     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,   /* hexadecimal output case format. false - lowercase; true - uppercase  */
15870         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=',  /* base-64 pad character. Default '=' for strict RFC compliance   */
15871         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15872         rmd160_r1 = [
15873            0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
15874            7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,
15875            3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,
15876            1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,
15877            4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13
15878         ],
15879         rmd160_r2 = [
15880            5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,
15881            6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,
15882           15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,
15883            8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,
15884           12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11
15885         ],
15886         rmd160_s1 = [
15887           11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,
15888            7,  6,  8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,
15889           11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,
15890           11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,
15891            9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6
15892         ],
15893         rmd160_s2 = [
15894            8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,
15895            9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,
15896            9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,
15897           15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,
15898            8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11
15899         ];
15900
15901     /* privileged (public) methods */
15902     this.hex = function (s) {
15903       return rstr2hex(rstr(s, utf8)); 
15904     };
15905     this.b64 = function (s) {
15906       return rstr2b64(rstr(s, utf8), b64pad);
15907     };
15908     this.any = function (s, e) { 
15909       return rstr2any(rstr(s, utf8), e);
15910     };
15911     this.hex_hmac = function (k, d) { 
15912       return rstr2hex(rstr_hmac(k, d));
15913     };
15914     this.b64_hmac = function (k, d) { 
15915       return rstr2b64(rstr_hmac(k, d), b64pad);
15916     };
15917     this.any_hmac = function (k, d, e) { 
15918       return rstr2any(rstr_hmac(k, d), e); 
15919     };
15920     /**
15921      * Perform a simple self-test to see if the VM is working
15922      * @return {String} Hexadecimal hash sample
15923      * @public
15924      */
15925     this.vm_test = function () {
15926       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15927     };
15928     /** 
15929      * @description Enable/disable uppercase hexadecimal returned string 
15930      * @param {boolean} 
15931      * @return {Object} this
15932      * @public
15933      */ 
15934     this.setUpperCase = function (a) {
15935       if (typeof a === 'boolean' ) { hexcase = a; }
15936       return this;
15937     };
15938     /** 
15939      * @description Defines a base64 pad string 
15940      * @param {string} Pad
15941      * @return {Object} this
15942      * @public
15943      */ 
15944     this.setPad = function (a) {
15945       if (typeof a !== 'undefined' ) { b64pad = a; }
15946       return this;
15947     };
15948     /** 
15949      * @description Defines a base64 pad string 
15950      * @param {boolean} 
15951      * @return {Object} this
15952      * @public
15953      */ 
15954     this.setUTF8 = function (a) {
15955       if (typeof a === 'boolean') { utf8 = a; }
15956       return this;
15957     };
15958
15959     /* private methods */
15960
15961     /**
15962      * Calculate the rmd160 of a raw string
15963      */
15964     function rstr(s) {
15965       s = (utf8) ? utf8Encode(s) : s;
15966       return binl2rstr(binl(rstr2binl(s), s.length * 8));
15967     }
15968
15969     /**
15970      * Calculate the HMAC-rmd160 of a key and some data (raw strings)
15971      */
15972     function rstr_hmac(key, data) {
15973       key = (utf8) ? utf8Encode(key) : key;
15974       data = (utf8) ? utf8Encode(data) : data;
15975       var i, hash,
15976           bkey = rstr2binl(key),
15977           ipad = Array(16), opad = Array(16);
15978
15979       if (bkey.length > 16) { 
15980         bkey = binl(bkey, key.length * 8); 
15981       }
15982       
15983       for (i = 0; i < 16; i+=1) {
15984         ipad[i] = bkey[i] ^ 0x36363636;
15985         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15986       }
15987       hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
15988       return binl2rstr(binl(opad.concat(hash), 512 + 160));
15989     }
15990
15991     /**
15992      * Convert an array of little-endian words to a string
15993      */
15994     function binl2rstr(input) {
15995       var i, output = '', l = input.length * 32;
15996       for (i = 0; i < l; i += 8) {
15997         output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
15998       }
15999       return output;
16000     }
16001
16002     /**
16003      * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length.
16004      */
16005     function binl(x, len) {
16006       var T, j, i, l,
16007           h0 = 0x67452301,
16008           h1 = 0xefcdab89,
16009           h2 = 0x98badcfe,
16010           h3 = 0x10325476,
16011           h4 = 0xc3d2e1f0,
16012           A1, B1, C1, D1, E1,
16013           A2, B2, C2, D2, E2;
16014
16015       /* append padding */
16016       x[len >> 5] |= 0x80 << (len % 32);
16017       x[(((len + 64) >>> 9) << 4) + 14] = len;
16018       l = x.length;
16019       
16020       for (i = 0; i < l; i+=16) {
16021         A1 = A2 = h0; B1 = B2 = h1; C1 = C2 = h2; D1 = D2 = h3; E1 = E2 = h4;
16022         for (j = 0; j <= 79; j+=1) {
16023           T = safe_add(A1, rmd160_f(j, B1, C1, D1));
16024           T = safe_add(T, x[i + rmd160_r1[j]]);
16025           T = safe_add(T, rmd160_K1(j));
16026           T = safe_add(bit_rol(T, rmd160_s1[j]), E1);
16027           A1 = E1; E1 = D1; D1 = bit_rol(C1, 10); C1 = B1; B1 = T;
16028           T = safe_add(A2, rmd160_f(79-j, B2, C2, D2));
16029           T = safe_add(T, x[i + rmd160_r2[j]]);
16030           T = safe_add(T, rmd160_K2(j));
16031           T = safe_add(bit_rol(T, rmd160_s2[j]), E2);
16032           A2 = E2; E2 = D2; D2 = bit_rol(C2, 10); C2 = B2; B2 = T;
16033         }
16034
16035         T = safe_add(h1, safe_add(C1, D2));
16036         h1 = safe_add(h2, safe_add(D1, E2));
16037         h2 = safe_add(h3, safe_add(E1, A2));
16038         h3 = safe_add(h4, safe_add(A1, B2));
16039         h4 = safe_add(h0, safe_add(B1, C2));
16040         h0 = T;
16041       }
16042       return [h0, h1, h2, h3, h4];
16043     }
16044
16045     // specific algorithm methods 
16046     function rmd160_f(j, x, y, z) {
16047       return ( 0 <= j && j <= 15) ? (x ^ y ^ z) :
16048          (16 <= j && j <= 31) ? (x & y) | (~x & z) :
16049          (32 <= j && j <= 47) ? (x | ~y) ^ z :
16050          (48 <= j && j <= 63) ? (x & z) | (y & ~z) :
16051          (64 <= j && j <= 79) ? x ^ (y | ~z) :
16052          'rmd160_f: j out of range';
16053     }
16054
16055     function rmd160_K1(j) {
16056       return ( 0 <= j && j <= 15) ? 0x00000000 :
16057          (16 <= j && j <= 31) ? 0x5a827999 :
16058          (32 <= j && j <= 47) ? 0x6ed9eba1 :
16059          (48 <= j && j <= 63) ? 0x8f1bbcdc :
16060          (64 <= j && j <= 79) ? 0xa953fd4e :
16061          'rmd160_K1: j out of range';
16062     }
16063
16064     function rmd160_K2(j){
16065       return ( 0 <= j && j <= 15) ? 0x50a28be6 :
16066          (16 <= j && j <= 31) ? 0x5c4dd124 :
16067          (32 <= j && j <= 47) ? 0x6d703ef3 :
16068          (48 <= j && j <= 63) ? 0x7a6d76e9 :
16069          (64 <= j && j <= 79) ? 0x00000000 :
16070          'rmd160_K2: j out of range';
16071     }
16072   }
16073 };
16074
16075   // exposes Hashes
16076   (function( window, undefined ) {
16077     var freeExports = false;
16078     if (typeof exports === 'object' ) {
16079       freeExports = exports;
16080       if (exports && typeof global === 'object' && global && global === global.global ) { window = global; }
16081     }
16082
16083     if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
16084       // define as an anonymous module, so, through path mapping, it can be aliased
16085       define(function () { return Hashes; });
16086     }
16087     else if ( freeExports ) {
16088       // in Node.js or RingoJS v0.8.0+
16089       if ( typeof module === 'object' && module && module.exports === freeExports ) {
16090         module.exports = Hashes;
16091       }
16092       // in Narwhal or RingoJS v0.7.0-
16093       else {
16094         freeExports.Hashes = Hashes;
16095       }
16096     }
16097     else {
16098       // in a browser or Rhino
16099       window.Hashes = Hashes;
16100     }
16101   }( this ));
16102 }()); // IIFE
16103
16104 })(window)
16105 },{}],2:[function(require,module,exports){
16106 'use strict';
16107
16108 var hashes = require('jshashes'),
16109     xtend = require('xtend'),
16110     sha1 = new hashes.SHA1();
16111
16112 var ohauth = {};
16113
16114 ohauth.qsString = function(obj) {
16115     return Object.keys(obj).sort().map(function(key) {
16116         return ohauth.percentEncode(key) + '=' +
16117             ohauth.percentEncode(obj[key]);
16118     }).join('&');
16119 };
16120
16121 ohauth.stringQs = function(str) {
16122     return str.split('&').reduce(function(obj, pair){
16123         var parts = pair.split('=');
16124         obj[decodeURIComponent(parts[0])] = (null === parts[1]) ?
16125             '' : decodeURIComponent(parts[1]);
16126         return obj;
16127     }, {});
16128 };
16129
16130 ohauth.rawxhr = function(method, url, data, headers, callback) {
16131     var xhr = new XMLHttpRequest(),
16132         twoHundred = /^20\d$/;
16133     xhr.onreadystatechange = function() {
16134         if (4 == xhr.readyState && 0 !== xhr.status) {
16135             if (twoHundred.test(xhr.status)) callback(null, xhr);
16136             else return callback(xhr, null);
16137         }
16138     };
16139     xhr.onerror = function(e) { return callback(e, null); };
16140     xhr.open(method, url, true);
16141     for (var h in headers) xhr.setRequestHeader(h, headers[h]);
16142     xhr.send(data);
16143 };
16144
16145 ohauth.xhr = function(method, url, auth, data, options, callback) {
16146     var headers = (options && options.header) || {
16147         'Content-Type': 'application/x-www-form-urlencoded'
16148     };
16149     headers.Authorization = 'OAuth ' + ohauth.authHeader(auth);
16150     ohauth.rawxhr(method, url, data, headers, callback);
16151 };
16152
16153 ohauth.nonce = function() {
16154     for (var o = ''; o.length < 6;) {
16155         o += '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'[Math.floor(Math.random() * 61)];
16156     }
16157     return o;
16158 };
16159
16160 ohauth.authHeader = function(obj) {
16161     return Object.keys(obj).sort().map(function(key) {
16162         return encodeURIComponent(key) + '="' + encodeURIComponent(obj[key]) + '"';
16163     }).join(', ');
16164 };
16165
16166 ohauth.timestamp = function() { return ~~((+new Date()) / 1000); };
16167
16168 ohauth.percentEncode = function(s) {
16169     return encodeURIComponent(s)
16170         .replace(/\!/g, '%21').replace(/\'/g, '%27')
16171         .replace(/\*/g, '%2A').replace(/\(/g, '%28').replace(/\)/g, '%29');
16172 };
16173
16174 ohauth.baseString = function(method, url, params) {
16175     if (params.oauth_signature) delete params.oauth_signature;
16176     return [
16177         method,
16178         ohauth.percentEncode(url),
16179         ohauth.percentEncode(ohauth.qsString(params))].join('&');
16180 };
16181
16182 ohauth.signature = function(oauth_secret, token_secret, baseString) {
16183     return sha1.b64_hmac(
16184         ohauth.percentEncode(oauth_secret) + '&' +
16185         ohauth.percentEncode(token_secret),
16186         baseString);
16187 };
16188
16189 /**
16190  * Takes an options object for configuration (consumer_key,
16191  * consumer_secret, version, signature_method, token) and returns a
16192  * function that generates the Authorization header for given data.
16193  *
16194  * The returned function takes these parameters:
16195  * - method: GET/POST/...
16196  * - uri: full URI with protocol, port, path and query string
16197  * - extra_params: any extra parameters (that are passed in the POST data),
16198  *   can be an object or a from-urlencoded string.
16199  *
16200  * Returned function returns full OAuth header with "OAuth" string in it.
16201  */
16202
16203 ohauth.headerGenerator = function(options) {
16204     options = options || {};
16205     var consumer_key = options.consumer_key || '',
16206         consumer_secret = options.consumer_secret || '',
16207         signature_method = options.signature_method || 'HMAC-SHA1',
16208         version = options.version || '1.0',
16209         token = options.token || '';
16210
16211     return function(method, uri, extra_params) {
16212         method = method.toUpperCase();
16213         if (typeof extra_params === 'string' && extra_params.length > 0) {
16214             extra_params = ohauth.stringQs(extra_params);
16215         }
16216
16217         var uri_parts = uri.split('?', 2),
16218         base_uri = uri_parts[0];
16219
16220         var query_params = uri_parts.length === 2 ?
16221             ohauth.stringQs(uri_parts[1]) : {};
16222
16223         var oauth_params = {
16224             oauth_consumer_key: consumer_key,
16225             oauth_signature_method: signature_method,
16226             oauth_version: version,
16227             oauth_timestamp: ohauth.timestamp(),
16228             oauth_nonce: ohauth.nonce()
16229         };
16230
16231         if (token) oauth_params.oauth_token = token;
16232
16233         var all_params = xtend({}, oauth_params, query_params, extra_params),
16234             base_str = ohauth.baseString(method, base_uri, all_params);
16235
16236         oauth_params.oauth_signature = ohauth.signature(consumer_secret, token, base_str);
16237
16238         return 'OAuth ' + ohauth.authHeader(oauth_params);
16239     };
16240 };
16241
16242 module.exports = ohauth;
16243
16244 },{"jshashes":7,"xtend":4}],6:[function(require,module,exports){
16245 module.exports = Object.keys || require('./shim');
16246
16247
16248 },{"./shim":8}],8:[function(require,module,exports){
16249 (function () {
16250         "use strict";
16251
16252         // modified from https://github.com/kriskowal/es5-shim
16253         var has = Object.prototype.hasOwnProperty,
16254                 is = require('is'),
16255                 forEach = require('foreach'),
16256                 hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),
16257                 dontEnums = [
16258                         "toString",
16259                         "toLocaleString",
16260                         "valueOf",
16261                         "hasOwnProperty",
16262                         "isPrototypeOf",
16263                         "propertyIsEnumerable",
16264                         "constructor"
16265                 ],
16266                 keysShim;
16267
16268         keysShim = function keys(object) {
16269                 if (!is.object(object) && !is.array(object)) {
16270                         throw new TypeError("Object.keys called on a non-object");
16271                 }
16272
16273                 var name, theKeys = [];
16274                 for (name in object) {
16275                         if (has.call(object, name)) {
16276                                 theKeys.push(name);
16277                         }
16278                 }
16279
16280                 if (hasDontEnumBug) {
16281                         forEach(dontEnums, function (dontEnum) {
16282                                 if (has.call(object, dontEnum)) {
16283                                         theKeys.push(dontEnum);
16284                                 }
16285                         });
16286                 }
16287                 return theKeys;
16288         };
16289
16290         module.exports = keysShim;
16291 }());
16292
16293
16294 },{"is":9,"foreach":10}],9:[function(require,module,exports){
16295
16296 /**!
16297  * is
16298  * the definitive JavaScript type testing library
16299  * 
16300  * @copyright 2013 Enrico Marino
16301  * @license MIT
16302  */
16303
16304 var objProto = Object.prototype;
16305 var owns = objProto.hasOwnProperty;
16306 var toString = objProto.toString;
16307 var isActualNaN = function (value) {
16308   return value !== value;
16309 };
16310 var NON_HOST_TYPES = {
16311   "boolean": 1,
16312   "number": 1,
16313   "string": 1,
16314   "undefined": 1
16315 };
16316
16317 /**
16318  * Expose `is`
16319  */
16320
16321 var is = module.exports = {};
16322
16323 /**
16324  * Test general.
16325  */
16326
16327 /**
16328  * is.type
16329  * Test if `value` is a type of `type`.
16330  *
16331  * @param {Mixed} value value to test
16332  * @param {String} type type
16333  * @return {Boolean} true if `value` is a type of `type`, false otherwise
16334  * @api public
16335  */
16336
16337 is.a =
16338 is.type = function (value, type) {
16339   return typeof value === type;
16340 };
16341
16342 /**
16343  * is.defined
16344  * Test if `value` is defined.
16345  *
16346  * @param {Mixed} value value to test
16347  * @return {Boolean} true if 'value' is defined, false otherwise
16348  * @api public
16349  */
16350
16351 is.defined = function (value) {
16352   return value !== undefined;
16353 };
16354
16355 /**
16356  * is.empty
16357  * Test if `value` is empty.
16358  *
16359  * @param {Mixed} value value to test
16360  * @return {Boolean} true if `value` is empty, false otherwise
16361  * @api public
16362  */
16363
16364 is.empty = function (value) {
16365   var type = toString.call(value);
16366   var key;
16367
16368   if ('[object Array]' === type || '[object Arguments]' === type) {
16369     return value.length === 0;
16370   }
16371
16372   if ('[object Object]' === type) {
16373     for (key in value) if (owns.call(value, key)) return false;
16374     return true;
16375   }
16376
16377   if ('[object String]' === type) {
16378     return '' === value;
16379   }
16380
16381   return false;
16382 };
16383
16384 /**
16385  * is.equal
16386  * Test if `value` is equal to `other`.
16387  *
16388  * @param {Mixed} value value to test
16389  * @param {Mixed} other value to compare with
16390  * @return {Boolean} true if `value` is equal to `other`, false otherwise
16391  */
16392
16393 is.equal = function (value, other) {
16394   var type = toString.call(value)
16395   var key;
16396
16397   if (type !== toString.call(other)) {
16398     return false;
16399   }
16400
16401   if ('[object Object]' === type) {
16402     for (key in value) {
16403       if (!is.equal(value[key], other[key])) {
16404         return false;
16405       }
16406     }
16407     return true;
16408   }
16409
16410   if ('[object Array]' === type) {
16411     key = value.length;
16412     if (key !== other.length) {
16413       return false;
16414     }
16415     while (--key) {
16416       if (!is.equal(value[key], other[key])) {
16417         return false;
16418       }
16419     }
16420     return true;
16421   }
16422
16423   if ('[object Function]' === type) {
16424     return value.prototype === other.prototype;
16425   }
16426
16427   if ('[object Date]' === type) {
16428     return value.getTime() === other.getTime();
16429   }
16430
16431   return value === other;
16432 };
16433
16434 /**
16435  * is.hosted
16436  * Test if `value` is hosted by `host`.
16437  *
16438  * @param {Mixed} value to test
16439  * @param {Mixed} host host to test with
16440  * @return {Boolean} true if `value` is hosted by `host`, false otherwise
16441  * @api public
16442  */
16443
16444 is.hosted = function (value, host) {
16445   var type = typeof host[value];
16446   return type === 'object' ? !!host[value] : !NON_HOST_TYPES[type];
16447 };
16448
16449 /**
16450  * is.instance
16451  * Test if `value` is an instance of `constructor`.
16452  *
16453  * @param {Mixed} value value to test
16454  * @return {Boolean} true if `value` is an instance of `constructor`
16455  * @api public
16456  */
16457
16458 is.instance = is['instanceof'] = function (value, constructor) {
16459   return value instanceof constructor;
16460 };
16461
16462 /**
16463  * is.null
16464  * Test if `value` is null.
16465  *
16466  * @param {Mixed} value value to test
16467  * @return {Boolean} true if `value` is null, false otherwise
16468  * @api public
16469  */
16470
16471 is['null'] = function (value) {
16472   return value === null;
16473 };
16474
16475 /**
16476  * is.undefined
16477  * Test if `value` is undefined.
16478  *
16479  * @param {Mixed} value value to test
16480  * @return {Boolean} true if `value` is undefined, false otherwise
16481  * @api public
16482  */
16483
16484 is.undefined = function (value) {
16485   return value === undefined;
16486 };
16487
16488 /**
16489  * Test arguments.
16490  */
16491
16492 /**
16493  * is.arguments
16494  * Test if `value` is an arguments object.
16495  *
16496  * @param {Mixed} value value to test
16497  * @return {Boolean} true if `value` is an arguments object, false otherwise
16498  * @api public
16499  */
16500
16501 is.arguments = function (value) {
16502   var isStandardArguments = '[object Arguments]' === toString.call(value);
16503   var isOldArguments = !is.array(value) && is.arraylike(value) && is.object(value) && is.fn(value.callee);
16504   return isStandardArguments || isOldArguments;
16505 };
16506
16507 /**
16508  * Test array.
16509  */
16510
16511 /**
16512  * is.array
16513  * Test if 'value' is an array.
16514  *
16515  * @param {Mixed} value value to test
16516  * @return {Boolean} true if `value` is an array, false otherwise
16517  * @api public
16518  */
16519
16520 is.array = function (value) {
16521   return '[object Array]' === toString.call(value);
16522 };
16523
16524 /**
16525  * is.arguments.empty
16526  * Test if `value` is an empty arguments object.
16527  *
16528  * @param {Mixed} value value to test
16529  * @return {Boolean} true if `value` is an empty arguments object, false otherwise
16530  * @api public
16531  */
16532 is.arguments.empty = function (value) {
16533   return is.arguments(value) && value.length === 0;
16534 };
16535
16536 /**
16537  * is.array.empty
16538  * Test if `value` is an empty array.
16539  *
16540  * @param {Mixed} value value to test
16541  * @return {Boolean} true if `value` is an empty array, false otherwise
16542  * @api public
16543  */
16544 is.array.empty = function (value) {
16545   return is.array(value) && value.length === 0;
16546 };
16547
16548 /**
16549  * is.arraylike
16550  * Test if `value` is an arraylike object.
16551  *
16552  * @param {Mixed} value value to test
16553  * @return {Boolean} true if `value` is an arguments object, false otherwise
16554  * @api public
16555  */
16556
16557 is.arraylike = function (value) {
16558   return !!value && !is.boolean(value)
16559     && owns.call(value, 'length')
16560     && isFinite(value.length)
16561     && is.number(value.length)
16562     && value.length >= 0;
16563 };
16564
16565 /**
16566  * Test boolean.
16567  */
16568
16569 /**
16570  * is.boolean
16571  * Test if `value` is a boolean.
16572  *
16573  * @param {Mixed} value value to test
16574  * @return {Boolean} true if `value` is a boolean, false otherwise
16575  * @api public
16576  */
16577
16578 is.boolean = function (value) {
16579   return '[object Boolean]' === toString.call(value);
16580 };
16581
16582 /**
16583  * is.false
16584  * Test if `value` is false.
16585  *
16586  * @param {Mixed} value value to test
16587  * @return {Boolean} true if `value` is false, false otherwise
16588  * @api public
16589  */
16590
16591 is['false'] = function (value) {
16592   return is.boolean(value) && (value === false || value.valueOf() === false);
16593 };
16594
16595 /**
16596  * is.true
16597  * Test if `value` is true.
16598  *
16599  * @param {Mixed} value value to test
16600  * @return {Boolean} true if `value` is true, false otherwise
16601  * @api public
16602  */
16603
16604 is['true'] = function (value) {
16605   return is.boolean(value) && (value === true || value.valueOf() === true);
16606 };
16607
16608 /**
16609  * Test date.
16610  */
16611
16612 /**
16613  * is.date
16614  * Test if `value` is a date.
16615  *
16616  * @param {Mixed} value value to test
16617  * @return {Boolean} true if `value` is a date, false otherwise
16618  * @api public
16619  */
16620
16621 is.date = function (value) {
16622   return '[object Date]' === toString.call(value);
16623 };
16624
16625 /**
16626  * Test element.
16627  */
16628
16629 /**
16630  * is.element
16631  * Test if `value` is an html element.
16632  *
16633  * @param {Mixed} value value to test
16634  * @return {Boolean} true if `value` is an HTML Element, false otherwise
16635  * @api public
16636  */
16637
16638 is.element = function (value) {
16639   return value !== undefined
16640     && typeof HTMLElement !== 'undefined'
16641     && value instanceof HTMLElement
16642     && value.nodeType === 1;
16643 };
16644
16645 /**
16646  * Test error.
16647  */
16648
16649 /**
16650  * is.error
16651  * Test if `value` is an error object.
16652  *
16653  * @param {Mixed} value value to test
16654  * @return {Boolean} true if `value` is an error object, false otherwise
16655  * @api public
16656  */
16657
16658 is.error = function (value) {
16659   return '[object Error]' === toString.call(value);
16660 };
16661
16662 /**
16663  * Test function.
16664  */
16665
16666 /**
16667  * is.fn / is.function (deprecated)
16668  * Test if `value` is a function.
16669  *
16670  * @param {Mixed} value value to test
16671  * @return {Boolean} true if `value` is a function, false otherwise
16672  * @api public
16673  */
16674
16675 is.fn = is['function'] = function (value) {
16676   var isAlert = typeof window !== 'undefined' && value === window.alert;
16677   return isAlert || '[object Function]' === toString.call(value);
16678 };
16679
16680 /**
16681  * Test number.
16682  */
16683
16684 /**
16685  * is.number
16686  * Test if `value` is a number.
16687  *
16688  * @param {Mixed} value value to test
16689  * @return {Boolean} true if `value` is a number, false otherwise
16690  * @api public
16691  */
16692
16693 is.number = function (value) {
16694   return '[object Number]' === toString.call(value);
16695 };
16696
16697 /**
16698  * is.infinite
16699  * Test if `value` is positive or negative infinity.
16700  *
16701  * @param {Mixed} value value to test
16702  * @return {Boolean} true if `value` is positive or negative Infinity, false otherwise
16703  * @api public
16704  */
16705 is.infinite = function (value) {
16706   return value === Infinity || value === -Infinity;
16707 };
16708
16709 /**
16710  * is.decimal
16711  * Test if `value` is a decimal number.
16712  *
16713  * @param {Mixed} value value to test
16714  * @return {Boolean} true if `value` is a decimal number, false otherwise
16715  * @api public
16716  */
16717
16718 is.decimal = function (value) {
16719   return is.number(value) && !isActualNaN(value) && value % 1 !== 0;
16720 };
16721
16722 /**
16723  * is.divisibleBy
16724  * Test if `value` is divisible by `n`.
16725  *
16726  * @param {Number} value value to test
16727  * @param {Number} n dividend
16728  * @return {Boolean} true if `value` is divisible by `n`, false otherwise
16729  * @api public
16730  */
16731
16732 is.divisibleBy = function (value, n) {
16733   var isDividendInfinite = is.infinite(value);
16734   var isDivisorInfinite = is.infinite(n);
16735   var isNonZeroNumber = is.number(value) && !isActualNaN(value) && is.number(n) && !isActualNaN(n) && n !== 0;
16736   return isDividendInfinite || isDivisorInfinite || (isNonZeroNumber && value % n === 0);
16737 };
16738
16739 /**
16740  * is.int
16741  * Test if `value` is an integer.
16742  *
16743  * @param value to test
16744  * @return {Boolean} true if `value` is an integer, false otherwise
16745  * @api public
16746  */
16747
16748 is.int = function (value) {
16749   return is.number(value) && !isActualNaN(value) && value % 1 === 0;
16750 };
16751
16752 /**
16753  * is.maximum
16754  * Test if `value` is greater than 'others' values.
16755  *
16756  * @param {Number} value value to test
16757  * @param {Array} others values to compare with
16758  * @return {Boolean} true if `value` is greater than `others` values
16759  * @api public
16760  */
16761
16762 is.maximum = function (value, others) {
16763   if (isActualNaN(value)) {
16764     throw new TypeError('NaN is not a valid value');
16765   } else if (!is.arraylike(others)) {
16766     throw new TypeError('second argument must be array-like');
16767   }
16768   var len = others.length;
16769
16770   while (--len >= 0) {
16771     if (value < others[len]) {
16772       return false;
16773     }
16774   }
16775
16776   return true;
16777 };
16778
16779 /**
16780  * is.minimum
16781  * Test if `value` is less than `others` values.
16782  *
16783  * @param {Number} value value to test
16784  * @param {Array} others values to compare with
16785  * @return {Boolean} true if `value` is less than `others` values
16786  * @api public
16787  */
16788
16789 is.minimum = function (value, others) {
16790   if (isActualNaN(value)) {
16791     throw new TypeError('NaN is not a valid value');
16792   } else if (!is.arraylike(others)) {
16793     throw new TypeError('second argument must be array-like');
16794   }
16795   var len = others.length;
16796
16797   while (--len >= 0) {
16798     if (value > others[len]) {
16799       return false;
16800     }
16801   }
16802
16803   return true;
16804 };
16805
16806 /**
16807  * is.nan
16808  * Test if `value` is not a number.
16809  *
16810  * @param {Mixed} value value to test
16811  * @return {Boolean} true if `value` is not a number, false otherwise
16812  * @api public
16813  */
16814
16815 is.nan = function (value) {
16816   return !is.number(value) || value !== value;
16817 };
16818
16819 /**
16820  * is.even
16821  * Test if `value` is an even number.
16822  *
16823  * @param {Number} value value to test
16824  * @return {Boolean} true if `value` is an even number, false otherwise
16825  * @api public
16826  */
16827
16828 is.even = function (value) {
16829   return is.infinite(value) || (is.number(value) && value === value && value % 2 === 0);
16830 };
16831
16832 /**
16833  * is.odd
16834  * Test if `value` is an odd number.
16835  *
16836  * @param {Number} value value to test
16837  * @return {Boolean} true if `value` is an odd number, false otherwise
16838  * @api public
16839  */
16840
16841 is.odd = function (value) {
16842   return is.infinite(value) || (is.number(value) && value === value && value % 2 !== 0);
16843 };
16844
16845 /**
16846  * is.ge
16847  * Test if `value` is greater than or equal to `other`.
16848  *
16849  * @param {Number} value value to test
16850  * @param {Number} other value to compare with
16851  * @return {Boolean}
16852  * @api public
16853  */
16854
16855 is.ge = function (value, other) {
16856   if (isActualNaN(value) || isActualNaN(other)) {
16857     throw new TypeError('NaN is not a valid value');
16858   }
16859   return !is.infinite(value) && !is.infinite(other) && value >= other;
16860 };
16861
16862 /**
16863  * is.gt
16864  * Test if `value` is greater than `other`.
16865  *
16866  * @param {Number} value value to test
16867  * @param {Number} other value to compare with
16868  * @return {Boolean}
16869  * @api public
16870  */
16871
16872 is.gt = function (value, other) {
16873   if (isActualNaN(value) || isActualNaN(other)) {
16874     throw new TypeError('NaN is not a valid value');
16875   }
16876   return !is.infinite(value) && !is.infinite(other) && value > other;
16877 };
16878
16879 /**
16880  * is.le
16881  * Test if `value` is less than or equal to `other`.
16882  *
16883  * @param {Number} value value to test
16884  * @param {Number} other value to compare with
16885  * @return {Boolean} if 'value' is less than or equal to 'other'
16886  * @api public
16887  */
16888
16889 is.le = function (value, other) {
16890   if (isActualNaN(value) || isActualNaN(other)) {
16891     throw new TypeError('NaN is not a valid value');
16892   }
16893   return !is.infinite(value) && !is.infinite(other) && value <= other;
16894 };
16895
16896 /**
16897  * is.lt
16898  * Test if `value` is less than `other`.
16899  *
16900  * @param {Number} value value to test
16901  * @param {Number} other value to compare with
16902  * @return {Boolean} if `value` is less than `other`
16903  * @api public
16904  */
16905
16906 is.lt = function (value, other) {
16907   if (isActualNaN(value) || isActualNaN(other)) {
16908     throw new TypeError('NaN is not a valid value');
16909   }
16910   return !is.infinite(value) && !is.infinite(other) && value < other;
16911 };
16912
16913 /**
16914  * is.within
16915  * Test if `value` is within `start` and `finish`.
16916  *
16917  * @param {Number} value value to test
16918  * @param {Number} start lower bound
16919  * @param {Number} finish upper bound
16920  * @return {Boolean} true if 'value' is is within 'start' and 'finish'
16921  * @api public
16922  */
16923 is.within = function (value, start, finish) {
16924   if (isActualNaN(value) || isActualNaN(start) || isActualNaN(finish)) {
16925     throw new TypeError('NaN is not a valid value');
16926   } else if (!is.number(value) || !is.number(start) || !is.number(finish)) {
16927     throw new TypeError('all arguments must be numbers');
16928   }
16929   var isAnyInfinite = is.infinite(value) || is.infinite(start) || is.infinite(finish);
16930   return isAnyInfinite || (value >= start && value <= finish);
16931 };
16932
16933 /**
16934  * Test object.
16935  */
16936
16937 /**
16938  * is.object
16939  * Test if `value` is an object.
16940  *
16941  * @param {Mixed} value value to test
16942  * @return {Boolean} true if `value` is an object, false otherwise
16943  * @api public
16944  */
16945
16946 is.object = function (value) {
16947   return value && '[object Object]' === toString.call(value);
16948 };
16949
16950 /**
16951  * is.hash
16952  * Test if `value` is a hash - a plain object literal.
16953  *
16954  * @param {Mixed} value value to test
16955  * @return {Boolean} true if `value` is a hash, false otherwise
16956  * @api public
16957  */
16958
16959 is.hash = function (value) {
16960   return is.object(value) && value.constructor === Object && !value.nodeType && !value.setInterval;
16961 };
16962
16963 /**
16964  * Test regexp.
16965  */
16966
16967 /**
16968  * is.regexp
16969  * Test if `value` is a regular expression.
16970  *
16971  * @param {Mixed} value value to test
16972  * @return {Boolean} true if `value` is a regexp, false otherwise
16973  * @api public
16974  */
16975
16976 is.regexp = function (value) {
16977   return '[object RegExp]' === toString.call(value);
16978 };
16979
16980 /**
16981  * Test string.
16982  */
16983
16984 /**
16985  * is.string
16986  * Test if `value` is a string.
16987  *
16988  * @param {Mixed} value value to test
16989  * @return {Boolean} true if 'value' is a string, false otherwise
16990  * @api public
16991  */
16992
16993 is.string = function (value) {
16994   return '[object String]' === toString.call(value);
16995 };
16996
16997
16998 },{}],10:[function(require,module,exports){
16999
17000 var hasOwn = Object.prototype.hasOwnProperty;
17001 var toString = Object.prototype.toString;
17002
17003 module.exports = function forEach (obj, fn, ctx) {
17004     if (toString.call(fn) !== '[object Function]') {
17005         throw new TypeError('iterator must be a function');
17006     }
17007     var l = obj.length;
17008     if (l === +l) {
17009         for (var i = 0; i < l; i++) {
17010             fn.call(ctx, obj[i], i, obj);
17011         }
17012     } else {
17013         for (var k in obj) {
17014             if (hasOwn.call(obj, k)) {
17015                 fn.call(ctx, obj[k], k, obj);
17016             }
17017         }
17018     }
17019 };
17020
17021
17022 },{}]},{},[1])(1)
17023 });
17024 ;/*
17025  (c) 2013, Vladimir Agafonkin
17026  RBush, a JavaScript library for high-performance 2D spatial indexing of points and rectangles.
17027  https://github.com/mourner/rbush
17028 */
17029
17030 (function () { 'use strict';
17031
17032 function rbush(maxEntries, format) {
17033
17034     // jshint newcap: false, validthis: true
17035     if (!(this instanceof rbush)) return new rbush(maxEntries, format);
17036
17037     // max entries in a node is 9 by default; min node fill is 40% for best performance
17038     this._maxEntries = Math.max(4, maxEntries || 9);
17039     this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));
17040
17041     if (format) {
17042         this._initFormat(format);
17043     }
17044
17045     this.clear();
17046 }
17047
17048 rbush.prototype = {
17049
17050     all: function () {
17051         return this._all(this.data, []);
17052     },
17053
17054     search: function (bbox) {
17055
17056         var node = this.data,
17057             result = [],
17058             toBBox = this.toBBox;
17059
17060         if (!intersects(bbox, node.bbox)) return result;
17061
17062         var nodesToSearch = [],
17063             i, len, child, childBBox;
17064
17065         while (node) {
17066             for (i = 0, len = node.children.length; i < len; i++) {
17067
17068                 child = node.children[i];
17069                 childBBox = node.leaf ? toBBox(child) : child.bbox;
17070
17071                 if (intersects(bbox, childBBox)) {
17072                     if (node.leaf) result.push(child);
17073                     else if (contains(bbox, childBBox)) this._all(child, result);
17074                     else nodesToSearch.push(child);
17075                 }
17076             }
17077             node = nodesToSearch.pop();
17078         }
17079
17080         return result;
17081     },
17082
17083     load: function (data) {
17084         if (!(data && data.length)) return this;
17085
17086         if (data.length < this._minEntries) {
17087             for (var i = 0, len = data.length; i < len; i++) {
17088                 this.insert(data[i]);
17089             }
17090             return this;
17091         }
17092
17093         // recursively build the tree with the given data from stratch using OMT algorithm
17094         var node = this._build(data.slice(), 0, data.length - 1, 0);
17095
17096         if (!this.data.children.length) {
17097             // save as is if tree is empty
17098             this.data = node;
17099
17100         } else if (this.data.height === node.height) {
17101             // split root if trees have the same height
17102             this._splitRoot(this.data, node);
17103
17104         } else {
17105             if (this.data.height < node.height) {
17106                 // swap trees if inserted one is bigger
17107                 var tmpNode = this.data;
17108                 this.data = node;
17109                 node = tmpNode;
17110             }
17111
17112             // insert the small tree into the large tree at appropriate level
17113             this._insert(node, this.data.height - node.height - 1, true);
17114         }
17115
17116         return this;
17117     },
17118
17119     insert: function (item) {
17120         if (item) this._insert(item, this.data.height - 1);
17121         return this;
17122     },
17123
17124     clear: function () {
17125         this.data = {
17126             children: [],
17127             height: 1,
17128             bbox: empty(),
17129             leaf: true
17130         };
17131         return this;
17132     },
17133
17134     remove: function (item) {
17135         if (!item) return this;
17136
17137         var node = this.data,
17138             bbox = this.toBBox(item),
17139             path = [],
17140             indexes = [],
17141             i, parent, index, goingUp;
17142
17143         // depth-first iterative tree traversal
17144         while (node || path.length) {
17145
17146             if (!node) { // go up
17147                 node = path.pop();
17148                 parent = path[path.length - 1];
17149                 i = indexes.pop();
17150                 goingUp = true;
17151             }
17152
17153             if (node.leaf) { // check current node
17154                 index = node.children.indexOf(item);
17155
17156                 if (index !== -1) {
17157                     // item found, remove the item and condense tree upwards
17158                     node.children.splice(index, 1);
17159                     path.push(node);
17160                     this._condense(path);
17161                     return this;
17162                 }
17163             }
17164
17165             if (!goingUp && !node.leaf && contains(node.bbox, bbox)) { // go down
17166                 path.push(node);
17167                 indexes.push(i);
17168                 i = 0;
17169                 parent = node;
17170                 node = node.children[0];
17171
17172             } else if (parent) { // go right
17173                 i++;
17174                 node = parent.children[i];
17175                 goingUp = false;
17176
17177             } else node = null; // nothing found
17178         }
17179
17180         return this;
17181     },
17182
17183     toBBox: function (item) { return item; },
17184
17185     compareMinX: function (a, b) { return a[0] - b[0]; },
17186     compareMinY: function (a, b) { return a[1] - b[1]; },
17187
17188     toJSON: function () { return this.data; },
17189
17190     fromJSON: function (data) {
17191         this.data = data;
17192         return this;
17193     },
17194
17195     _all: function (node, result) {
17196         var nodesToSearch = [];
17197         while (node) {
17198             if (node.leaf) result.push.apply(result, node.children);
17199             else nodesToSearch.push.apply(nodesToSearch, node.children);
17200
17201             node = nodesToSearch.pop();
17202         }
17203         return result;
17204     },
17205
17206     _build: function (items, left, right, level, height) {
17207
17208         var N = right - left + 1,
17209             M = this._maxEntries,
17210             node;
17211
17212         if (N <= M) {
17213             node = {
17214                 children: items.slice(left, right + 1),
17215                 height: 1,
17216                 bbox: null,
17217                 leaf: true
17218             };
17219             calcBBox(node, this.toBBox);
17220             return node;
17221         }
17222
17223         if (!level) {
17224             // target height of the bulk-loaded tree
17225             height = Math.ceil(Math.log(N) / Math.log(M));
17226
17227             // target number of root entries to maximize storage utilization
17228             M = Math.ceil(N / Math.pow(M, height - 1));
17229         }
17230
17231         // TODO eliminate recursion?
17232
17233         node = {
17234             children: [],
17235             height: height,
17236             bbox: null
17237         };
17238
17239         var N2 = Math.ceil(N / M),
17240             N1 = N2 * Math.ceil(Math.sqrt(M)),
17241             i, j, right2, childNode;
17242
17243         // split the items into M mostly square tiles
17244         for (i = left; i <= right; i += N1) {
17245
17246             if (i + N1 <= right) partitionSort(items, i, right, i + N1, this.compareMinX);
17247             right2 = Math.min(i + N1 - 1, right);
17248
17249             for (j = i; j <= right2; j += N2) {
17250
17251                 if (j + N2 <= right2) partitionSort(items, j, right2, j + N2, this.compareMinY);
17252
17253                 // pack each entry recursively
17254                 childNode = this._build(items, j, Math.min(j + N2 - 1, right2), level + 1, height - 1);
17255                 node.children.push(childNode);
17256             }
17257         }
17258
17259         calcBBox(node, this.toBBox);
17260
17261         return node;
17262     },
17263
17264     _chooseSubtree: function (bbox, node, level, path) {
17265
17266         var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;
17267
17268         while (true) {
17269             path.push(node);
17270
17271             if (node.leaf || path.length - 1 === level) break;
17272
17273             minArea = minEnlargement = Infinity;
17274
17275             for (i = 0, len = node.children.length; i < len; i++) {
17276                 child = node.children[i];
17277                 area = bboxArea(child.bbox);
17278                 enlargement = enlargedArea(bbox, child.bbox) - area;
17279
17280                 // choose entry with the least area enlargement
17281                 if (enlargement < minEnlargement) {
17282                     minEnlargement = enlargement;
17283                     minArea = area < minArea ? area : minArea;
17284                     targetNode = child;
17285
17286                 } else if (enlargement === minEnlargement) {
17287                     // otherwise choose one with the smallest area
17288                     if (area < minArea) {
17289                         minArea = area;
17290                         targetNode = child;
17291                     }
17292                 }
17293             }
17294
17295             node = targetNode;
17296         }
17297
17298         return node;
17299     },
17300
17301     _insert: function (item, level, isNode) {
17302
17303         var toBBox = this.toBBox,
17304             bbox = isNode ? item.bbox : toBBox(item),
17305             insertPath = [];
17306
17307         // find the best node for accommodating the item, saving all nodes along the path too
17308         var node = this._chooseSubtree(bbox, this.data, level, insertPath);
17309
17310         // put the item into the node
17311         node.children.push(item);
17312         extend(node.bbox, bbox);
17313
17314         // split on node overflow; propagate upwards if necessary
17315         while (level >= 0) {
17316             if (insertPath[level].children.length > this._maxEntries) {
17317                 this._split(insertPath, level);
17318                 level--;
17319             } else break;
17320         }
17321
17322         // adjust bboxes along the insertion path
17323         this._adjustParentBBoxes(bbox, insertPath, level);
17324     },
17325
17326     // split overflowed node into two
17327     _split: function (insertPath, level) {
17328
17329         var node = insertPath[level],
17330             M = node.children.length,
17331             m = this._minEntries;
17332
17333         this._chooseSplitAxis(node, m, M);
17334
17335         var newNode = {
17336             children: node.children.splice(this._chooseSplitIndex(node, m, M)),
17337             height: node.height
17338         };
17339
17340         if (node.leaf) newNode.leaf = true;
17341
17342         calcBBox(node, this.toBBox);
17343         calcBBox(newNode, this.toBBox);
17344
17345         if (level) insertPath[level - 1].children.push(newNode);
17346         else this._splitRoot(node, newNode);
17347     },
17348
17349     _splitRoot: function (node, newNode) {
17350         // split root node
17351         this.data = {
17352             children: [node, newNode],
17353             height: node.height + 1
17354         };
17355         calcBBox(this.data, this.toBBox);
17356     },
17357
17358     _chooseSplitIndex: function (node, m, M) {
17359
17360         var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;
17361
17362         minOverlap = minArea = Infinity;
17363
17364         for (i = m; i <= M - m; i++) {
17365             bbox1 = distBBox(node, 0, i, this.toBBox);
17366             bbox2 = distBBox(node, i, M, this.toBBox);
17367
17368             overlap = intersectionArea(bbox1, bbox2);
17369             area = bboxArea(bbox1) + bboxArea(bbox2);
17370
17371             // choose distribution with minimum overlap
17372             if (overlap < minOverlap) {
17373                 minOverlap = overlap;
17374                 index = i;
17375
17376                 minArea = area < minArea ? area : minArea;
17377
17378             } else if (overlap === minOverlap) {
17379                 // otherwise choose distribution with minimum area
17380                 if (area < minArea) {
17381                     minArea = area;
17382                     index = i;
17383                 }
17384             }
17385         }
17386
17387         return index;
17388     },
17389
17390     // sorts node children by the best axis for split
17391     _chooseSplitAxis: function (node, m, M) {
17392
17393         var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,
17394             compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,
17395             xMargin = this._allDistMargin(node, m, M, compareMinX),
17396             yMargin = this._allDistMargin(node, m, M, compareMinY);
17397
17398         // if total distributions margin value is minimal for x, sort by minX,
17399         // otherwise it's already sorted by minY
17400         if (xMargin < yMargin) node.children.sort(compareMinX);
17401     },
17402
17403     // total margin of all possible split distributions where each node is at least m full
17404     _allDistMargin: function (node, m, M, compare) {
17405
17406         node.children.sort(compare);
17407
17408         var toBBox = this.toBBox,
17409             leftBBox = distBBox(node, 0, m, toBBox),
17410             rightBBox = distBBox(node, M - m, M, toBBox),
17411             margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),
17412             i, child;
17413
17414         for (i = m; i < M - m; i++) {
17415             child = node.children[i];
17416             extend(leftBBox, node.leaf ? toBBox(child) : child.bbox);
17417             margin += bboxMargin(leftBBox);
17418         }
17419
17420         for (i = M - m - 1; i >= m; i--) {
17421             child = node.children[i];
17422             extend(rightBBox, node.leaf ? toBBox(child) : child.bbox);
17423             margin += bboxMargin(rightBBox);
17424         }
17425
17426         return margin;
17427     },
17428
17429     _adjustParentBBoxes: function (bbox, path, level) {
17430         // adjust bboxes along the given tree path
17431         for (var i = level; i >= 0; i--) {
17432             extend(path[i].bbox, bbox);
17433         }
17434     },
17435
17436     _condense: function (path) {
17437         // go through the path, removing empty nodes and updating bboxes
17438         for (var i = path.length - 1, siblings; i >= 0; i--) {
17439             if (path[i].children.length === 0) {
17440                 if (i > 0) {
17441                     siblings = path[i - 1].children;
17442                     siblings.splice(siblings.indexOf(path[i]), 1);
17443
17444                 } else this.clear();
17445
17446             } else calcBBox(path[i], this.toBBox);
17447         }
17448     },
17449
17450     _initFormat: function (format) {
17451         // data format (minX, minY, maxX, maxY accessors)
17452
17453         // uses eval-type function compilation instead of just accepting a toBBox function
17454         // because the algorithms are very sensitive to sorting functions performance,
17455         // so they should be dead simple and without inner calls
17456
17457         // jshint evil: true
17458
17459         var compareArr = ['return a', ' - b', ';'];
17460
17461         this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));
17462         this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));
17463
17464         this.toBBox = new Function('a', 'return [a' + format.join(', a') + '];');
17465     }
17466 };
17467
17468 // calculate node's bbox from bboxes of its children
17469 function calcBBox(node, toBBox) {
17470     node.bbox = distBBox(node, 0, node.children.length, toBBox);
17471 }
17472
17473 // min bounding rectangle of node children from k to p-1
17474 function distBBox(node, k, p, toBBox) {
17475     var bbox = empty();
17476
17477     for (var i = k, child; i < p; i++) {
17478         child = node.children[i];
17479         extend(bbox, node.leaf ? toBBox(child) : child.bbox);
17480     }
17481
17482     return bbox;
17483 }
17484
17485
17486 function empty() { return [Infinity, Infinity, -Infinity, -Infinity]; }
17487
17488 function extend(a, b) {
17489     a[0] = Math.min(a[0], b[0]);
17490     a[1] = Math.min(a[1], b[1]);
17491     a[2] = Math.max(a[2], b[2]);
17492     a[3] = Math.max(a[3], b[3]);
17493     return a;
17494 }
17495
17496 function compareNodeMinX(a, b) { return a.bbox[0] - b.bbox[0]; }
17497 function compareNodeMinY(a, b) { return a.bbox[1] - b.bbox[1]; }
17498
17499 function bboxArea(a)   { return (a[2] - a[0]) * (a[3] - a[1]); }
17500 function bboxMargin(a) { return (a[2] - a[0]) + (a[3] - a[1]); }
17501
17502 function enlargedArea(a, b) {
17503     return (Math.max(b[2], a[2]) - Math.min(b[0], a[0])) *
17504            (Math.max(b[3], a[3]) - Math.min(b[1], a[1]));
17505 }
17506
17507 function intersectionArea (a, b) {
17508     var minX = Math.max(a[0], b[0]),
17509         minY = Math.max(a[1], b[1]),
17510         maxX = Math.min(a[2], b[2]),
17511         maxY = Math.min(a[3], b[3]);
17512
17513     return Math.max(0, maxX - minX) *
17514            Math.max(0, maxY - minY);
17515 }
17516
17517 function contains(a, b) {
17518     return a[0] <= b[0] &&
17519            a[1] <= b[1] &&
17520            b[2] <= a[2] &&
17521            b[3] <= a[3];
17522 }
17523
17524 function intersects (a, b) {
17525     return b[0] <= a[2] &&
17526            b[1] <= a[3] &&
17527            b[2] >= a[0] &&
17528            b[3] >= a[1];
17529 }
17530
17531
17532 function partitionSort(arr, left, right, k, compare) {
17533     var pivot;
17534
17535     while (true) {
17536         pivot = Math.floor((left + right) / 2);
17537         pivot = partition(arr, left, right, pivot, compare);
17538
17539         if (k === pivot) break;
17540         else if (k < pivot) right = pivot - 1;
17541         else left = pivot + 1;
17542     }
17543
17544     partition(arr, left, right, k, compare);
17545 }
17546
17547 function partition(arr, left, right, pivot, compare) {
17548     var k = left,
17549         value = arr[pivot];
17550
17551     swap(arr, pivot, right);
17552
17553     for (var i = left; i < right; i++) {
17554         if (compare(arr[i], value) < 0) {
17555             swap(arr, k, i);
17556             k++;
17557         }
17558     }
17559     swap(arr, right, k);
17560
17561     return k;
17562 }
17563
17564 function swap(arr, i, j) {
17565     var tmp = arr[i];
17566     arr[i] = arr[j];
17567     arr[j] = tmp;
17568 }
17569
17570
17571 // export as AMD/CommonJS module or global variable
17572 if (typeof define === 'function' && define.amd) define(function() { return rbush; });
17573 else if (typeof module !== 'undefined') module.exports = rbush;
17574 else if (typeof self !== 'undefined') self.rbush = rbush;
17575 else window.rbush = rbush;
17576
17577 })();(function(e){if("function"==typeof bootstrap)bootstrap("sexagesimal",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeSexagesimal=e}else"undefined"!=typeof window?window.sexagesimal=e():global.sexagesimal=e()})(function(){var define,ses,bootstrap,module,exports;
17578 return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
17579 module.exports = element;
17580 module.exports.pair = pair;
17581 module.exports.format = format;
17582 module.exports.formatPair = formatPair;
17583
17584 function element(x, dims) {
17585     return search(x, dims).val;
17586 }
17587
17588 function formatPair(x) {
17589     return format(x.lat, 'lat') + ' ' + format(x.lon, 'lon');
17590 }
17591
17592 // Is 0 North or South?
17593 function format(x, dim) {
17594     var dirs = {
17595             lat: ['N', 'S'],
17596             lon: ['E', 'W']
17597         }[dim] || '',
17598         dir = dirs[x >= 0 ? 0 : 1],
17599         abs = Math.abs(x),
17600         whole = Math.floor(abs),
17601         fraction = abs - whole,
17602         fractionMinutes = fraction * 60,
17603         minutes = Math.floor(fractionMinutes),
17604         seconds = Math.floor((fractionMinutes - minutes) * 60);
17605
17606     return whole + '° ' +
17607         (minutes ? minutes + "' " : '') +
17608         (seconds ? seconds + '" ' : '') + dir;
17609 }
17610
17611 function search(x, dims, r) {
17612     if (!dims) dims = 'NSEW';
17613     if (typeof x !== 'string') return { val: null, regex: r };
17614     r = r || /[\s\,]*([\-|\—|\―]?[0-9.]+)°? *(?:([0-9.]+)['’′‘] *)?(?:([0-9.]+)(?:''|"|”|″) *)?([NSEW])?/gi;
17615     var m = r.exec(x);
17616     if (!m) return { val: null, regex: r };
17617     else if (m[4] && dims.indexOf(m[4]) === -1) return { val: null, regex: r };
17618     else return {
17619         val: (((m[1]) ? parseFloat(m[1]) : 0) +
17620             ((m[2] ? parseFloat(m[2]) / 60 : 0)) +
17621             ((m[3] ? parseFloat(m[3]) / 3600 : 0))) *
17622             ((m[4] && m[4] === 'S' || m[4] === 'W') ? -1 : 1),
17623         regex: r,
17624         raw: m[0],
17625         dim: m[4]
17626     };
17627 }
17628
17629 function pair(x, dims) {
17630     x = x.trim();
17631     var one = search(x, dims);
17632     if (one.val === null) return null;
17633     var two = search(x, dims, one.regex);
17634     if (two.val === null) return null;
17635     // null if one/two are not contiguous.
17636     if (one.raw + two.raw !== x) return null;
17637     if (one.dim) return swapdim(one.val, two.val, one.dim);
17638     else return [one.val, two.val];
17639 }
17640
17641 function swapdim(a, b, dim) {
17642     if (dim == 'N' || dim == 'S') return [a, b];
17643     if (dim == 'W' || dim == 'E') return [b, a];
17644 }
17645
17646 },{}]},{},[1])
17647 (1)
17648 });
17649 ;toGeoJSON = (function() {
17650     'use strict';
17651
17652     var removeSpace = (/\s*/g),
17653         trimSpace = (/^\s*|\s*$/g),
17654         splitSpace = (/\s+/);
17655     // generate a short, numeric hash of a string
17656     function okhash(x) {
17657         if (!x || !x.length) return 0;
17658         for (var i = 0, h = 0; i < x.length; i++) {
17659             h = ((h << 5) - h) + x.charCodeAt(i) | 0;
17660         } return h;
17661     }
17662     // all Y children of X
17663     function get(x, y) { return x.getElementsByTagName(y); }
17664     function attr(x, y) { return x.getAttribute(y); }
17665     function attrf(x, y) { return parseFloat(attr(x, y)); }
17666     // one Y child of X, if any, otherwise null
17667     function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; }
17668     // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize
17669     function norm(el) { if (el.normalize) { el.normalize(); } return el; }
17670     // cast array x into numbers
17671     function numarray(x) {
17672         for (var j = 0, o = []; j < x.length; j++) o[j] = parseFloat(x[j]);
17673         return o;
17674     }
17675     function clean(x) {
17676         var o = {};
17677         for (var i in x) if (x[i]) o[i] = x[i];
17678         return o;
17679     }
17680     // get the content of a text node, if any
17681     function nodeVal(x) { if (x) {norm(x);} return x && x.firstChild && x.firstChild.nodeValue; }
17682     // get one coordinate from a coordinate array, if any
17683     function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); }
17684     // get all coordinates from a coordinate array as [[],[]]
17685     function coord(v) {
17686         var coords = v.replace(trimSpace, '').split(splitSpace),
17687             o = [];
17688         for (var i = 0; i < coords.length; i++) {
17689             o.push(coord1(coords[i]));
17690         }
17691         return o;
17692     }
17693     function coordPair(x) { return [attrf(x, 'lon'), attrf(x, 'lat')]; }
17694
17695     // create a new feature collection parent object
17696     function fc() {
17697         return {
17698             type: 'FeatureCollection',
17699             features: []
17700         };
17701     }
17702
17703     var styleSupport = false;
17704     if (typeof XMLSerializer !== 'undefined') {
17705         var serializer = new XMLSerializer();
17706         styleSupport = true;
17707     }
17708     function xml2str(str) { return serializer.serializeToString(str); }
17709
17710     var t = {
17711         kml: function(doc, o) {
17712             o = o || {};
17713
17714             var gj = fc(),
17715                 // styleindex keeps track of hashed styles in order to match features
17716                 styleIndex = {},
17717                 // atomic geospatial types supported by KML - MultiGeometry is
17718                 // handled separately
17719                 geotypes = ['Polygon', 'LineString', 'Point', 'Track'],
17720                 // all root placemarks in the file
17721                 placemarks = get(doc, 'Placemark'),
17722                 styles = get(doc, 'Style');
17723
17724             if (styleSupport) for (var k = 0; k < styles.length; k++) {
17725                 styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16);
17726             }
17727             for (var j = 0; j < placemarks.length; j++) {
17728                 gj.features = gj.features.concat(getPlacemark(placemarks[j]));
17729             }
17730             function gxCoord(v) { return numarray(v.split(' ')); }
17731             function gxCoords(root) {
17732                 var elems = get(root, 'coord', 'gx'), coords = [];
17733                 for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));
17734                 return coords;
17735             }
17736             function getGeometry(root) {
17737                 var geomNode, geomNodes, i, j, k, geoms = [];
17738                 if (get1(root, 'MultiGeometry')) return getGeometry(get1(root, 'MultiGeometry'));
17739                 if (get1(root, 'MultiTrack')) return getGeometry(get1(root, 'MultiTrack'));
17740                 for (i = 0; i < geotypes.length; i++) {
17741                     geomNodes = get(root, geotypes[i]);
17742                     if (geomNodes) {
17743                         for (j = 0; j < geomNodes.length; j++) {
17744                             geomNode = geomNodes[j];
17745                             if (geotypes[i] == 'Point') {
17746                                 geoms.push({
17747                                     type: 'Point',
17748                                     coordinates: coord1(nodeVal(get1(geomNode, 'coordinates')))
17749                                 });
17750                             } else if (geotypes[i] == 'LineString') {
17751                                 geoms.push({
17752                                     type: 'LineString',
17753                                     coordinates: coord(nodeVal(get1(geomNode, 'coordinates')))
17754                                 });
17755                             } else if (geotypes[i] == 'Polygon') {
17756                                 var rings = get(geomNode, 'LinearRing'),
17757                                     coords = [];
17758                                 for (k = 0; k < rings.length; k++) {
17759                                     coords.push(coord(nodeVal(get1(rings[k], 'coordinates'))));
17760                                 }
17761                                 geoms.push({
17762                                     type: 'Polygon',
17763                                     coordinates: coords
17764                                 });
17765                             } else if (geotypes[i] == 'Track') {
17766                                 geoms.push({
17767                                     type: 'LineString',
17768                                     coordinates: gxCoords(geomNode)
17769                                 });
17770                             }
17771                         }
17772                     }
17773                 }
17774                 return geoms;
17775             }
17776             function getPlacemark(root) {
17777                 var geoms = getGeometry(root), i, properties = {},
17778                     name = nodeVal(get1(root, 'name')),
17779                     styleUrl = nodeVal(get1(root, 'styleUrl')),
17780                     description = nodeVal(get1(root, 'description')),
17781                     extendedData = get1(root, 'ExtendedData');
17782
17783                 if (!geoms.length) return [];
17784                 if (name) properties.name = name;
17785                 if (styleUrl && styleIndex[styleUrl]) {
17786                     properties.styleUrl = styleUrl;
17787                     properties.styleHash = styleIndex[styleUrl];
17788                 }
17789                 if (description) properties.description = description;
17790                 if (extendedData) {
17791                     var datas = get(extendedData, 'Data'),
17792                         simpleDatas = get(extendedData, 'SimpleData');
17793
17794                     for (i = 0; i < datas.length; i++) {
17795                         properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));
17796                     }
17797                     for (i = 0; i < simpleDatas.length; i++) {
17798                         properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);
17799                     }
17800                 }
17801                 return [{
17802                     type: 'Feature',
17803                     geometry: (geoms.length === 1) ? geoms[0] : {
17804                         type: 'GeometryCollection',
17805                         geometries: geoms
17806                     },
17807                     properties: properties
17808                 }];
17809             }
17810             return gj;
17811         },
17812         gpx: function(doc, o) {
17813             var i,
17814                 tracks = get(doc, 'trk'),
17815                 routes = get(doc, 'rte'),
17816                 waypoints = get(doc, 'wpt'),
17817                 // a feature collection
17818                 gj = fc();
17819             for (i = 0; i < tracks.length; i++) {
17820                 gj.features.push(getLinestring(tracks[i], 'trkpt'));
17821             }
17822             for (i = 0; i < routes.length; i++) {
17823                 gj.features.push(getLinestring(routes[i], 'rtept'));
17824             }
17825             for (i = 0; i < waypoints.length; i++) {
17826                 gj.features.push(getPoint(waypoints[i]));
17827             }
17828             function getLinestring(node, pointname) {
17829                 var j, pts = get(node, pointname), line = [];
17830                 for (j = 0; j < pts.length; j++) {
17831                     line.push(coordPair(pts[j]));
17832                 }
17833                 return {
17834                     type: 'Feature',
17835                     properties: getProperties(node),
17836                     geometry: {
17837                         type: 'LineString',
17838                         coordinates: line
17839                     }
17840                 };
17841             }
17842             function getPoint(node) {
17843                 var prop = getProperties(node);
17844                 prop.ele = nodeVal(get1(node, 'ele'));
17845                 prop.sym = nodeVal(get1(node, 'sym'));
17846                 return {
17847                     type: 'Feature',
17848                     properties: prop,
17849                     geometry: {
17850                         type: 'Point',
17851                         coordinates: coordPair(node)
17852                     }
17853                 };
17854             }
17855             function getProperties(node) {
17856                 var meta = ['name', 'desc', 'author', 'copyright', 'link',
17857                             'time', 'keywords'],
17858                     prop = {},
17859                     k;
17860                 for (k = 0; k < meta.length; k++) {
17861                     prop[meta[k]] = nodeVal(get1(node, meta[k]));
17862                 }
17863                 return clean(prop);
17864             }
17865             return gj;
17866         }
17867     };
17868     return t;
17869 })();
17870
17871 if (typeof module !== 'undefined') module.exports = toGeoJSON;
17872 /**
17873  * marked - a markdown parser
17874  * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed)
17875  * https://github.com/chjj/marked
17876  */
17877
17878 ;(function() {
17879
17880 /**
17881  * Block-Level Grammar
17882  */
17883
17884 var block = {
17885   newline: /^\n+/,
17886   code: /^( {4}[^\n]+\n*)+/,
17887   fences: noop,
17888   hr: /^( *[-*_]){3,} *(?:\n+|$)/,
17889   heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
17890   nptable: noop,
17891   lheading: /^([^\n]+)\n *(=|-){3,} *\n*/,
17892   blockquote: /^( *>[^\n]+(\n[^\n]+)*\n*)+/,
17893   list: /^( *)(bull) [\s\S]+?(?:hr|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
17894   html: /^ *(?:comment|closed|closing) *(?:\n{2,}|\s*$)/,
17895   def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,
17896   table: noop,
17897   paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
17898   text: /^[^\n]+/
17899 };
17900
17901 block.bullet = /(?:[*+-]|\d+\.)/;
17902 block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
17903 block.item = replace(block.item, 'gm')
17904   (/bull/g, block.bullet)
17905   ();
17906
17907 block.list = replace(block.list)
17908   (/bull/g, block.bullet)
17909   ('hr', /\n+(?=(?: *[-*_]){3,} *(?:\n+|$))/)
17910   ();
17911
17912 block._tag = '(?!(?:'
17913   + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
17914   + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
17915   + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|@)\\b';
17916
17917 block.html = replace(block.html)
17918   ('comment', /<!--[\s\S]*?-->/)
17919   ('closed', /<(tag)[\s\S]+?<\/\1>/)
17920   ('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)
17921   (/tag/g, block._tag)
17922   ();
17923
17924 block.paragraph = replace(block.paragraph)
17925   ('hr', block.hr)
17926   ('heading', block.heading)
17927   ('lheading', block.lheading)
17928   ('blockquote', block.blockquote)
17929   ('tag', '<' + block._tag)
17930   ('def', block.def)
17931   ();
17932
17933 /**
17934  * Normal Block Grammar
17935  */
17936
17937 block.normal = merge({}, block);
17938
17939 /**
17940  * GFM Block Grammar
17941  */
17942
17943 block.gfm = merge({}, block.normal, {
17944   fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,
17945   paragraph: /^/
17946 });
17947
17948 block.gfm.paragraph = replace(block.paragraph)
17949   ('(?!', '(?!' + block.gfm.fences.source.replace('\\1', '\\2') + '|')
17950   ();
17951
17952 /**
17953  * GFM + Tables Block Grammar
17954  */
17955
17956 block.tables = merge({}, block.gfm, {
17957   nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
17958   table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
17959 });
17960
17961 /**
17962  * Block Lexer
17963  */
17964
17965 function Lexer(options) {
17966   this.tokens = [];
17967   this.tokens.links = {};
17968   this.options = options || marked.defaults;
17969   this.rules = block.normal;
17970
17971   if (this.options.gfm) {
17972     if (this.options.tables) {
17973       this.rules = block.tables;
17974     } else {
17975       this.rules = block.gfm;
17976     }
17977   }
17978 }
17979
17980 /**
17981  * Expose Block Rules
17982  */
17983
17984 Lexer.rules = block;
17985
17986 /**
17987  * Static Lex Method
17988  */
17989
17990 Lexer.lex = function(src, options) {
17991   var lexer = new Lexer(options);
17992   return lexer.lex(src);
17993 };
17994
17995 /**
17996  * Preprocessing
17997  */
17998
17999 Lexer.prototype.lex = function(src) {
18000   src = src
18001     .replace(/\r\n|\r/g, '\n')
18002     .replace(/\t/g, '    ')
18003     .replace(/\u00a0/g, ' ')
18004     .replace(/\u2424/g, '\n');
18005
18006   return this.token(src, true);
18007 };
18008
18009 /**
18010  * Lexing
18011  */
18012
18013 Lexer.prototype.token = function(src, top) {
18014   var src = src.replace(/^ +$/gm, '')
18015     , next
18016     , loose
18017     , cap
18018     , bull
18019     , b
18020     , item
18021     , space
18022     , i
18023     , l;
18024
18025   while (src) {
18026     // newline
18027     if (cap = this.rules.newline.exec(src)) {
18028       src = src.substring(cap[0].length);
18029       if (cap[0].length > 1) {
18030         this.tokens.push({
18031           type: 'space'
18032         });
18033       }
18034     }
18035
18036     // code
18037     if (cap = this.rules.code.exec(src)) {
18038       src = src.substring(cap[0].length);
18039       cap = cap[0].replace(/^ {4}/gm, '');
18040       this.tokens.push({
18041         type: 'code',
18042         text: !this.options.pedantic
18043           ? cap.replace(/\n+$/, '')
18044           : cap
18045       });
18046       continue;
18047     }
18048
18049     // fences (gfm)
18050     if (cap = this.rules.fences.exec(src)) {
18051       src = src.substring(cap[0].length);
18052       this.tokens.push({
18053         type: 'code',
18054         lang: cap[2],
18055         text: cap[3]
18056       });
18057       continue;
18058     }
18059
18060     // heading
18061     if (cap = this.rules.heading.exec(src)) {
18062       src = src.substring(cap[0].length);
18063       this.tokens.push({
18064         type: 'heading',
18065         depth: cap[1].length,
18066         text: cap[2]
18067       });
18068       continue;
18069     }
18070
18071     // table no leading pipe (gfm)
18072     if (top && (cap = this.rules.nptable.exec(src))) {
18073       src = src.substring(cap[0].length);
18074
18075       item = {
18076         type: 'table',
18077         header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
18078         align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
18079         cells: cap[3].replace(/\n$/, '').split('\n')
18080       };
18081
18082       for (i = 0; i < item.align.length; i++) {
18083         if (/^ *-+: *$/.test(item.align[i])) {
18084           item.align[i] = 'right';
18085         } else if (/^ *:-+: *$/.test(item.align[i])) {
18086           item.align[i] = 'center';
18087         } else if (/^ *:-+ *$/.test(item.align[i])) {
18088           item.align[i] = 'left';
18089         } else {
18090           item.align[i] = null;
18091         }
18092       }
18093
18094       for (i = 0; i < item.cells.length; i++) {
18095         item.cells[i] = item.cells[i].split(/ *\| */);
18096       }
18097
18098       this.tokens.push(item);
18099
18100       continue;
18101     }
18102
18103     // lheading
18104     if (cap = this.rules.lheading.exec(src)) {
18105       src = src.substring(cap[0].length);
18106       this.tokens.push({
18107         type: 'heading',
18108         depth: cap[2] === '=' ? 1 : 2,
18109         text: cap[1]
18110       });
18111       continue;
18112     }
18113
18114     // hr
18115     if (cap = this.rules.hr.exec(src)) {
18116       src = src.substring(cap[0].length);
18117       this.tokens.push({
18118         type: 'hr'
18119       });
18120       continue;
18121     }
18122
18123     // blockquote
18124     if (cap = this.rules.blockquote.exec(src)) {
18125       src = src.substring(cap[0].length);
18126
18127       this.tokens.push({
18128         type: 'blockquote_start'
18129       });
18130
18131       cap = cap[0].replace(/^ *> ?/gm, '');
18132
18133       // Pass `top` to keep the current
18134       // "toplevel" state. This is exactly
18135       // how markdown.pl works.
18136       this.token(cap, top);
18137
18138       this.tokens.push({
18139         type: 'blockquote_end'
18140       });
18141
18142       continue;
18143     }
18144
18145     // list
18146     if (cap = this.rules.list.exec(src)) {
18147       src = src.substring(cap[0].length);
18148       bull = cap[2];
18149
18150       this.tokens.push({
18151         type: 'list_start',
18152         ordered: bull.length > 1
18153       });
18154
18155       // Get each top-level item.
18156       cap = cap[0].match(this.rules.item);
18157
18158       next = false;
18159       l = cap.length;
18160       i = 0;
18161
18162       for (; i < l; i++) {
18163         item = cap[i];
18164
18165         // Remove the list item's bullet
18166         // so it is seen as the next token.
18167         space = item.length;
18168         item = item.replace(/^ *([*+-]|\d+\.) +/, '');
18169
18170         // Outdent whatever the
18171         // list item contains. Hacky.
18172         if (~item.indexOf('\n ')) {
18173           space -= item.length;
18174           item = !this.options.pedantic
18175             ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
18176             : item.replace(/^ {1,4}/gm, '');
18177         }
18178
18179         // Determine whether the next list item belongs here.
18180         // Backpedal if it does not belong in this list.
18181         if (this.options.smartLists && i !== l - 1) {
18182           b = block.bullet.exec(cap[i+1])[0];
18183           if (bull !== b && !(bull.length > 1 && b.length > 1)) {
18184             src = cap.slice(i + 1).join('\n') + src;
18185             i = l - 1;
18186           }
18187         }
18188
18189         // Determine whether item is loose or not.
18190         // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
18191         // for discount behavior.
18192         loose = next || /\n\n(?!\s*$)/.test(item);
18193         if (i !== l - 1) {
18194           next = item[item.length-1] === '\n';
18195           if (!loose) loose = next;
18196         }
18197
18198         this.tokens.push({
18199           type: loose
18200             ? 'loose_item_start'
18201             : 'list_item_start'
18202         });
18203
18204         // Recurse.
18205         this.token(item, false);
18206
18207         this.tokens.push({
18208           type: 'list_item_end'
18209         });
18210       }
18211
18212       this.tokens.push({
18213         type: 'list_end'
18214       });
18215
18216       continue;
18217     }
18218
18219     // html
18220     if (cap = this.rules.html.exec(src)) {
18221       src = src.substring(cap[0].length);
18222       this.tokens.push({
18223         type: this.options.sanitize
18224           ? 'paragraph'
18225           : 'html',
18226         pre: cap[1] === 'pre' || cap[1] === 'script',
18227         text: cap[0]
18228       });
18229       continue;
18230     }
18231
18232     // def
18233     if (top && (cap = this.rules.def.exec(src))) {
18234       src = src.substring(cap[0].length);
18235       this.tokens.links[cap[1].toLowerCase()] = {
18236         href: cap[2],
18237         title: cap[3]
18238       };
18239       continue;
18240     }
18241
18242     // table (gfm)
18243     if (top && (cap = this.rules.table.exec(src))) {
18244       src = src.substring(cap[0].length);
18245
18246       item = {
18247         type: 'table',
18248         header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
18249         align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
18250         cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
18251       };
18252
18253       for (i = 0; i < item.align.length; i++) {
18254         if (/^ *-+: *$/.test(item.align[i])) {
18255           item.align[i] = 'right';
18256         } else if (/^ *:-+: *$/.test(item.align[i])) {
18257           item.align[i] = 'center';
18258         } else if (/^ *:-+ *$/.test(item.align[i])) {
18259           item.align[i] = 'left';
18260         } else {
18261           item.align[i] = null;
18262         }
18263       }
18264
18265       for (i = 0; i < item.cells.length; i++) {
18266         item.cells[i] = item.cells[i]
18267           .replace(/^ *\| *| *\| *$/g, '')
18268           .split(/ *\| */);
18269       }
18270
18271       this.tokens.push(item);
18272
18273       continue;
18274     }
18275
18276     // top-level paragraph
18277     if (top && (cap = this.rules.paragraph.exec(src))) {
18278       src = src.substring(cap[0].length);
18279       this.tokens.push({
18280         type: 'paragraph',
18281         text: cap[1][cap[1].length-1] === '\n'
18282           ? cap[1].slice(0, -1)
18283           : cap[1]
18284       });
18285       continue;
18286     }
18287
18288     // text
18289     if (cap = this.rules.text.exec(src)) {
18290       // Top-level should never reach here.
18291       src = src.substring(cap[0].length);
18292       this.tokens.push({
18293         type: 'text',
18294         text: cap[0]
18295       });
18296       continue;
18297     }
18298
18299     if (src) {
18300       throw new
18301         Error('Infinite loop on byte: ' + src.charCodeAt(0));
18302     }
18303   }
18304
18305   return this.tokens;
18306 };
18307
18308 /**
18309  * Inline-Level Grammar
18310  */
18311
18312 var inline = {
18313   escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
18314   autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
18315   url: noop,
18316   tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
18317   link: /^!?\[(inside)\]\(href\)/,
18318   reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
18319   nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
18320   strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
18321   em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
18322   code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
18323   br: /^ {2,}\n(?!\s*$)/,
18324   del: noop,
18325   text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
18326 };
18327
18328 inline._inside = /(?:\[[^\]]*\]|[^\]]|\](?=[^\[]*\]))*/;
18329 inline._href = /\s*<?([^\s]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
18330
18331 inline.link = replace(inline.link)
18332   ('inside', inline._inside)
18333   ('href', inline._href)
18334   ();
18335
18336 inline.reflink = replace(inline.reflink)
18337   ('inside', inline._inside)
18338   ();
18339
18340 /**
18341  * Normal Inline Grammar
18342  */
18343
18344 inline.normal = merge({}, inline);
18345
18346 /**
18347  * Pedantic Inline Grammar
18348  */
18349
18350 inline.pedantic = merge({}, inline.normal, {
18351   strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
18352   em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
18353 });
18354
18355 /**
18356  * GFM Inline Grammar
18357  */
18358
18359 inline.gfm = merge({}, inline.normal, {
18360   escape: replace(inline.escape)('])', '~|])')(),
18361   url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,
18362   del: /^~~(?=\S)([\s\S]*?\S)~~/,
18363   text: replace(inline.text)
18364     (']|', '~]|')
18365     ('|', '|https?://|')
18366     ()
18367 });
18368
18369 /**
18370  * GFM + Line Breaks Inline Grammar
18371  */
18372
18373 inline.breaks = merge({}, inline.gfm, {
18374   br: replace(inline.br)('{2,}', '*')(),
18375   text: replace(inline.gfm.text)('{2,}', '*')()
18376 });
18377
18378 /**
18379  * Inline Lexer & Compiler
18380  */
18381
18382 function InlineLexer(links, options) {
18383   this.options = options || marked.defaults;
18384   this.links = links;
18385   this.rules = inline.normal;
18386
18387   if (!this.links) {
18388     throw new
18389       Error('Tokens array requires a `links` property.');
18390   }
18391
18392   if (this.options.gfm) {
18393     if (this.options.breaks) {
18394       this.rules = inline.breaks;
18395     } else {
18396       this.rules = inline.gfm;
18397     }
18398   } else if (this.options.pedantic) {
18399     this.rules = inline.pedantic;
18400   }
18401 }
18402
18403 /**
18404  * Expose Inline Rules
18405  */
18406
18407 InlineLexer.rules = inline;
18408
18409 /**
18410  * Static Lexing/Compiling Method
18411  */
18412
18413 InlineLexer.output = function(src, links, options) {
18414   var inline = new InlineLexer(links, options);
18415   return inline.output(src);
18416 };
18417
18418 /**
18419  * Lexing/Compiling
18420  */
18421
18422 InlineLexer.prototype.output = function(src) {
18423   var out = ''
18424     , link
18425     , text
18426     , href
18427     , cap;
18428
18429   while (src) {
18430     // escape
18431     if (cap = this.rules.escape.exec(src)) {
18432       src = src.substring(cap[0].length);
18433       out += cap[1];
18434       continue;
18435     }
18436
18437     // autolink
18438     if (cap = this.rules.autolink.exec(src)) {
18439       src = src.substring(cap[0].length);
18440       if (cap[2] === '@') {
18441         text = cap[1][6] === ':'
18442           ? this.mangle(cap[1].substring(7))
18443           : this.mangle(cap[1]);
18444         href = this.mangle('mailto:') + text;
18445       } else {
18446         text = escape(cap[1]);
18447         href = text;
18448       }
18449       out += '<a href="'
18450         + href
18451         + '">'
18452         + text
18453         + '</a>';
18454       continue;
18455     }
18456
18457     // url (gfm)
18458     if (cap = this.rules.url.exec(src)) {
18459       src = src.substring(cap[0].length);
18460       text = escape(cap[1]);
18461       href = text;
18462       out += '<a href="'
18463         + href
18464         + '">'
18465         + text
18466         + '</a>';
18467       continue;
18468     }
18469
18470     // tag
18471     if (cap = this.rules.tag.exec(src)) {
18472       src = src.substring(cap[0].length);
18473       out += this.options.sanitize
18474         ? escape(cap[0])
18475         : cap[0];
18476       continue;
18477     }
18478
18479     // link
18480     if (cap = this.rules.link.exec(src)) {
18481       src = src.substring(cap[0].length);
18482       out += this.outputLink(cap, {
18483         href: cap[2],
18484         title: cap[3]
18485       });
18486       continue;
18487     }
18488
18489     // reflink, nolink
18490     if ((cap = this.rules.reflink.exec(src))
18491         || (cap = this.rules.nolink.exec(src))) {
18492       src = src.substring(cap[0].length);
18493       link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
18494       link = this.links[link.toLowerCase()];
18495       if (!link || !link.href) {
18496         out += cap[0][0];
18497         src = cap[0].substring(1) + src;
18498         continue;
18499       }
18500       out += this.outputLink(cap, link);
18501       continue;
18502     }
18503
18504     // strong
18505     if (cap = this.rules.strong.exec(src)) {
18506       src = src.substring(cap[0].length);
18507       out += '<strong>'
18508         + this.output(cap[2] || cap[1])
18509         + '</strong>';
18510       continue;
18511     }
18512
18513     // em
18514     if (cap = this.rules.em.exec(src)) {
18515       src = src.substring(cap[0].length);
18516       out += '<em>'
18517         + this.output(cap[2] || cap[1])
18518         + '</em>';
18519       continue;
18520     }
18521
18522     // code
18523     if (cap = this.rules.code.exec(src)) {
18524       src = src.substring(cap[0].length);
18525       out += '<code>'
18526         + escape(cap[2], true)
18527         + '</code>';
18528       continue;
18529     }
18530
18531     // br
18532     if (cap = this.rules.br.exec(src)) {
18533       src = src.substring(cap[0].length);
18534       out += '<br>';
18535       continue;
18536     }
18537
18538     // del (gfm)
18539     if (cap = this.rules.del.exec(src)) {
18540       src = src.substring(cap[0].length);
18541       out += '<del>'
18542         + this.output(cap[1])
18543         + '</del>';
18544       continue;
18545     }
18546
18547     // text
18548     if (cap = this.rules.text.exec(src)) {
18549       src = src.substring(cap[0].length);
18550       out += escape(cap[0]);
18551       continue;
18552     }
18553
18554     if (src) {
18555       throw new
18556         Error('Infinite loop on byte: ' + src.charCodeAt(0));
18557     }
18558   }
18559
18560   return out;
18561 };
18562
18563 /**
18564  * Compile Link
18565  */
18566
18567 InlineLexer.prototype.outputLink = function(cap, link) {
18568   if (cap[0][0] !== '!') {
18569     return '<a href="'
18570       + escape(link.href)
18571       + '"'
18572       + (link.title
18573       ? ' title="'
18574       + escape(link.title)
18575       + '"'
18576       : '')
18577       + '>'
18578       + this.output(cap[1])
18579       + '</a>';
18580   } else {
18581     return '<img src="'
18582       + escape(link.href)
18583       + '" alt="'
18584       + escape(cap[1])
18585       + '"'
18586       + (link.title
18587       ? ' title="'
18588       + escape(link.title)
18589       + '"'
18590       : '')
18591       + '>';
18592   }
18593 };
18594
18595 /**
18596  * Smartypants Transformations
18597  */
18598
18599 InlineLexer.prototype.smartypants = function(text) {
18600   if (!this.options.smartypants) return text;
18601   return text
18602     .replace(/--/g, '—')
18603     .replace(/'([^']*)'/g, '‘$1’')
18604     .replace(/"([^"]*)"/g, '“$1”')
18605     .replace(/\.{3}/g, '…');
18606 };
18607
18608 /**
18609  * Mangle Links
18610  */
18611
18612 InlineLexer.prototype.mangle = function(text) {
18613   var out = ''
18614     , l = text.length
18615     , i = 0
18616     , ch;
18617
18618   for (; i < l; i++) {
18619     ch = text.charCodeAt(i);
18620     if (Math.random() > 0.5) {
18621       ch = 'x' + ch.toString(16);
18622     }
18623     out += '&#' + ch + ';';
18624   }
18625
18626   return out;
18627 };
18628
18629 /**
18630  * Parsing & Compiling
18631  */
18632
18633 function Parser(options) {
18634   this.tokens = [];
18635   this.token = null;
18636   this.options = options || marked.defaults;
18637 }
18638
18639 /**
18640  * Static Parse Method
18641  */
18642
18643 Parser.parse = function(src, options) {
18644   var parser = new Parser(options);
18645   return parser.parse(src);
18646 };
18647
18648 /**
18649  * Parse Loop
18650  */
18651
18652 Parser.prototype.parse = function(src) {
18653   this.inline = new InlineLexer(src.links, this.options);
18654   this.tokens = src.reverse();
18655
18656   var out = '';
18657   while (this.next()) {
18658     out += this.tok();
18659   }
18660
18661   return out;
18662 };
18663
18664 /**
18665  * Next Token
18666  */
18667
18668 Parser.prototype.next = function() {
18669   return this.token = this.tokens.pop();
18670 };
18671
18672 /**
18673  * Preview Next Token
18674  */
18675
18676 Parser.prototype.peek = function() {
18677   return this.tokens[this.tokens.length-1] || 0;
18678 };
18679
18680 /**
18681  * Parse Text Tokens
18682  */
18683
18684 Parser.prototype.parseText = function() {
18685   var body = this.token.text;
18686
18687   while (this.peek().type === 'text') {
18688     body += '\n' + this.next().text;
18689   }
18690
18691   return this.inline.output(body);
18692 };
18693
18694 /**
18695  * Parse Current Token
18696  */
18697
18698 Parser.prototype.tok = function() {
18699   switch (this.token.type) {
18700     case 'space': {
18701       return '';
18702     }
18703     case 'hr': {
18704       return '<hr>\n';
18705     }
18706     case 'heading': {
18707       return '<h'
18708         + this.token.depth
18709         + '>'
18710         + this.inline.output(this.token.text)
18711         + '</h'
18712         + this.token.depth
18713         + '>\n';
18714     }
18715     case 'code': {
18716       if (this.options.highlight) {
18717         var code = this.options.highlight(this.token.text, this.token.lang);
18718         if (code != null && code !== this.token.text) {
18719           this.token.escaped = true;
18720           this.token.text = code;
18721         }
18722       }
18723
18724       if (!this.token.escaped) {
18725         this.token.text = escape(this.token.text, true);
18726       }
18727
18728       return '<pre><code'
18729         + (this.token.lang
18730         ? ' class="'
18731         + this.options.langPrefix
18732         + this.token.lang
18733         + '"'
18734         : '')
18735         + '>'
18736         + this.token.text
18737         + '</code></pre>\n';
18738     }
18739     case 'table': {
18740       var body = ''
18741         , heading
18742         , i
18743         , row
18744         , cell
18745         , j;
18746
18747       // header
18748       body += '<thead>\n<tr>\n';
18749       for (i = 0; i < this.token.header.length; i++) {
18750         heading = this.inline.output(this.token.header[i]);
18751         body += this.token.align[i]
18752           ? '<th align="' + this.token.align[i] + '">' + heading + '</th>\n'
18753           : '<th>' + heading + '</th>\n';
18754       }
18755       body += '</tr>\n</thead>\n';
18756
18757       // body
18758       body += '<tbody>\n'
18759       for (i = 0; i < this.token.cells.length; i++) {
18760         row = this.token.cells[i];
18761         body += '<tr>\n';
18762         for (j = 0; j < row.length; j++) {
18763           cell = this.inline.output(row[j]);
18764           body += this.token.align[j]
18765             ? '<td align="' + this.token.align[j] + '">' + cell + '</td>\n'
18766             : '<td>' + cell + '</td>\n';
18767         }
18768         body += '</tr>\n';
18769       }
18770       body += '</tbody>\n';
18771
18772       return '<table>\n'
18773         + body
18774         + '</table>\n';
18775     }
18776     case 'blockquote_start': {
18777       var body = '';
18778
18779       while (this.next().type !== 'blockquote_end') {
18780         body += this.tok();
18781       }
18782
18783       return '<blockquote>\n'
18784         + body
18785         + '</blockquote>\n';
18786     }
18787     case 'list_start': {
18788       var type = this.token.ordered ? 'ol' : 'ul'
18789         , body = '';
18790
18791       while (this.next().type !== 'list_end') {
18792         body += this.tok();
18793       }
18794
18795       return '<'
18796         + type
18797         + '>\n'
18798         + body
18799         + '</'
18800         + type
18801         + '>\n';
18802     }
18803     case 'list_item_start': {
18804       var body = '';
18805
18806       while (this.next().type !== 'list_item_end') {
18807         body += this.token.type === 'text'
18808           ? this.parseText()
18809           : this.tok();
18810       }
18811
18812       return '<li>'
18813         + body
18814         + '</li>\n';
18815     }
18816     case 'loose_item_start': {
18817       var body = '';
18818
18819       while (this.next().type !== 'list_item_end') {
18820         body += this.tok();
18821       }
18822
18823       return '<li>'
18824         + body
18825         + '</li>\n';
18826     }
18827     case 'html': {
18828       return !this.token.pre && !this.options.pedantic
18829         ? this.inline.output(this.token.text)
18830         : this.token.text;
18831     }
18832     case 'paragraph': {
18833       return '<p>'
18834         + this.inline.output(this.token.text)
18835         + '</p>\n';
18836     }
18837     case 'text': {
18838       return '<p>'
18839         + this.parseText()
18840         + '</p>\n';
18841     }
18842   }
18843 };
18844
18845 /**
18846  * Helpers
18847  */
18848
18849 function escape(html, encode) {
18850   return html
18851     .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
18852     .replace(/</g, '&lt;')
18853     .replace(/>/g, '&gt;')
18854     .replace(/"/g, '&quot;')
18855     .replace(/'/g, '&#39;');
18856 }
18857
18858 function replace(regex, opt) {
18859   regex = regex.source;
18860   opt = opt || '';
18861   return function self(name, val) {
18862     if (!name) return new RegExp(regex, opt);
18863     val = val.source || val;
18864     val = val.replace(/(^|[^\[])\^/g, '$1');
18865     regex = regex.replace(name, val);
18866     return self;
18867   };
18868 }
18869
18870 function noop() {}
18871 noop.exec = noop;
18872
18873 function merge(obj) {
18874   var i = 1
18875     , target
18876     , key;
18877
18878   for (; i < arguments.length; i++) {
18879     target = arguments[i];
18880     for (key in target) {
18881       if (Object.prototype.hasOwnProperty.call(target, key)) {
18882         obj[key] = target[key];
18883       }
18884     }
18885   }
18886
18887   return obj;
18888 }
18889
18890 /**
18891  * Marked
18892  */
18893
18894 function marked(src, opt, callback) {
18895   if (callback || typeof opt === 'function') {
18896     if (!callback) {
18897       callback = opt;
18898       opt = null;
18899     }
18900
18901     if (opt) opt = merge({}, marked.defaults, opt);
18902
18903     var tokens = Lexer.lex(tokens, opt)
18904       , highlight = opt.highlight
18905       , pending = 0
18906       , l = tokens.length
18907       , i = 0;
18908
18909     if (!highlight || highlight.length < 3) {
18910       return callback(null, Parser.parse(tokens, opt));
18911     }
18912
18913     var done = function() {
18914       delete opt.highlight;
18915       var out = Parser.parse(tokens, opt);
18916       opt.highlight = highlight;
18917       return callback(null, out);
18918     };
18919
18920     for (; i < l; i++) {
18921       (function(token) {
18922         if (token.type !== 'code') return;
18923         pending++;
18924         return highlight(token.text, token.lang, function(err, code) {
18925           if (code == null || code === token.text) {
18926             return --pending || done();
18927           }
18928           token.text = code;
18929           token.escaped = true;
18930           --pending || done();
18931         });
18932       })(tokens[i]);
18933     }
18934
18935     return;
18936   }
18937   try {
18938     if (opt) opt = merge({}, marked.defaults, opt);
18939     return Parser.parse(Lexer.lex(src, opt), opt);
18940   } catch (e) {
18941     e.message += '\nPlease report this to https://github.com/chjj/marked.';
18942     if ((opt || marked.defaults).silent) {
18943       return '<p>An error occured:</p><pre>'
18944         + escape(e.message + '', true)
18945         + '</pre>';
18946     }
18947     throw e;
18948   }
18949 }
18950
18951 /**
18952  * Options
18953  */
18954
18955 marked.options =
18956 marked.setOptions = function(opt) {
18957   merge(marked.defaults, opt);
18958   return marked;
18959 };
18960
18961 marked.defaults = {
18962   gfm: true,
18963   tables: true,
18964   breaks: false,
18965   pedantic: false,
18966   sanitize: false,
18967   smartLists: false,
18968   silent: false,
18969   highlight: null,
18970   langPrefix: 'lang-'
18971 };
18972
18973 /**
18974  * Expose
18975  */
18976
18977 marked.Parser = Parser;
18978 marked.parser = Parser.parse;
18979
18980 marked.Lexer = Lexer;
18981 marked.lexer = Lexer.lex;
18982
18983 marked.InlineLexer = InlineLexer;
18984 marked.inlineLexer = InlineLexer.output;
18985
18986 marked.parse = marked;
18987
18988 if (typeof exports === 'object') {
18989   module.exports = marked;
18990 } else if (typeof define === 'function' && define.amd) {
18991   define(function() { return marked; });
18992 } else {
18993   this.marked = marked;
18994 }
18995
18996 }).call(function() {
18997   return this || (typeof window !== 'undefined' ? window : global);
18998 }());
18999 /* jshint ignore:start */
19000 (function () {
19001 'use strict';
19002 window.iD = function () {
19003     window.locale.en = iD.data.en;
19004     window.locale.current('en');
19005
19006     var context = {},
19007         storage;
19008
19009     // https://github.com/openstreetmap/iD/issues/772
19010     // http://mathiasbynens.be/notes/localstorage-pattern#comment-9
19011     try { storage = localStorage; } catch (e) {}
19012     storage = storage || (function() {
19013         var s = {};
19014         return {
19015             getItem: function(k) { return s[k]; },
19016             setItem: function(k, v) { s[k] = v; },
19017             removeItem: function(k) { delete s[k]; }
19018         };
19019     })();
19020
19021     context.storage = function(k, v) {
19022         try {
19023             if (arguments.length === 1) return storage.getItem(k);
19024             else if (v === null) storage.removeItem(k);
19025             else storage.setItem(k, v);
19026         } catch(e) {
19027             // localstorage quota exceeded
19028             /* jshint devel:true */
19029             if (typeof console !== 'undefined') console.error('localStorage quota exceeded');
19030             /* jshint devel:false */
19031         }
19032     };
19033
19034     /* Accessor for setting minimum zoom for editing features. */
19035
19036     var minEditableZoom = 16;
19037     context.minEditableZoom = function(_) {
19038         if (!arguments.length) return minEditableZoom;
19039         minEditableZoom = _;
19040         connection.tileZoom(_);
19041         return context;
19042     };
19043
19044     var history = iD.History(context),
19045         dispatch = d3.dispatch('enter', 'exit'),
19046         mode,
19047         container,
19048         ui = iD.ui(context),
19049         connection = iD.Connection(),
19050         locale = iD.detect().locale,
19051         localePath;
19052
19053     if (locale && iD.data.locales.indexOf(locale) === -1) {
19054         locale = locale.split('-')[0];
19055     }
19056
19057     context.preauth = function(options) {
19058         connection.switch(options);
19059         return context;
19060     };
19061
19062     context.locale = function(loc, path) {
19063         locale = loc;
19064         localePath = path;
19065
19066         // Also set iD.detect().locale (unless we detected 'en-us' and openstreetmap wants 'en')..
19067         if (!(loc.toLowerCase() === 'en' && iD.detect().locale.toLowerCase() === 'en-us')) {
19068             iD.detect().locale = loc;
19069         }
19070
19071         return context;
19072     };
19073
19074     context.loadLocale = function(cb) {
19075         if (locale && locale !== 'en' && iD.data.locales.indexOf(locale) !== -1) {
19076             localePath = localePath || context.assetPath() + 'locales/' + locale + '.json';
19077             d3.json(localePath, function(err, result) {
19078                 window.locale[locale] = result;
19079                 window.locale.current(locale);
19080                 cb();
19081             });
19082         } else {
19083             cb();
19084         }
19085     };
19086
19087     /* Straight accessors. Avoid using these if you can. */
19088     context.ui = function() { return ui; };
19089     context.connection = function() { return connection; };
19090     context.history = function() { return history; };
19091
19092     /* Connection */
19093     function entitiesLoaded(err, result) {
19094         if (!err) history.merge(result.data, result.extent);
19095     }
19096
19097     context.loadTiles = function(projection, dimensions, callback) {
19098         function done(err, result) {
19099             entitiesLoaded(err, result);
19100             if (callback) callback(err, result);
19101         }
19102         connection.loadTiles(projection, dimensions, done);
19103     };
19104
19105     context.loadEntity = function(id, callback) {
19106         function done(err, result) {
19107             entitiesLoaded(err, result);
19108             if (callback) callback(err, result);
19109         }
19110         connection.loadEntity(id, done);
19111     };
19112
19113     context.zoomToEntity = function(id, zoomTo) {
19114         if (zoomTo !== false) {
19115             this.loadEntity(id, function(err, result) {
19116                 if (err) return;
19117                 var entity = _.find(result.data, function(e) { return e.id === id; });
19118                 if (entity) { map.zoomTo(entity); }
19119             });
19120         }
19121
19122         map.on('drawn.zoomToEntity', function() {
19123             if (!context.hasEntity(id)) return;
19124             map.on('drawn.zoomToEntity', null);
19125             context.on('enter.zoomToEntity', null);
19126             context.enter(iD.modes.Select(context, [id]));
19127         });
19128
19129         context.on('enter.zoomToEntity', function() {
19130             if (mode.id !== 'browse') {
19131                 map.on('drawn.zoomToEntity', null);
19132                 context.on('enter.zoomToEntity', null);
19133             }
19134         });
19135     };
19136
19137     /* History */
19138     context.graph = history.graph;
19139     context.changes = history.changes;
19140     context.intersects = history.intersects;
19141
19142     var inIntro = false;
19143
19144     context.inIntro = function(_) {
19145         if (!arguments.length) return inIntro;
19146         inIntro = _;
19147         return context;
19148     };
19149
19150     context.save = function() {
19151         if (inIntro || (mode && mode.id === 'save')) return;
19152         history.save();
19153         if (history.hasChanges()) return t('save.unsaved_changes');
19154     };
19155
19156     context.flush = function() {
19157         connection.flush();
19158         features.reset();
19159         history.reset();
19160         return context;
19161     };
19162
19163     // Debounce save, since it's a synchronous localStorage write,
19164     // and history changes can happen frequently (e.g. when dragging).
19165     var debouncedSave = _.debounce(context.save, 350);
19166     function withDebouncedSave(fn) {
19167         return function() {
19168             var result = fn.apply(history, arguments);
19169             debouncedSave();
19170             return result;
19171         };
19172     }
19173
19174     context.perform = withDebouncedSave(history.perform);
19175     context.replace = withDebouncedSave(history.replace);
19176     context.pop = withDebouncedSave(history.pop);
19177     context.overwrite = withDebouncedSave(history.overwrite);
19178     context.undo = withDebouncedSave(history.undo);
19179     context.redo = withDebouncedSave(history.redo);
19180
19181     /* Graph */
19182     context.hasEntity = function(id) {
19183         return history.graph().hasEntity(id);
19184     };
19185
19186     context.entity = function(id) {
19187         return history.graph().entity(id);
19188     };
19189
19190     context.childNodes = function(way) {
19191         return history.graph().childNodes(way);
19192     };
19193
19194     context.geometry = function(id) {
19195         return context.entity(id).geometry(history.graph());
19196     };
19197
19198     /* Modes */
19199     context.enter = function(newMode) {
19200         if (mode) {
19201             mode.exit();
19202             dispatch.exit(mode);
19203         }
19204
19205         mode = newMode;
19206         mode.enter();
19207         dispatch.enter(mode);
19208     };
19209
19210     context.mode = function() {
19211         return mode;
19212     };
19213
19214     context.selectedIDs = function() {
19215         if (mode && mode.selectedIDs) {
19216             return mode.selectedIDs();
19217         } else {
19218             return [];
19219         }
19220     };
19221
19222     /* Behaviors */
19223     context.install = function(behavior) {
19224         context.surface().call(behavior);
19225     };
19226
19227     context.uninstall = function(behavior) {
19228         context.surface().call(behavior.off);
19229     };
19230
19231     /* Copy/Paste */
19232     var copyIDs = [], copyGraph;
19233     context.copyGraph = function() { return copyGraph; };
19234     context.copyIDs = function(_) {
19235         if (!arguments.length) return copyIDs;
19236         copyIDs = _;
19237         copyGraph = history.graph();
19238         return context;
19239     };
19240
19241     /* Projection */
19242     context.projection = iD.geo.RawMercator();
19243
19244     /* Background */
19245     var background = iD.Background(context);
19246     context.background = function() { return background; };
19247
19248     /* Features */
19249     var features = iD.Features(context);
19250     context.features = function() { return features; };
19251     context.hasHiddenConnections = function(id) {
19252         var graph = history.graph(),
19253             entity = graph.entity(id);
19254         return features.hasHiddenConnections(entity, graph);
19255     };
19256
19257     /* Map */
19258     var map = iD.Map(context);
19259     context.map = function() { return map; };
19260     context.layers = function() { return map.layers; };
19261     context.surface = function() { return map.surface; };
19262     context.editable = function() { return map.editable(); };
19263     context.mouse = map.mouse;
19264     context.extent = map.extent;
19265     context.pan = map.pan;
19266     context.zoomIn = map.zoomIn;
19267     context.zoomOut = map.zoomOut;
19268
19269     context.surfaceRect = function() {
19270         // Work around a bug in Firefox.
19271         //   http://stackoverflow.com/questions/18153989/
19272         //   https://bugzilla.mozilla.org/show_bug.cgi?id=530985
19273         return context.surface().node().parentNode.getBoundingClientRect();
19274     };
19275
19276     /* Presets */
19277     var presets = iD.presets();
19278
19279     context.presets = function(_) {
19280         if (!arguments.length) return presets;
19281         presets.load(_);
19282         iD.areaKeys = presets.areaKeys();
19283         return context;
19284     };
19285
19286     context.imagery = function(_) {
19287         background.load(_);
19288         return context;
19289     };
19290
19291     context.container = function(_) {
19292         if (!arguments.length) return container;
19293         container = _;
19294         container.classed('id-container', true);
19295         return context;
19296     };
19297
19298     /* Taginfo */
19299     var taginfo;
19300     context.taginfo = function(_) {
19301         if (!arguments.length) return taginfo;
19302         taginfo = _;
19303         return context;
19304     };
19305
19306     var embed = false;
19307     context.embed = function(_) {
19308         if (!arguments.length) return embed;
19309         embed = _;
19310         return context;
19311     };
19312
19313     var assetPath = '';
19314     context.assetPath = function(_) {
19315         if (!arguments.length) return assetPath;
19316         assetPath = _;
19317         return context;
19318     };
19319
19320     var assetMap = {};
19321     context.assetMap = function(_) {
19322         if (!arguments.length) return assetMap;
19323         assetMap = _;
19324         return context;
19325     };
19326
19327     context.imagePath = function(_) {
19328         var asset = 'img/' + _;
19329         return assetMap[asset] || assetPath + asset;
19330     };
19331
19332     return d3.rebind(context, dispatch, 'on');
19333 };
19334
19335 iD.version = '1.7.3';
19336
19337 (function() {
19338     var detected = {};
19339
19340     var ua = navigator.userAgent,
19341         m = null;
19342
19343     m = ua.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i);   // IE11+
19344     if (m !== null) {
19345         detected.browser = 'msie';
19346         detected.version = m[1];
19347     }
19348     if (!detected.browser) {
19349         m = ua.match(/(opr)\/?\s*(\.?\d+(\.\d+)*)/i);   // Opera 15+
19350         if (m !== null) {
19351             detected.browser = 'Opera';
19352             detected.version = m[2];
19353         }
19354     }
19355     if (!detected.browser) {
19356         m = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
19357         if (m !== null) {
19358             detected.browser = m[1];
19359             detected.version = m[2];
19360             m = ua.match(/version\/([\.\d]+)/i);
19361             if (m !== null) detected.version = m[1];
19362         }
19363     }
19364     if (!detected.browser) {
19365         detected.browser = navigator.appName;
19366         detected.version = navigator.appVersion;
19367     }
19368
19369     // keep major.minor version only..
19370     detected.version = detected.version.split(/\W/).slice(0,2).join('.');
19371
19372     if (detected.browser.toLowerCase() === 'msie') {
19373         detected.browser = 'Internet Explorer';
19374         detected.support = parseFloat(detected.version) > 9;
19375     } else {
19376         detected.support = true;
19377     }
19378
19379     // Added due to incomplete svg style support. See #715
19380     detected.opera = (detected.browser.toLowerCase() === 'opera' && parseFloat(detected.version) < 15 );
19381
19382     detected.locale = navigator.language || navigator.userLanguage || 'en-US';
19383
19384     detected.filedrop = (window.FileReader && 'ondrop' in window);
19385
19386     function nav(x) {
19387         return navigator.userAgent.indexOf(x) !== -1;
19388     }
19389
19390     if (nav('Win')) {
19391         detected.os = 'win';
19392         detected.platform = 'Windows';
19393     }
19394     else if (nav('Mac')) {
19395         detected.os = 'mac';
19396         detected.platform = 'Macintosh';
19397     }
19398     else if (nav('X11') || nav('Linux')) {
19399         detected.os = 'linux';
19400         detected.platform = 'Linux';
19401     }
19402     else {
19403         detected.os = 'win';
19404         detected.platform = 'Unknown';
19405     }
19406
19407     iD.detect = function() { return detected; };
19408 })();
19409 iD.countryCode  = function() {
19410     var countryCode = {},
19411         endpoint = 'https://nominatim.openstreetmap.org/reverse?';
19412
19413     if (!iD.countryCode.cache) {
19414         iD.countryCode.cache = rbush();
19415     }
19416
19417     var cache = iD.countryCode.cache;
19418
19419     countryCode.search = function(location, callback) {
19420         var countryCodes = cache.search([location[0], location[1], location[0], location[1]]);
19421
19422         if (countryCodes.length > 0)
19423             return callback(null, countryCodes[0][4]);
19424
19425         d3.json(endpoint +
19426             iD.util.qsString({
19427                 format: 'json',
19428                 addressdetails: 1,
19429                 lat: location[1],
19430                 lon: location[0]
19431             }), function(err, result) {
19432                 if (err)
19433                     return callback(err);
19434                 else if (result && result.error)
19435                     return callback(result.error);
19436
19437                 var extent = iD.geo.Extent(location).padByMeters(1000);
19438
19439                 cache.insert([extent[0][0], extent[0][1], extent[1][0], extent[1][1], result.address.country_code]);
19440
19441                 callback(null, result.address.country_code);
19442             });
19443     };
19444
19445     return countryCode;
19446 };
19447 iD.taginfo = function() {
19448     var taginfo = {},
19449         endpoint = 'https://taginfo.openstreetmap.org/api/4/',
19450         tag_sorts = {
19451             point: 'count_nodes',
19452             vertex: 'count_nodes',
19453             area: 'count_ways',
19454             line: 'count_ways'
19455         },
19456         tag_filters = {
19457             point: 'nodes',
19458             vertex: 'nodes',
19459             area: 'ways',
19460             line: 'ways'
19461         };
19462
19463     if (!iD.taginfo.cache) {
19464         iD.taginfo.cache = {};
19465     }
19466
19467     var cache = iD.taginfo.cache;
19468
19469     function sets(parameters, n, o) {
19470         if (parameters.geometry && o[parameters.geometry]) {
19471             parameters[n] = o[parameters.geometry];
19472         }
19473         return parameters;
19474     }
19475
19476     function setFilter(parameters) {
19477         return sets(parameters, 'filter', tag_filters);
19478     }
19479
19480     function setSort(parameters) {
19481         return sets(parameters, 'sortname', tag_sorts);
19482     }
19483
19484     function clean(parameters) {
19485         return _.omit(parameters, 'geometry', 'debounce');
19486     }
19487
19488     function shorten(parameters) {
19489         if (!parameters.query) {
19490             delete parameters.query;
19491         } else {
19492             parameters.query = parameters.query.slice(0, 3);
19493         }
19494         return parameters;
19495     }
19496
19497     function popularKeys(parameters) {
19498         var pop_field = 'count_all';
19499         if (parameters.filter) pop_field = 'count_' + parameters.filter;
19500         return function(d) { return parseFloat(d[pop_field]) > 10000; };
19501     }
19502
19503     function popularValues() {
19504         return function(d) { return parseFloat(d.fraction) > 0.01 || d.in_wiki; };
19505     }
19506
19507     function valKey(d) { return { value: d.key }; }
19508
19509     function valKeyDescription(d) {
19510         return {
19511             value: d.value,
19512             title: d.description
19513         };
19514     }
19515
19516     var debounced = _.debounce(d3.json, 100, true);
19517
19518     function request(url, debounce, callback) {
19519         if (cache[url]) {
19520             callback(null, cache[url]);
19521         } else if (debounce) {
19522             debounced(url, done);
19523         } else {
19524             d3.json(url, done);
19525         }
19526
19527         function done(err, data) {
19528             if (!err) cache[url] = data;
19529             callback(err, data);
19530         }
19531     }
19532
19533     taginfo.keys = function(parameters, callback) {
19534         var debounce = parameters.debounce;
19535         parameters = clean(shorten(setSort(parameters)));
19536         request(endpoint + 'keys/all?' +
19537             iD.util.qsString(_.extend({
19538                 rp: 10,
19539                 sortname: 'count_all',
19540                 sortorder: 'desc',
19541                 page: 1
19542             }, parameters)), debounce, function(err, d) {
19543                 if (err) return callback(err);
19544                 callback(null, d.data.filter(popularKeys(parameters)).map(valKey));
19545             });
19546     };
19547
19548     taginfo.values = function(parameters, callback) {
19549         var debounce = parameters.debounce;
19550         parameters = clean(shorten(setSort(setFilter(parameters))));
19551         request(endpoint + 'key/values?' +
19552             iD.util.qsString(_.extend({
19553                 rp: 25,
19554                 sortname: 'count_all',
19555                 sortorder: 'desc',
19556                 page: 1
19557             }, parameters)), debounce, function(err, d) {
19558                 if (err) return callback(err);
19559                 callback(null, d.data.filter(popularValues()).map(valKeyDescription), parameters);
19560             });
19561     };
19562
19563     taginfo.docs = function(parameters, callback) {
19564         var debounce = parameters.debounce;
19565         parameters = clean(setSort(parameters));
19566
19567         var path = 'key/wiki_pages?';
19568         if (parameters.value) path = 'tag/wiki_pages?';
19569         else if (parameters.rtype) path = 'relation/wiki_pages?';
19570
19571         request(endpoint + path +
19572             iD.util.qsString(parameters), debounce, callback);
19573     };
19574
19575     taginfo.endpoint = function(_) {
19576         if (!arguments.length) return endpoint;
19577         endpoint = _;
19578         return taginfo;
19579     };
19580
19581     return taginfo;
19582 };
19583 iD.wikipedia  = function() {
19584     var wiki = {},
19585         endpoint = 'https://en.wikipedia.org/w/api.php?';
19586
19587     wiki.search = function(lang, query, callback) {
19588         lang = lang || 'en';
19589         d3.jsonp(endpoint.replace('en', lang) +
19590             iD.util.qsString({
19591                 action: 'query',
19592                 list: 'search',
19593                 srlimit: '10',
19594                 srinfo: 'suggestion',
19595                 format: 'json',
19596                 callback: '{callback}',
19597                 srsearch: query
19598             }), function(data) {
19599                 if (!data.query) return;
19600                 callback(query, data.query.search.map(function(d) {
19601                     return d.title;
19602                 }));
19603             });
19604     };
19605
19606     wiki.suggestions = function(lang, query, callback) {
19607         lang = lang || 'en';
19608         d3.jsonp(endpoint.replace('en', lang) +
19609             iD.util.qsString({
19610                 action: 'opensearch',
19611                 namespace: 0,
19612                 suggest: '',
19613                 format: 'json',
19614                 callback: '{callback}',
19615                 search: query
19616             }), function(d) {
19617                 callback(d[0], d[1]);
19618             });
19619     };
19620
19621     wiki.translations = function(lang, title, callback) {
19622         d3.jsonp(endpoint.replace('en', lang) +
19623             iD.util.qsString({
19624                 action: 'query',
19625                 prop: 'langlinks',
19626                 format: 'json',
19627                 callback: '{callback}',
19628                 lllimit: 500,
19629                 titles: title
19630             }), function(d) {
19631                 var list = d.query.pages[Object.keys(d.query.pages)[0]],
19632                     translations = {};
19633                 if (list && list.langlinks) {
19634                     list.langlinks.forEach(function(d) {
19635                         translations[d.lang] = d['*'];
19636                     });
19637                     callback(translations);
19638                 }
19639             });
19640     };
19641
19642     return wiki;
19643 };
19644 iD.util = {};
19645
19646 iD.util.tagText = function(entity) {
19647     return d3.entries(entity.tags).map(function(e) {
19648         return e.key + '=' + e.value;
19649     }).join(', ');
19650 };
19651
19652 iD.util.entitySelector = function(ids) {
19653     return ids.length ? '.' + ids.join(',.') : 'nothing';
19654 };
19655
19656 iD.util.entityOrMemberSelector = function(ids, graph) {
19657     var s = iD.util.entitySelector(ids);
19658
19659     ids.forEach(function(id) {
19660         var entity = graph.hasEntity(id);
19661         if (entity && entity.type === 'relation') {
19662             entity.members.forEach(function(member) {
19663                 s += ',.' + member.id;
19664             });
19665         }
19666     });
19667
19668     return s;
19669 };
19670
19671 iD.util.displayName = function(entity) {
19672     var localeName = 'name:' + iD.detect().locale.toLowerCase().split('-')[0];
19673     return entity.tags[localeName] || entity.tags.name || entity.tags.ref;
19674 };
19675
19676 iD.util.displayType = function(id) {
19677     return {
19678         n: t('inspector.node'),
19679         w: t('inspector.way'),
19680         r: t('inspector.relation')
19681     }[id.charAt(0)];
19682 };
19683
19684 iD.util.stringQs = function(str) {
19685     return str.split('&').reduce(function(obj, pair){
19686         var parts = pair.split('=');
19687         if (parts.length === 2) {
19688             obj[parts[0]] = (null === parts[1]) ? '' : decodeURIComponent(parts[1]);
19689         }
19690         return obj;
19691     }, {});
19692 };
19693
19694 iD.util.qsString = function(obj, noencode) {
19695     function softEncode(s) {
19696       // encode everything except special characters used in certain hash parameters:
19697       // "/" in map states, ":", ",", {" and "}" in background
19698       return encodeURIComponent(s).replace(/(%2F|%3A|%2C|%7B|%7D)/g, decodeURIComponent);
19699     }
19700     return Object.keys(obj).sort().map(function(key) {
19701         return encodeURIComponent(key) + '=' + (
19702             noencode ? softEncode(obj[key]) : encodeURIComponent(obj[key]));
19703     }).join('&');
19704 };
19705
19706 iD.util.prefixDOMProperty = function(property) {
19707     var prefixes = ['webkit', 'ms', 'moz', 'o'],
19708         i = -1,
19709         n = prefixes.length,
19710         s = document.body;
19711
19712     if (property in s)
19713         return property;
19714
19715     property = property.substr(0, 1).toUpperCase() + property.substr(1);
19716
19717     while (++i < n)
19718         if (prefixes[i] + property in s)
19719             return prefixes[i] + property;
19720
19721     return false;
19722 };
19723
19724 iD.util.prefixCSSProperty = function(property) {
19725     var prefixes = ['webkit', 'ms', 'Moz', 'O'],
19726         i = -1,
19727         n = prefixes.length,
19728         s = document.body.style;
19729
19730     if (property.toLowerCase() in s)
19731         return property.toLowerCase();
19732
19733     while (++i < n)
19734         if (prefixes[i] + property in s)
19735             return '-' + prefixes[i].toLowerCase() + property.replace(/([A-Z])/g, '-$1').toLowerCase();
19736
19737     return false;
19738 };
19739
19740
19741 iD.util.setTransform = function(el, x, y, scale) {
19742     var prop = iD.util.transformProperty = iD.util.transformProperty || iD.util.prefixCSSProperty('Transform'),
19743         translate = iD.detect().opera ?
19744             'translate('   + x + 'px,' + y + 'px)' :
19745             'translate3d(' + x + 'px,' + y + 'px,0)';
19746     return el.style(prop, translate + (scale ? ' scale(' + scale + ')' : ''));
19747 };
19748
19749 iD.util.getStyle = function(selector) {
19750     for (var i = 0; i < document.styleSheets.length; i++) {
19751         var rules = document.styleSheets[i].rules || document.styleSheets[i].cssRules || [];
19752         for (var k = 0; k < rules.length; k++) {
19753             var selectorText = rules[k].selectorText && rules[k].selectorText.split(', ');
19754             if (_.contains(selectorText, selector)) {
19755                 return rules[k];
19756             }
19757         }
19758     }
19759 };
19760
19761 iD.util.editDistance = function(a, b) {
19762     if (a.length === 0) return b.length;
19763     if (b.length === 0) return a.length;
19764     var matrix = [];
19765     for (var i = 0; i <= b.length; i++) { matrix[i] = [i]; }
19766     for (var j = 0; j <= a.length; j++) { matrix[0][j] = j; }
19767     for (i = 1; i <= b.length; i++) {
19768         for (j = 1; j <= a.length; j++) {
19769             if (b.charAt(i-1) === a.charAt(j-1)) {
19770                 matrix[i][j] = matrix[i-1][j-1];
19771             } else {
19772                 matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution
19773                     Math.min(matrix[i][j-1] + 1, // insertion
19774                     matrix[i-1][j] + 1)); // deletion
19775             }
19776         }
19777     }
19778     return matrix[b.length][a.length];
19779 };
19780
19781 // a d3.mouse-alike which
19782 // 1. Only works on HTML elements, not SVG
19783 // 2. Does not cause style recalculation
19784 iD.util.fastMouse = function(container) {
19785     var rect = container.getBoundingClientRect(),
19786         rectLeft = rect.left,
19787         rectTop = rect.top,
19788         clientLeft = +container.clientLeft,
19789         clientTop = +container.clientTop;
19790     return function(e) {
19791         return [
19792             e.clientX - rectLeft - clientLeft,
19793             e.clientY - rectTop - clientTop];
19794     };
19795 };
19796
19797 /* jshint -W103 */
19798 iD.util.getPrototypeOf = Object.getPrototypeOf || function(obj) { return obj.__proto__; };
19799
19800 iD.util.asyncMap = function(inputs, func, callback) {
19801     var remaining = inputs.length,
19802         results = [],
19803         errors = [];
19804
19805     inputs.forEach(function(d, i) {
19806         func(d, function done(err, data) {
19807             errors[i] = err;
19808             results[i] = data;
19809             remaining --;
19810             if (!remaining) callback(errors, results);
19811         });
19812     });
19813 };
19814
19815 // wraps an index to an interval [0..length-1]
19816 iD.util.wrap = function(index, length) {
19817     if (index < 0)
19818         index += Math.ceil(-index/length)*length;
19819     return index % length;
19820 };
19821 // A per-domain session mutex backed by a cookie and dead man's
19822 // switch. If the session crashes, the mutex will auto-release
19823 // after 5 seconds.
19824
19825 iD.util.SessionMutex = function(name) {
19826     var mutex = {},
19827         intervalID;
19828
19829     function renew() {
19830         var expires = new Date();
19831         expires.setSeconds(expires.getSeconds() + 5);
19832         document.cookie = name + '=1; expires=' + expires.toUTCString();
19833     }
19834
19835     mutex.lock = function() {
19836         if (intervalID) return true;
19837         var cookie = document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + name + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1');
19838         if (cookie) return false;
19839         renew();
19840         intervalID = window.setInterval(renew, 4000);
19841         return true;
19842     };
19843
19844     mutex.unlock = function() {
19845         if (!intervalID) return;
19846         document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT';
19847         clearInterval(intervalID);
19848         intervalID = null;
19849     };
19850
19851     mutex.locked = function() {
19852         return !!intervalID;
19853     };
19854
19855     return mutex;
19856 };
19857 iD.util.SuggestNames = function(preset, suggestions) {
19858     preset = preset.id.split('/', 2);
19859     var k = preset[0],
19860         v = preset[1];
19861
19862     return function(value, callback) {
19863         var result = [];
19864         if (value && value.length > 2) {
19865             if (suggestions[k] && suggestions[k][v]) {
19866                 for (var sugg in suggestions[k][v]) {
19867                     var dist = iD.util.editDistance(value, sugg.substring(0, value.length));
19868                     if (dist < 3) {
19869                         result.push({
19870                             title: sugg,
19871                             value: sugg,
19872                             dist: dist
19873                         });
19874                     }
19875                 }
19876             }
19877             result.sort(function(a, b) {
19878                 return a.dist - b.dist;
19879             });
19880         }
19881         result = result.slice(0,3);
19882         callback(result);
19883     };
19884 };
19885 iD.geo = {};
19886
19887 iD.geo.roundCoords = function(c) {
19888     return [Math.floor(c[0]), Math.floor(c[1])];
19889 };
19890
19891 iD.geo.interp = function(p1, p2, t) {
19892     return [p1[0] + (p2[0] - p1[0]) * t,
19893             p1[1] + (p2[1] - p1[1]) * t];
19894 };
19895
19896 // 2D cross product of OA and OB vectors, i.e. z-component of their 3D cross product.
19897 // Returns a positive value, if OAB makes a counter-clockwise turn,
19898 // negative for clockwise turn, and zero if the points are collinear.
19899 iD.geo.cross = function(o, a, b) {
19900     return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
19901 };
19902
19903 // http://jsperf.com/id-dist-optimization
19904 iD.geo.euclideanDistance = function(a, b) {
19905     var x = a[0] - b[0], y = a[1] - b[1];
19906     return Math.sqrt((x * x) + (y * y));
19907 };
19908
19909 // using WGS84 polar radius (6356752.314245179 m)
19910 // const = 2 * PI * r / 360
19911 iD.geo.latToMeters = function(dLat) {
19912     return dLat * 110946.257617;
19913 };
19914
19915 // using WGS84 equatorial radius (6378137.0 m)
19916 // const = 2 * PI * r / 360
19917 iD.geo.lonToMeters = function(dLon, atLat) {
19918     return Math.abs(atLat) >= 90 ? 0 :
19919         dLon * 111319.490793 * Math.abs(Math.cos(atLat * (Math.PI/180)));
19920 };
19921
19922 // using WGS84 polar radius (6356752.314245179 m)
19923 // const = 2 * PI * r / 360
19924 iD.geo.metersToLat = function(m) {
19925     return m / 110946.257617;
19926 };
19927
19928 // using WGS84 equatorial radius (6378137.0 m)
19929 // const = 2 * PI * r / 360
19930 iD.geo.metersToLon = function(m, atLat) {
19931     return Math.abs(atLat) >= 90 ? 0 :
19932         m / 111319.490793 / Math.abs(Math.cos(atLat * (Math.PI/180)));
19933 };
19934
19935 // Equirectangular approximation of spherical distances on Earth
19936 iD.geo.sphericalDistance = function(a, b) {
19937     var x = iD.geo.lonToMeters(a[0] - b[0], (a[1] + b[1]) / 2),
19938         y = iD.geo.latToMeters(a[1] - b[1]);
19939     return Math.sqrt((x * x) + (y * y));
19940 };
19941
19942 iD.geo.edgeEqual = function(a, b) {
19943     return (a[0] === b[0] && a[1] === b[1]) ||
19944         (a[0] === b[1] && a[1] === b[0]);
19945 };
19946
19947 // Return the counterclockwise angle in the range (-pi, pi)
19948 // between the positive X axis and the line intersecting a and b.
19949 iD.geo.angle = function(a, b, projection) {
19950     a = projection(a.loc);
19951     b = projection(b.loc);
19952     return Math.atan2(b[1] - a[1], b[0] - a[0]);
19953 };
19954
19955 // Choose the edge with the minimal distance from `point` to its orthogonal
19956 // projection onto that edge, if such a projection exists, or the distance to
19957 // the closest vertex on that edge. Returns an object with the `index` of the
19958 // chosen edge, the chosen `loc` on that edge, and the `distance` to to it.
19959 iD.geo.chooseEdge = function(nodes, point, projection) {
19960     var dist = iD.geo.euclideanDistance,
19961         points = nodes.map(function(n) { return projection(n.loc); }),
19962         min = Infinity,
19963         idx, loc;
19964
19965     function dot(p, q) {
19966         return p[0] * q[0] + p[1] * q[1];
19967     }
19968
19969     for (var i = 0; i < points.length - 1; i++) {
19970         var o = points[i],
19971             s = [points[i + 1][0] - o[0],
19972                  points[i + 1][1] - o[1]],
19973             v = [point[0] - o[0],
19974                  point[1] - o[1]],
19975             proj = dot(v, s) / dot(s, s),
19976             p;
19977
19978         if (proj < 0) {
19979             p = o;
19980         } else if (proj > 1) {
19981             p = points[i + 1];
19982         } else {
19983             p = [o[0] + proj * s[0], o[1] + proj * s[1]];
19984         }
19985
19986         var d = dist(p, point);
19987         if (d < min) {
19988             min = d;
19989             idx = i + 1;
19990             loc = projection.invert(p);
19991         }
19992     }
19993
19994     return {
19995         index: idx,
19996         distance: min,
19997         loc: loc
19998     };
19999 };
20000
20001 // Return the intersection point of 2 line segments.
20002 // From https://github.com/pgkelley4/line-segments-intersect
20003 // This uses the vector cross product approach described below:
20004 //  http://stackoverflow.com/a/565282/786339
20005 iD.geo.lineIntersection = function(a, b) {
20006     function subtractPoints(point1, point2) {
20007         return [point1[0] - point2[0], point1[1] - point2[1]];
20008     }
20009     function crossProduct(point1, point2) {
20010         return point1[0] * point2[1] - point1[1] * point2[0];
20011     }
20012
20013     var p = [a[0][0], a[0][1]],
20014         p2 = [a[1][0], a[1][1]],
20015         q = [b[0][0], b[0][1]],
20016         q2 = [b[1][0], b[1][1]],
20017         r = subtractPoints(p2, p),
20018         s = subtractPoints(q2, q),
20019         uNumerator = crossProduct(subtractPoints(q, p), r),
20020         denominator = crossProduct(r, s);
20021
20022     if (uNumerator && denominator) {
20023         var u = uNumerator / denominator,
20024             t = crossProduct(subtractPoints(q, p), s) / denominator;
20025
20026         if ((t >= 0) && (t <= 1) && (u >= 0) && (u <= 1)) {
20027             return iD.geo.interp(p, p2, t);
20028         }
20029     }
20030
20031     return null;
20032 };
20033
20034 iD.geo.pathIntersections = function(path1, path2) {
20035     var intersections = [];
20036     for (var i = 0; i < path1.length - 1; i++) {
20037         for (var j = 0; j < path2.length - 1; j++) {
20038             var a = [ path1[i], path1[i+1] ],
20039                 b = [ path2[j], path2[j+1] ],
20040                 hit = iD.geo.lineIntersection(a, b);
20041             if (hit) intersections.push(hit);
20042         }
20043     }
20044     return intersections;
20045 };
20046
20047 // Return whether point is contained in polygon.
20048 //
20049 // `point` should be a 2-item array of coordinates.
20050 // `polygon` should be an array of 2-item arrays of coordinates.
20051 //
20052 // From https://github.com/substack/point-in-polygon.
20053 // ray-casting algorithm based on
20054 // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
20055 //
20056 iD.geo.pointInPolygon = function(point, polygon) {
20057     var x = point[0],
20058         y = point[1],
20059         inside = false;
20060
20061     for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
20062         var xi = polygon[i][0], yi = polygon[i][1];
20063         var xj = polygon[j][0], yj = polygon[j][1];
20064
20065         var intersect = ((yi > y) !== (yj > y)) &&
20066             (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
20067         if (intersect) inside = !inside;
20068     }
20069
20070     return inside;
20071 };
20072
20073 iD.geo.polygonContainsPolygon = function(outer, inner) {
20074     return _.every(inner, function(point) {
20075         return iD.geo.pointInPolygon(point, outer);
20076     });
20077 };
20078
20079 iD.geo.polygonIntersectsPolygon = function(outer, inner) {
20080     function testSegments(outer, inner) {
20081         for (var i = 0; i < outer.length - 1; i++) {
20082             for (var j = 0; j < inner.length - 1; j++) {
20083                 var a = [ outer[i], outer[i+1] ],
20084                     b = [ inner[j], inner[j+1] ];
20085                 if (iD.geo.lineIntersection(a, b)) return true;
20086             }
20087         }
20088         return false;
20089     }
20090
20091     return _.some(inner, function(point) {
20092         return iD.geo.pointInPolygon(point, outer);
20093     }) || testSegments(outer, inner);
20094 };
20095
20096 iD.geo.pathLength = function(path) {
20097     var length = 0,
20098         dx, dy;
20099     for (var i = 0; i < path.length - 1; i++) {
20100         dx = path[i][0] - path[i + 1][0];
20101         dy = path[i][1] - path[i + 1][1];
20102         length += Math.sqrt(dx * dx + dy * dy);
20103     }
20104     return length;
20105 };
20106 iD.geo.Extent = function geoExtent(min, max) {
20107     if (!(this instanceof iD.geo.Extent)) return new iD.geo.Extent(min, max);
20108     if (min instanceof iD.geo.Extent) {
20109         return min;
20110     } else if (min && min.length === 2 && min[0].length === 2 && min[1].length === 2) {
20111         this[0] = min[0];
20112         this[1] = min[1];
20113     } else {
20114         this[0] = min        || [ Infinity,  Infinity];
20115         this[1] = max || min || [-Infinity, -Infinity];
20116     }
20117 };
20118
20119 iD.geo.Extent.prototype = new Array(2);
20120
20121 _.extend(iD.geo.Extent.prototype, {
20122     equals: function (obj) {
20123         return this[0][0] === obj[0][0] &&
20124             this[0][1] === obj[0][1] &&
20125             this[1][0] === obj[1][0] &&
20126             this[1][1] === obj[1][1];
20127     },
20128
20129     extend: function(obj) {
20130         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20131         return iD.geo.Extent([Math.min(obj[0][0], this[0][0]),
20132                               Math.min(obj[0][1], this[0][1])],
20133                              [Math.max(obj[1][0], this[1][0]),
20134                               Math.max(obj[1][1], this[1][1])]);
20135     },
20136
20137     _extend: function(extent) {
20138         this[0][0] = Math.min(extent[0][0], this[0][0]);
20139         this[0][1] = Math.min(extent[0][1], this[0][1]);
20140         this[1][0] = Math.max(extent[1][0], this[1][0]);
20141         this[1][1] = Math.max(extent[1][1], this[1][1]);
20142     },
20143
20144     area: function() {
20145         return Math.abs((this[1][0] - this[0][0]) * (this[1][1] - this[0][1]));
20146     },
20147
20148     center: function() {
20149         return [(this[0][0] + this[1][0]) / 2,
20150                 (this[0][1] + this[1][1]) / 2];
20151     },
20152
20153     polygon: function() {
20154         return [
20155             [this[0][0], this[0][1]],
20156             [this[0][0], this[1][1]],
20157             [this[1][0], this[1][1]],
20158             [this[1][0], this[0][1]],
20159             [this[0][0], this[0][1]]
20160         ];
20161     },
20162
20163     contains: function(obj) {
20164         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20165         return obj[0][0] >= this[0][0] &&
20166                obj[0][1] >= this[0][1] &&
20167                obj[1][0] <= this[1][0] &&
20168                obj[1][1] <= this[1][1];
20169     },
20170
20171     intersects: function(obj) {
20172         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20173         return obj[0][0] <= this[1][0] &&
20174                obj[0][1] <= this[1][1] &&
20175                obj[1][0] >= this[0][0] &&
20176                obj[1][1] >= this[0][1];
20177     },
20178
20179     intersection: function(obj) {
20180         if (!this.intersects(obj)) return new iD.geo.Extent();
20181         return new iD.geo.Extent([Math.max(obj[0][0], this[0][0]),
20182                                   Math.max(obj[0][1], this[0][1])],
20183                                  [Math.min(obj[1][0], this[1][0]),
20184                                   Math.min(obj[1][1], this[1][1])]);
20185     },
20186
20187     percentContainedIn: function(obj) {
20188         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20189         var a1 = this.intersection(obj).area(),
20190             a2 = this.area();
20191
20192         if (a1 === Infinity || a2 === Infinity || a1 === 0 || a2 === 0) {
20193             return 0;
20194         } else {
20195             return a1 / a2;
20196         }
20197     },
20198
20199     padByMeters: function(meters) {
20200         var dLat = iD.geo.metersToLat(meters),
20201             dLon = iD.geo.metersToLon(meters, this.center()[1]);
20202         return iD.geo.Extent(
20203                 [this[0][0] - dLon, this[0][1] - dLat],
20204                 [this[1][0] + dLon, this[1][1] + dLat]);
20205     },
20206
20207     toParam: function() {
20208         return [this[0][0], this[0][1], this[1][0], this[1][1]].join(',');
20209     }
20210
20211 });
20212 iD.geo.Turn = function(turn) {
20213     if (!(this instanceof iD.geo.Turn))
20214         return new iD.geo.Turn(turn);
20215     _.extend(this, turn);
20216 };
20217
20218 iD.geo.Intersection = function(graph, vertexId) {
20219     var vertex = graph.entity(vertexId),
20220         highways = [];
20221
20222     // Pre-split ways that would need to be split in
20223     // order to add a restriction. The real split will
20224     // happen when the restriction is added.
20225     graph.parentWays(vertex).forEach(function(way) {
20226         if (!way.tags.highway || way.isArea() || way.isDegenerate())
20227             return;
20228
20229         if (way.affix(vertexId)) {
20230             highways.push(way);
20231         } else {
20232             var idx = _.indexOf(way.nodes, vertex.id, 1),
20233                 wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, idx + 1)}),
20234                 wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(idx)});
20235
20236             graph = graph.replace(wayA);
20237             graph = graph.replace(wayB);
20238
20239             highways.push(wayA);
20240             highways.push(wayB);
20241         }
20242     });
20243
20244     var intersection = {
20245         highways: highways,
20246         graph: graph
20247     };
20248
20249     intersection.turns = function(fromNodeID) {
20250         if (!fromNodeID)
20251             return [];
20252
20253         var way = _.find(highways, function(way) { return way.contains(fromNodeID); });
20254         if (way.first() === vertex.id && way.tags.oneway === 'yes')
20255             return [];
20256         if (way.last() === vertex.id && way.tags.oneway === '-1')
20257             return [];
20258
20259         function withRestriction(turn) {
20260             graph.parentRelations(graph.entity(turn.from.way)).forEach(function(relation) {
20261                 if (relation.tags.type !== 'restriction')
20262                     return;
20263
20264                 var f = relation.memberByRole('from'),
20265                     t = relation.memberByRole('to'),
20266                     v = relation.memberByRole('via');
20267
20268                 if (f && f.id === turn.from.way &&
20269                     v && v.id === turn.via.node &&
20270                     t && t.id === turn.to.way) {
20271                     turn.restriction = relation.id;
20272                 } else if (/^only_/.test(relation.tags.restriction) &&
20273                     f && f.id === turn.from.way &&
20274                     v && v.id === turn.via.node &&
20275                     t && t.id !== turn.to.way) {
20276                     turn.restriction = relation.id;
20277                     turn.indirect_restriction = true;
20278                 }
20279             });
20280
20281             return iD.geo.Turn(turn);
20282         }
20283
20284         var from = {
20285                 node: way.nodes[way.first() === vertex.id ? 1 : way.nodes.length - 2],
20286                 way: way.id.split(/-(a|b)/)[0]
20287             },
20288             via = {node: vertex.id},
20289             turns = [];
20290
20291         highways.forEach(function(parent) {
20292             if (parent === way)
20293                 return;
20294
20295             var index = parent.nodes.indexOf(vertex.id);
20296
20297             // backward
20298             if (parent.first() !== vertex.id && parent.tags.oneway !== 'yes') {
20299                 turns.push(withRestriction({
20300                     from: from,
20301                     via: via,
20302                     to: {node: parent.nodes[index - 1], way: parent.id.split(/-(a|b)/)[0]}
20303                 }));
20304             }
20305
20306             // forward
20307             if (parent.last() !== vertex.id && parent.tags.oneway !== '-1') {
20308                 turns.push(withRestriction({
20309                     from: from,
20310                     via: via,
20311                     to: {node: parent.nodes[index + 1], way: parent.id.split(/-(a|b)/)[0]}
20312                 }));
20313             }
20314         });
20315
20316         // U-turn
20317         if (way.tags.oneway !== 'yes' && way.tags.oneway !== '-1') {
20318             turns.push(withRestriction({
20319                 from: from,
20320                 via: via,
20321                 to: from,
20322                 u: true
20323             }));
20324         }
20325
20326         return turns;
20327     };
20328
20329     return intersection;
20330 };
20331
20332
20333 iD.geo.inferRestriction = function(graph, from, via, to, projection) {
20334     var fromWay = graph.entity(from.way),
20335         fromNode = graph.entity(from.node),
20336         toWay = graph.entity(to.way),
20337         toNode = graph.entity(to.node),
20338         viaNode = graph.entity(via.node),
20339         fromOneWay = (fromWay.tags.oneway === 'yes' && fromWay.last() === via.node) ||
20340             (fromWay.tags.oneway === '-1' && fromWay.first() === via.node),
20341         toOneWay = (toWay.tags.oneway === 'yes' && toWay.first() === via.node) ||
20342             (toWay.tags.oneway === '-1' && toWay.last() === via.node),
20343         angle = iD.geo.angle(viaNode, fromNode, projection) -
20344                 iD.geo.angle(viaNode, toNode, projection);
20345
20346     angle = angle * 180 / Math.PI;
20347
20348     while (angle < 0)
20349         angle += 360;
20350
20351     if (fromNode === toNode)
20352         return 'no_u_turn';
20353     if ((angle < 23 || angle > 336) && fromOneWay && toOneWay)
20354         return 'no_u_turn';
20355     if (angle < 158)
20356         return 'no_right_turn';
20357     if (angle > 202)
20358         return 'no_left_turn';
20359
20360     return 'no_straight_on';
20361 };
20362 // For fixing up rendering of multipolygons with tags on the outer member.
20363 // https://github.com/openstreetmap/iD/issues/613
20364 iD.geo.isSimpleMultipolygonOuterMember = function(entity, graph) {
20365     if (entity.type !== 'way')
20366         return false;
20367
20368     var parents = graph.parentRelations(entity);
20369     if (parents.length !== 1)
20370         return false;
20371
20372     var parent = parents[0];
20373     if (!parent.isMultipolygon() || Object.keys(parent.tags).length > 1)
20374         return false;
20375
20376     var members = parent.members, member;
20377     for (var i = 0; i < members.length; i++) {
20378         member = members[i];
20379         if (member.id === entity.id && member.role && member.role !== 'outer')
20380             return false; // Not outer member
20381         if (member.id !== entity.id && (!member.role || member.role === 'outer'))
20382             return false; // Not a simple multipolygon
20383     }
20384
20385     return parent;
20386 };
20387
20388 iD.geo.simpleMultipolygonOuterMember = function(entity, graph) {
20389     if (entity.type !== 'way')
20390         return false;
20391
20392     var parents = graph.parentRelations(entity);
20393     if (parents.length !== 1)
20394         return false;
20395
20396     var parent = parents[0];
20397     if (!parent.isMultipolygon() || Object.keys(parent.tags).length > 1)
20398         return false;
20399
20400     var members = parent.members, member, outerMember;
20401     for (var i = 0; i < members.length; i++) {
20402         member = members[i];
20403         if (!member.role || member.role === 'outer') {
20404             if (outerMember)
20405                 return false; // Not a simple multipolygon
20406             outerMember = member;
20407         }
20408     }
20409
20410     return outerMember && graph.hasEntity(outerMember.id);
20411 };
20412
20413 // Join `array` into sequences of connecting ways.
20414 //
20415 // Segments which share identical start/end nodes will, as much as possible,
20416 // be connected with each other.
20417 //
20418 // The return value is a nested array. Each constituent array contains elements
20419 // of `array` which have been determined to connect. Each consitituent array
20420 // also has a `nodes` property whose value is an ordered array of member nodes,
20421 // with appropriate order reversal and start/end coordinate de-duplication.
20422 //
20423 // Members of `array` must have, at minimum, `type` and `id` properties.
20424 // Thus either an array of `iD.Way`s or a relation member array may be
20425 // used.
20426 //
20427 // If an member has a `tags` property, its tags will be reversed via
20428 // `iD.actions.Reverse` in the output.
20429 //
20430 // Incomplete members (those for which `graph.hasEntity(element.id)` returns
20431 // false) and non-way members are ignored.
20432 //
20433 iD.geo.joinWays = function(array, graph) {
20434     var joined = [], member, current, nodes, first, last, i, how, what;
20435
20436     array = array.filter(function(member) {
20437         return member.type === 'way' && graph.hasEntity(member.id);
20438     });
20439
20440     function resolve(member) {
20441         return graph.childNodes(graph.entity(member.id));
20442     }
20443
20444     function reverse(member) {
20445         return member.tags ? iD.actions.Reverse(member.id)(graph).entity(member.id) : member;
20446     }
20447
20448     while (array.length) {
20449         member = array.shift();
20450         current = [member];
20451         current.nodes = nodes = resolve(member).slice();
20452         joined.push(current);
20453
20454         while (array.length && _.first(nodes) !== _.last(nodes)) {
20455             first = _.first(nodes);
20456             last  = _.last(nodes);
20457
20458             for (i = 0; i < array.length; i++) {
20459                 member = array[i];
20460                 what = resolve(member);
20461
20462                 if (last === _.first(what)) {
20463                     how  = nodes.push;
20464                     what = what.slice(1);
20465                     break;
20466                 } else if (last === _.last(what)) {
20467                     how  = nodes.push;
20468                     what = what.slice(0, -1).reverse();
20469                     member = reverse(member);
20470                     break;
20471                 } else if (first === _.last(what)) {
20472                     how  = nodes.unshift;
20473                     what = what.slice(0, -1);
20474                     break;
20475                 } else if (first === _.first(what)) {
20476                     how  = nodes.unshift;
20477                     what = what.slice(1).reverse();
20478                     member = reverse(member);
20479                     break;
20480                 } else {
20481                     what = how = null;
20482                 }
20483             }
20484
20485             if (!what)
20486                 break; // No more joinable ways.
20487
20488             how.apply(current, [member]);
20489             how.apply(nodes, what);
20490
20491             array.splice(i, 1);
20492         }
20493     }
20494
20495     return joined;
20496 };
20497 /*
20498     Bypasses features of D3's default projection stream pipeline that are unnecessary:
20499     * Antimeridian clipping
20500     * Spherical rotation
20501     * Resampling
20502 */
20503 iD.geo.RawMercator = function () {
20504     var project = d3.geo.mercator.raw,
20505         k = 512 / Math.PI, // scale
20506         x = 0, y = 0, // translate
20507         clipExtent = [[0, 0], [0, 0]];
20508
20509     function projection(point) {
20510         point = project(point[0] * Math.PI / 180, point[1] * Math.PI / 180);
20511         return [point[0] * k + x, y - point[1] * k];
20512     }
20513
20514     projection.invert = function(point) {
20515         point = project.invert((point[0] - x) / k, (y - point[1]) / k);
20516         return point && [point[0] * 180 / Math.PI, point[1] * 180 / Math.PI];
20517     };
20518
20519     projection.scale = function(_) {
20520         if (!arguments.length) return k;
20521         k = +_;
20522         return projection;
20523     };
20524
20525     projection.translate = function(_) {
20526         if (!arguments.length) return [x, y];
20527         x = +_[0];
20528         y = +_[1];
20529         return projection;
20530     };
20531
20532     projection.clipExtent = function(_) {
20533         if (!arguments.length) return clipExtent;
20534         clipExtent = _;
20535         return projection;
20536     };
20537
20538     projection.stream = d3.geo.transform({
20539         point: function(x, y) {
20540             x = projection([x, y]);
20541             this.stream.point(x[0], x[1]);
20542         }
20543     }).stream;
20544
20545     return projection;
20546 };
20547 iD.actions = {};
20548 iD.actions.AddEntity = function(way) {
20549     return function(graph) {
20550         return graph.replace(way);
20551     };
20552 };
20553 iD.actions.AddMember = function(relationId, member, memberIndex) {
20554     return function(graph) {
20555         var relation = graph.entity(relationId);
20556
20557         if (isNaN(memberIndex) && member.type === 'way') {
20558             var members = relation.indexedMembers();
20559             members.push(member);
20560
20561             var joined = iD.geo.joinWays(members, graph);
20562             for (var i = 0; i < joined.length; i++) {
20563                 var segment = joined[i];
20564                 for (var j = 0; j < segment.length && segment.length >= 2; j++) {
20565                     if (segment[j] !== member)
20566                         continue;
20567
20568                     if (j === 0) {
20569                         memberIndex = segment[j + 1].index;
20570                     } else if (j === segment.length - 1) {
20571                         memberIndex = segment[j - 1].index + 1;
20572                     } else {
20573                         memberIndex = Math.min(segment[j - 1].index + 1, segment[j + 1].index + 1);
20574                     }
20575                 }
20576             }
20577         }
20578
20579         return graph.replace(relation.addMember(member, memberIndex));
20580     };
20581 };
20582 iD.actions.AddMidpoint = function(midpoint, node) {
20583     return function(graph) {
20584         graph = graph.replace(node.move(midpoint.loc));
20585
20586         var parents = _.intersection(
20587             graph.parentWays(graph.entity(midpoint.edge[0])),
20588             graph.parentWays(graph.entity(midpoint.edge[1])));
20589
20590         parents.forEach(function(way) {
20591             for (var i = 0; i < way.nodes.length - 1; i++) {
20592                 if (iD.geo.edgeEqual([way.nodes[i], way.nodes[i + 1]], midpoint.edge)) {
20593                     graph = graph.replace(graph.entity(way.id).addNode(node.id, i + 1));
20594
20595                     // Add only one midpoint on doubled-back segments,
20596                     // turning them into self-intersections.
20597                     return;
20598                 }
20599             }
20600         });
20601
20602         return graph;
20603     };
20604 };
20605 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/AddNodeToWayAction.as
20606 iD.actions.AddVertex = function(wayId, nodeId, index) {
20607     return function(graph) {
20608         return graph.replace(graph.entity(wayId).addNode(nodeId, index));
20609     };
20610 };
20611 iD.actions.ChangeMember = function(relationId, member, memberIndex) {
20612     return function(graph) {
20613         return graph.replace(graph.entity(relationId).updateMember(member, memberIndex));
20614     };
20615 };
20616 iD.actions.ChangePreset = function(entityId, oldPreset, newPreset) {
20617     return function(graph) {
20618         var entity = graph.entity(entityId),
20619             geometry = entity.geometry(graph),
20620             tags = entity.tags;
20621
20622         if (oldPreset) tags = oldPreset.removeTags(tags, geometry);
20623         if (newPreset) tags = newPreset.applyTags(tags, geometry);
20624
20625         return graph.replace(entity.update({tags: tags}));
20626     };
20627 };
20628 iD.actions.ChangeTags = function(entityId, tags) {
20629     return function(graph) {
20630         var entity = graph.entity(entityId);
20631         return graph.replace(entity.update({tags: tags}));
20632     };
20633 };
20634 iD.actions.Circularize = function(wayId, projection, maxAngle) {
20635     maxAngle = (maxAngle || 20) * Math.PI / 180;
20636
20637     var action = function(graph) {
20638         var way = graph.entity(wayId);
20639
20640         if (!way.isConvex(graph)) {
20641             graph = action.makeConvex(graph);
20642         }
20643
20644         var nodes = _.uniq(graph.childNodes(way)),
20645             keyNodes = nodes.filter(function(n) { return graph.parentWays(n).length !== 1; }),
20646             points = nodes.map(function(n) { return projection(n.loc); }),
20647             keyPoints = keyNodes.map(function(n) { return projection(n.loc); }),
20648             centroid = (points.length === 2) ? iD.geo.interp(points[0], points[1], 0.5) : d3.geom.polygon(points).centroid(),
20649             radius = d3.median(points, function(p) { return iD.geo.euclideanDistance(centroid, p); }),
20650             sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
20651             ids;
20652
20653         // we need atleast two key nodes for the algorithm to work
20654         if (!keyNodes.length) {
20655             keyNodes = [nodes[0]];
20656             keyPoints = [points[0]];
20657         }
20658
20659         if (keyNodes.length === 1) {
20660             var index = nodes.indexOf(keyNodes[0]),
20661                 oppositeIndex = Math.floor((index + nodes.length / 2) % nodes.length);
20662
20663             keyNodes.push(nodes[oppositeIndex]);
20664             keyPoints.push(points[oppositeIndex]);
20665         }
20666
20667         // key points and nodes are those connected to the ways,
20668         // they are projected onto the circle, inbetween nodes are moved
20669         // to constant intervals between key nodes, extra inbetween nodes are
20670         // added if necessary.
20671         for (var i = 0; i < keyPoints.length; i++) {
20672             var nextKeyNodeIndex = (i + 1) % keyNodes.length,
20673                 startNode = keyNodes[i],
20674                 endNode = keyNodes[nextKeyNodeIndex],
20675                 startNodeIndex = nodes.indexOf(startNode),
20676                 endNodeIndex = nodes.indexOf(endNode),
20677                 numberNewPoints = -1,
20678                 indexRange = endNodeIndex - startNodeIndex,
20679                 distance, totalAngle, eachAngle, startAngle, endAngle,
20680                 angle, loc, node, j,
20681                 inBetweenNodes = [];
20682
20683             if (indexRange < 0) {
20684                 indexRange += nodes.length;
20685             }
20686
20687             // position this key node
20688             distance = iD.geo.euclideanDistance(centroid, keyPoints[i]);
20689             if (distance === 0) { distance = 1e-4; }
20690             keyPoints[i] = [
20691                 centroid[0] + (keyPoints[i][0] - centroid[0]) / distance * radius,
20692                 centroid[1] + (keyPoints[i][1] - centroid[1]) / distance * radius];
20693             graph = graph.replace(keyNodes[i].move(projection.invert(keyPoints[i])));
20694
20695             // figure out the between delta angle we want to match to
20696             startAngle = Math.atan2(keyPoints[i][1] - centroid[1], keyPoints[i][0] - centroid[0]);
20697             endAngle = Math.atan2(keyPoints[nextKeyNodeIndex][1] - centroid[1], keyPoints[nextKeyNodeIndex][0] - centroid[0]);
20698             totalAngle = endAngle - startAngle;
20699
20700             // detects looping around -pi/pi
20701             if (totalAngle * sign > 0) {
20702                 totalAngle = -sign * (2 * Math.PI - Math.abs(totalAngle));
20703             }
20704
20705             do {
20706                 numberNewPoints++;
20707                 eachAngle = totalAngle / (indexRange + numberNewPoints);
20708             } while (Math.abs(eachAngle) > maxAngle);
20709
20710             // move existing points
20711             for (j = 1; j < indexRange; j++) {
20712                 angle = startAngle + j * eachAngle;
20713                 loc = projection.invert([
20714                     centroid[0] + Math.cos(angle)*radius,
20715                     centroid[1] + Math.sin(angle)*radius]);
20716
20717                 node = nodes[(j + startNodeIndex) % nodes.length].move(loc);
20718                 graph = graph.replace(node);
20719             }
20720
20721             // add new inbetween nodes if necessary
20722             for (j = 0; j < numberNewPoints; j++) {
20723                 angle = startAngle + (indexRange + j) * eachAngle;
20724                 loc = projection.invert([
20725                     centroid[0] + Math.cos(angle) * radius,
20726                     centroid[1] + Math.sin(angle) * radius]);
20727
20728                 node = iD.Node({loc: loc});
20729                 graph = graph.replace(node);
20730
20731                 nodes.splice(endNodeIndex + j, 0, node);
20732                 inBetweenNodes.push(node.id);
20733             }
20734
20735             // Check for other ways that share these keyNodes..
20736             // If keyNodes are adjacent in both ways,
20737             // we can add inBetween nodes to that shared way too..
20738             if (indexRange === 1 && inBetweenNodes.length) {
20739                 var startIndex1 = way.nodes.lastIndexOf(startNode.id),
20740                     endIndex1 = way.nodes.lastIndexOf(endNode.id),
20741                     wayDirection1 = (endIndex1 - startIndex1);
20742                 if (wayDirection1 < -1) { wayDirection1 = 1;}
20743
20744                 /*jshint -W083 */
20745                 _.each(_.without(graph.parentWays(keyNodes[i]), way), function(sharedWay) {
20746                     if (sharedWay.areAdjacent(startNode.id, endNode.id)) {
20747                         var startIndex2 = sharedWay.nodes.lastIndexOf(startNode.id),
20748                             endIndex2 = sharedWay.nodes.lastIndexOf(endNode.id),
20749                             wayDirection2 = (endIndex2 - startIndex2),
20750                             insertAt = endIndex2;
20751                         if (wayDirection2 < -1) { wayDirection2 = 1;}
20752
20753                         if (wayDirection1 !== wayDirection2) {
20754                             inBetweenNodes.reverse();
20755                             insertAt = startIndex2;
20756                         }
20757                         for (j = 0; j < inBetweenNodes.length; j++) {
20758                             sharedWay = sharedWay.addNode(inBetweenNodes[j], insertAt + j);
20759                         }
20760                         graph = graph.replace(sharedWay);
20761                     }
20762                 });
20763                 /*jshint +W083 */
20764             }
20765
20766         }
20767
20768         // update the way to have all the new nodes
20769         ids = nodes.map(function(n) { return n.id; });
20770         ids.push(ids[0]);
20771
20772         way = way.update({nodes: ids});
20773         graph = graph.replace(way);
20774
20775         return graph;
20776     };
20777
20778     action.makeConvex = function(graph) {
20779         var way = graph.entity(wayId),
20780             nodes = _.uniq(graph.childNodes(way)),
20781             points = nodes.map(function(n) { return projection(n.loc); }),
20782             sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
20783             hull = d3.geom.hull(points);
20784
20785         // D3 convex hulls go counterclockwise..
20786         if (sign === -1) {
20787             nodes.reverse();
20788             points.reverse();
20789         }
20790
20791         for (var i = 0; i < hull.length - 1; i++) {
20792             var startIndex = points.indexOf(hull[i]),
20793                 endIndex = points.indexOf(hull[i+1]),
20794                 indexRange = (endIndex - startIndex);
20795
20796             if (indexRange < 0) {
20797                 indexRange += nodes.length;
20798             }
20799
20800             // move interior nodes to the surface of the convex hull..
20801             for (var j = 1; j < indexRange; j++) {
20802                 var point = iD.geo.interp(hull[i], hull[i+1], j / indexRange),
20803                     node = nodes[(j + startIndex) % nodes.length].move(projection.invert(point));
20804                 graph = graph.replace(node);
20805             }
20806         }
20807         return graph;
20808     };
20809
20810     action.disabled = function(graph) {
20811         if (!graph.entity(wayId).isClosed())
20812             return 'not_closed';
20813     };
20814
20815     return action;
20816 };
20817 // Connect the ways at the given nodes.
20818 //
20819 // The last node will survive. All other nodes will be replaced with
20820 // the surviving node in parent ways, and then removed.
20821 //
20822 // Tags and relation memberships of of non-surviving nodes are merged
20823 // to the survivor.
20824 //
20825 // This is the inverse of `iD.actions.Disconnect`.
20826 //
20827 // Reference:
20828 //   https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MergeNodesAction.as
20829 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/MergeNodesAction.java
20830 //
20831 iD.actions.Connect = function(nodeIds) {
20832     return function(graph) {
20833         var survivor = graph.entity(_.last(nodeIds));
20834
20835         for (var i = 0; i < nodeIds.length - 1; i++) {
20836             var node = graph.entity(nodeIds[i]);
20837
20838             /*jshint -W083 */
20839             graph.parentWays(node).forEach(function(parent) {
20840                 if (!parent.areAdjacent(node.id, survivor.id)) {
20841                     graph = graph.replace(parent.replaceNode(node.id, survivor.id));
20842                 }
20843             });
20844
20845             graph.parentRelations(node).forEach(function(parent) {
20846                 graph = graph.replace(parent.replaceMember(node, survivor));
20847             });
20848             /*jshint +W083 */
20849
20850             survivor = survivor.mergeTags(node.tags);
20851             graph = iD.actions.DeleteNode(node.id)(graph);
20852         }
20853
20854         graph = graph.replace(survivor);
20855
20856         return graph;
20857     };
20858 };
20859 iD.actions.CopyEntity = function(id, fromGraph, deep) {
20860     var newEntities = [];
20861
20862     var action = function(graph) {
20863         var entity = fromGraph.entity(id);
20864
20865         newEntities = entity.copy(deep, fromGraph);
20866
20867         for (var i = 0; i < newEntities.length; i++) {
20868             graph = graph.replace(newEntities[i]);
20869         }
20870
20871         return graph;
20872     };
20873
20874     action.newEntities = function() {
20875         return newEntities;
20876     };
20877
20878     return action;
20879 };
20880 iD.actions.DeleteMember = function(relationId, memberIndex) {
20881     return function(graph) {
20882         var relation = graph.entity(relationId)
20883             .removeMember(memberIndex);
20884
20885         graph = graph.replace(relation);
20886
20887         if (relation.isDegenerate())
20888             graph = iD.actions.DeleteRelation(relation.id)(graph);
20889
20890         return graph;
20891     };
20892 };
20893 iD.actions.DeleteMultiple = function(ids) {
20894     var actions = {
20895         way: iD.actions.DeleteWay,
20896         node: iD.actions.DeleteNode,
20897         relation: iD.actions.DeleteRelation
20898     };
20899
20900     var action = function(graph) {
20901         ids.forEach(function(id) {
20902             if (graph.hasEntity(id)) { // It may have been deleted aready.
20903                 graph = actions[graph.entity(id).type](id)(graph);
20904             }
20905         });
20906
20907         return graph;
20908     };
20909
20910     action.disabled = function(graph) {
20911         for (var i = 0; i < ids.length; i++) {
20912             var id = ids[i],
20913                 disabled = actions[graph.entity(id).type](id).disabled(graph);
20914             if (disabled) return disabled;
20915         }
20916     };
20917
20918     return action;
20919 };
20920 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteNodeAction.as
20921 iD.actions.DeleteNode = function(nodeId) {
20922     var action = function(graph) {
20923         var node = graph.entity(nodeId);
20924
20925         graph.parentWays(node)
20926             .forEach(function(parent) {
20927                 parent = parent.removeNode(nodeId);
20928                 graph = graph.replace(parent);
20929
20930                 if (parent.isDegenerate()) {
20931                     graph = iD.actions.DeleteWay(parent.id)(graph);
20932                 }
20933             });
20934
20935         graph.parentRelations(node)
20936             .forEach(function(parent) {
20937                 parent = parent.removeMembersWithID(nodeId);
20938                 graph = graph.replace(parent);
20939
20940                 if (parent.isDegenerate()) {
20941                     graph = iD.actions.DeleteRelation(parent.id)(graph);
20942                 }
20943             });
20944
20945         return graph.remove(node);
20946     };
20947
20948     action.disabled = function() {
20949         return false;
20950     };
20951
20952     return action;
20953 };
20954 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteRelationAction.as
20955 iD.actions.DeleteRelation = function(relationId) {
20956     function deleteEntity(entity, graph) {
20957         return !graph.parentWays(entity).length &&
20958             !graph.parentRelations(entity).length &&
20959             !entity.hasInterestingTags();
20960     }
20961
20962     var action = function(graph) {
20963         var relation = graph.entity(relationId);
20964
20965         graph.parentRelations(relation)
20966             .forEach(function(parent) {
20967                 parent = parent.removeMembersWithID(relationId);
20968                 graph = graph.replace(parent);
20969
20970                 if (parent.isDegenerate()) {
20971                     graph = iD.actions.DeleteRelation(parent.id)(graph);
20972                 }
20973             });
20974
20975         _.uniq(_.pluck(relation.members, 'id')).forEach(function(memberId) {
20976             graph = graph.replace(relation.removeMembersWithID(memberId));
20977
20978             var entity = graph.entity(memberId);
20979             if (deleteEntity(entity, graph)) {
20980                 graph = iD.actions.DeleteMultiple([memberId])(graph);
20981             }
20982         });
20983
20984         return graph.remove(relation);
20985     };
20986
20987     action.disabled = function(graph) {
20988         if (!graph.entity(relationId).isComplete(graph))
20989             return 'incomplete_relation';
20990     };
20991
20992     return action;
20993 };
20994 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteWayAction.as
20995 iD.actions.DeleteWay = function(wayId) {
20996     function deleteNode(node, graph) {
20997         return !graph.parentWays(node).length &&
20998             !graph.parentRelations(node).length &&
20999             !node.hasInterestingTags();
21000     }
21001
21002     var action = function(graph) {
21003         var way = graph.entity(wayId);
21004
21005         graph.parentRelations(way)
21006             .forEach(function(parent) {
21007                 parent = parent.removeMembersWithID(wayId);
21008                 graph = graph.replace(parent);
21009
21010                 if (parent.isDegenerate()) {
21011                     graph = iD.actions.DeleteRelation(parent.id)(graph);
21012                 }
21013             });
21014
21015         _.uniq(way.nodes).forEach(function(nodeId) {
21016             graph = graph.replace(way.removeNode(nodeId));
21017
21018             var node = graph.entity(nodeId);
21019             if (deleteNode(node, graph)) {
21020                 graph = graph.remove(node);
21021             }
21022         });
21023
21024         return graph.remove(way);
21025     };
21026
21027     action.disabled = function(graph) {
21028         var disabled = false;
21029
21030         graph.parentRelations(graph.entity(wayId)).forEach(function(parent) {
21031             var type = parent.tags.type,
21032                 role = parent.memberById(wayId).role || 'outer';
21033             if (type === 'route' || type === 'boundary' || (type === 'multipolygon' && role === 'outer')) {
21034                 disabled = 'part_of_relation';
21035             }
21036         });
21037
21038         return disabled;
21039     };
21040
21041     return action;
21042 };
21043 iD.actions.DeprecateTags = function(entityId) {
21044     return function(graph) {
21045         var entity = graph.entity(entityId),
21046             newtags = _.clone(entity.tags),
21047             change = false,
21048             rule;
21049
21050         // This handles deprecated tags with a single condition
21051         for (var i = 0; i < iD.data.deprecated.length; i++) {
21052
21053             rule = iD.data.deprecated[i];
21054             var match = _.pairs(rule.old)[0],
21055                 replacements = rule.replace ? _.pairs(rule.replace) : null;
21056
21057             if (entity.tags[match[0]] && match[1] === '*') {
21058
21059                 var value = entity.tags[match[0]];
21060                 if (replacements && !newtags[replacements[0][0]]) {
21061                     newtags[replacements[0][0]] = value;
21062                 }
21063                 delete newtags[match[0]];
21064                 change = true;
21065
21066             } else if (entity.tags[match[0]] === match[1]) {
21067                 newtags = _.assign({}, rule.replace || {}, _.omit(newtags, match[0]));
21068                 change = true;
21069             }
21070         }
21071
21072         if (change) {
21073             return graph.replace(entity.update({tags: newtags}));
21074         } else {
21075             return graph;
21076         }
21077     };
21078 };
21079 iD.actions.DiscardTags = function(difference) {
21080     return function(graph) {
21081         function discardTags(entity) {
21082             if (!_.isEmpty(entity.tags)) {
21083                 var tags = {};
21084                 _.each(entity.tags, function(v, k) {
21085                     if (v) tags[k] = v;
21086                 });
21087
21088                 graph = graph.replace(entity.update({
21089                     tags: _.omit(tags, iD.data.discarded)
21090                 }));
21091             }
21092         }
21093
21094         difference.modified().forEach(discardTags);
21095         difference.created().forEach(discardTags);
21096
21097         return graph;
21098     };
21099 };
21100 // Disconect the ways at the given node.
21101 //
21102 // Optionally, disconnect only the given ways.
21103 //
21104 // For testing convenience, accepts an ID to assign to the (first) new node.
21105 // Normally, this will be undefined and the way will automatically
21106 // be assigned a new ID.
21107 //
21108 // This is the inverse of `iD.actions.Connect`.
21109 //
21110 // Reference:
21111 //   https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/UnjoinNodeAction.as
21112 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/UnGlueAction.java
21113 //
21114 iD.actions.Disconnect = function(nodeId, newNodeId) {
21115     var wayIds;
21116
21117     var action = function(graph) {
21118         var node = graph.entity(nodeId),
21119             connections = action.connections(graph);
21120
21121         connections.forEach(function(connection) {
21122             var way = graph.entity(connection.wayID),
21123                 newNode = iD.Node({id: newNodeId, loc: node.loc, tags: node.tags});
21124
21125             graph = graph.replace(newNode);
21126             if (connection.index === 0 && way.isArea()) {
21127                 // replace shared node with shared node..
21128                 graph = graph.replace(way.replaceNode(way.nodes[0], newNode.id));
21129             } else {
21130                 // replace shared node with multiple new nodes..
21131                 graph = graph.replace(way.updateNode(newNode.id, connection.index));
21132             }
21133         });
21134
21135         return graph;
21136     };
21137
21138     action.connections = function(graph) {
21139         var candidates = [],
21140             keeping = false,
21141             parentWays = graph.parentWays(graph.entity(nodeId));
21142
21143         parentWays.forEach(function(way) {
21144             if (wayIds && wayIds.indexOf(way.id) === -1) {
21145                 keeping = true;
21146                 return;
21147             }
21148             if (way.isArea() && (way.nodes[0] === nodeId)) {
21149                 candidates.push({wayID: way.id, index: 0});
21150             } else {
21151                 way.nodes.forEach(function(waynode, index) {
21152                     if (waynode === nodeId) {
21153                         candidates.push({wayID: way.id, index: index});
21154                     }
21155                 });
21156             }
21157         });
21158
21159         return keeping ? candidates : candidates.slice(1);
21160     };
21161
21162     action.disabled = function(graph) {
21163         var connections = action.connections(graph);
21164         if (connections.length === 0 || (wayIds && wayIds.length !== connections.length))
21165             return 'not_connected';
21166     };
21167
21168     action.limitWays = function(_) {
21169         if (!arguments.length) return wayIds;
21170         wayIds = _;
21171         return action;
21172     };
21173
21174     return action;
21175 };
21176 // Join ways at the end node they share.
21177 //
21178 // This is the inverse of `iD.actions.Split`.
21179 //
21180 // Reference:
21181 //   https://github.com/systemed/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MergeWaysAction.as
21182 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/CombineWayAction.java
21183 //
21184 iD.actions.Join = function(ids) {
21185
21186     function groupEntitiesByGeometry(graph) {
21187         var entities = ids.map(function(id) { return graph.entity(id); });
21188         return _.extend({line: []}, _.groupBy(entities, function(entity) { return entity.geometry(graph); }));
21189     }
21190
21191     var action = function(graph) {
21192         var ways = ids.map(graph.entity, graph),
21193             survivor = ways[0];
21194
21195         // Prefer to keep an existing way.
21196         for (var i = 0; i < ways.length; i++) {
21197             if (!ways[i].isNew()) {
21198                 survivor = ways[i];
21199                 break;
21200             }
21201         }
21202
21203         var joined = iD.geo.joinWays(ways, graph)[0];
21204
21205         survivor = survivor.update({nodes: _.pluck(joined.nodes, 'id')});
21206         graph = graph.replace(survivor);
21207
21208         joined.forEach(function(way) {
21209             if (way.id === survivor.id)
21210                 return;
21211
21212             graph.parentRelations(way).forEach(function(parent) {
21213                 graph = graph.replace(parent.replaceMember(way, survivor));
21214             });
21215
21216             survivor = survivor.mergeTags(way.tags);
21217
21218             graph = graph.replace(survivor);
21219             graph = iD.actions.DeleteWay(way.id)(graph);
21220         });
21221
21222         return graph;
21223     };
21224
21225     action.disabled = function(graph) {
21226         var geometries = groupEntitiesByGeometry(graph);
21227         if (ids.length < 2 || ids.length !== geometries.line.length)
21228             return 'not_eligible';
21229
21230         var joined = iD.geo.joinWays(ids.map(graph.entity, graph), graph);
21231         if (joined.length > 1)
21232             return 'not_adjacent';
21233
21234         var nodeIds = _.pluck(joined[0].nodes, 'id').slice(1, -1),
21235             relation;
21236
21237         joined[0].forEach(function(way) {
21238             var parents = graph.parentRelations(way);
21239             parents.forEach(function(parent) {
21240                 if (parent.isRestriction() && parent.members.some(function(m) { return nodeIds.indexOf(m.id) >= 0; }))
21241                     relation = parent;
21242             });
21243         });
21244
21245         if (relation)
21246             return 'restriction';
21247     };
21248
21249     return action;
21250 };
21251 iD.actions.Merge = function(ids) {
21252     function groupEntitiesByGeometry(graph) {
21253         var entities = ids.map(function(id) { return graph.entity(id); });
21254         return _.extend({point: [], area: [], line: [], relation: []},
21255             _.groupBy(entities, function(entity) { return entity.geometry(graph); }));
21256     }
21257
21258     var action = function(graph) {
21259         var geometries = groupEntitiesByGeometry(graph),
21260             target = geometries.area[0] || geometries.line[0],
21261             points = geometries.point;
21262
21263         points.forEach(function(point) {
21264             target = target.mergeTags(point.tags);
21265
21266             graph.parentRelations(point).forEach(function(parent) {
21267                 graph = graph.replace(parent.replaceMember(point, target));
21268             });
21269
21270             graph = graph.remove(point);
21271         });
21272
21273         graph = graph.replace(target);
21274
21275         return graph;
21276     };
21277
21278     action.disabled = function(graph) {
21279         var geometries = groupEntitiesByGeometry(graph);
21280         if (geometries.point.length === 0 ||
21281             (geometries.area.length + geometries.line.length) !== 1 ||
21282             geometries.relation.length !== 0)
21283             return 'not_eligible';
21284     };
21285
21286     return action;
21287 };
21288 iD.actions.MergePolygon = function(ids, newRelationId) {
21289
21290     function groupEntities(graph) {
21291         var entities = ids.map(function (id) { return graph.entity(id); });
21292         return _.extend({
21293                 closedWay: [],
21294                 multipolygon: [],
21295                 other: []
21296             }, _.groupBy(entities, function(entity) {
21297                 if (entity.type === 'way' && entity.isClosed()) {
21298                     return 'closedWay';
21299                 } else if (entity.type === 'relation' && entity.isMultipolygon()) {
21300                     return 'multipolygon';
21301                 } else {
21302                     return 'other';
21303                 }
21304             }));
21305     }
21306
21307     var action = function(graph) {
21308         var entities = groupEntities(graph);
21309
21310         // An array representing all the polygons that are part of the multipolygon.
21311         //
21312         // Each element is itself an array of objects with an id property, and has a
21313         // locs property which is an array of the locations forming the polygon.
21314         var polygons = entities.multipolygon.reduce(function(polygons, m) {
21315             return polygons.concat(iD.geo.joinWays(m.members, graph));
21316         }, []).concat(entities.closedWay.map(function(d) {
21317             var member = [{id: d.id}];
21318             member.nodes = graph.childNodes(d);
21319             return member;
21320         }));
21321
21322         // contained is an array of arrays of boolean values,
21323         // where contained[j][k] is true iff the jth way is
21324         // contained by the kth way.
21325         var contained = polygons.map(function(w, i) {
21326             return polygons.map(function(d, n) {
21327                 if (i === n) return null;
21328                 return iD.geo.polygonContainsPolygon(
21329                     _.pluck(d.nodes, 'loc'),
21330                     _.pluck(w.nodes, 'loc'));
21331             });
21332         });
21333
21334         // Sort all polygons as either outer or inner ways
21335         var members = [],
21336             outer = true;
21337
21338         while (polygons.length) {
21339             extractUncontained(polygons);
21340             polygons = polygons.filter(isContained);
21341             contained = contained.filter(isContained).map(filterContained);
21342         }
21343
21344         function isContained(d, i) {
21345             return _.any(contained[i]);
21346         }
21347
21348         function filterContained(d) {
21349             return d.filter(isContained);
21350         }
21351
21352         function extractUncontained(polygons) {
21353             polygons.forEach(function(d, i) {
21354                 if (!isContained(d, i)) {
21355                     d.forEach(function(member) {
21356                         members.push({
21357                             type: 'way',
21358                             id: member.id,
21359                             role: outer ? 'outer' : 'inner'
21360                         });
21361                     });
21362                 }
21363             });
21364             outer = !outer;
21365         }
21366
21367         // Move all tags to one relation
21368         var relation = entities.multipolygon[0] ||
21369             iD.Relation({ id: newRelationId, tags: { type: 'multipolygon' }});
21370
21371         entities.multipolygon.slice(1).forEach(function(m) {
21372             relation = relation.mergeTags(m.tags);
21373             graph = graph.remove(m);
21374         });
21375
21376         entities.closedWay.forEach(function(way) {
21377             function isThisOuter(m) {
21378                 return m.id === way.id && m.role !== 'inner';
21379             }
21380             if (members.some(isThisOuter)) {
21381                 relation = relation.mergeTags(way.tags);
21382                 graph = graph.replace(way.update({ tags: {} }));
21383             }
21384         });
21385
21386         return graph.replace(relation.update({
21387             members: members,
21388             tags: _.omit(relation.tags, 'area')
21389         }));
21390     };
21391
21392     action.disabled = function(graph) {
21393         var entities = groupEntities(graph);
21394         if (entities.other.length > 0 ||
21395             entities.closedWay.length + entities.multipolygon.length < 2)
21396             return 'not_eligible';
21397         if (!entities.multipolygon.every(function(r) { return r.isComplete(graph); }))
21398             return 'incomplete_relation';
21399     };
21400
21401     return action;
21402 };
21403 iD.actions.MergeRemoteChanges = function(id, localGraph, remoteGraph, formatUser) {
21404     var option = 'safe',  // 'safe', 'force_local', 'force_remote'
21405         conflicts = [];
21406
21407     function user(d) {
21408         return _.isFunction(formatUser) ? formatUser(d) : d;
21409     }
21410
21411
21412     function mergeLocation(remote, target) {
21413         function pointEqual(a, b) {
21414             var epsilon = 1e-6;
21415             return (Math.abs(a[0] - b[0]) < epsilon) && (Math.abs(a[1] - b[1]) < epsilon);
21416         }
21417
21418         if (option === 'force_local' || pointEqual(target.loc, remote.loc)) {
21419             return target;
21420         }
21421         if (option === 'force_remote') {
21422             return target.update({loc: remote.loc});
21423         }
21424
21425         conflicts.push(t('merge_remote_changes.conflict.location', { user: user(remote.user) }));
21426         return target;
21427     }
21428
21429
21430     function mergeNodes(base, remote, target) {
21431         if (option === 'force_local' || _.isEqual(target.nodes, remote.nodes)) {
21432             return target;
21433         }
21434         if (option === 'force_remote') {
21435             return target.update({nodes: remote.nodes});
21436         }
21437
21438         var ccount = conflicts.length,
21439             o = base.nodes || [],
21440             a = target.nodes || [],
21441             b = remote.nodes || [],
21442             nodes = [],
21443             hunks = Diff3.diff3_merge(a, o, b, true);
21444
21445         for (var i = 0; i < hunks.length; i++) {
21446             var hunk = hunks[i];
21447             if (hunk.ok) {
21448                 nodes.push.apply(nodes, hunk.ok);
21449             } else {
21450                 // for all conflicts, we can assume c.a !== c.b
21451                 // because `diff3_merge` called with `true` option to exclude false conflicts..
21452                 var c = hunk.conflict;
21453                 if (_.isEqual(c.o, c.a)) {  // only changed remotely
21454                     nodes.push.apply(nodes, c.b);
21455                 } else if (_.isEqual(c.o, c.b)) {  // only changed locally
21456                     nodes.push.apply(nodes, c.a);
21457                 } else {       // changed both locally and remotely
21458                     conflicts.push(t('merge_remote_changes.conflict.nodelist', { user: user(remote.user) }));
21459                     break;
21460                 }
21461             }
21462         }
21463
21464         return (conflicts.length === ccount) ? target.update({nodes: nodes}) : target;
21465     }
21466
21467
21468     function mergeChildren(targetWay, children, updates, graph) {
21469         function isUsed(node, targetWay) {
21470             var parentWays = _.pluck(graph.parentWays(node), 'id');
21471             return node.hasInterestingTags() ||
21472                 _.without(parentWays, targetWay.id).length > 0 ||
21473                 graph.parentRelations(node).length > 0;
21474         }
21475
21476         var ccount = conflicts.length;
21477
21478         for (var i = 0; i < children.length; i++) {
21479             var id = children[i],
21480                 node = graph.hasEntity(id);
21481
21482             // remove unused childNodes..
21483             if (targetWay.nodes.indexOf(id) === -1) {
21484                 if (node && !isUsed(node, targetWay)) {
21485                     updates.removeIds.push(id);
21486                 }
21487                 continue;
21488             }
21489
21490             // restore used childNodes..
21491             var local = localGraph.hasEntity(id),
21492                 remote = remoteGraph.hasEntity(id),
21493                 target;
21494
21495             if (option === 'force_remote' && remote && remote.visible) {
21496                 updates.replacements.push(remote);
21497
21498             } else if (option === 'force_local' && local) {
21499                 target = iD.Entity(local);
21500                 if (remote && remote.visible) {
21501                     target = target.update({ version: remote.version });
21502                 }
21503                 updates.replacements.push(target);
21504
21505             } else if (option === 'safe' && local && remote) {
21506                 target = iD.Entity(local, { version: remote.version });
21507                 if (remote.visible) {
21508                     target = mergeLocation(remote, target);
21509                 } else {
21510                     conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
21511                 }
21512
21513                 if (conflicts.length !== ccount) break;
21514                 updates.replacements.push(target);
21515             }
21516         }
21517
21518         return targetWay;
21519     }
21520
21521
21522     function updateChildren(updates, graph) {
21523         for (var i = 0; i < updates.replacements.length; i++) {
21524             graph = graph.replace(updates.replacements[i]);
21525         }
21526         if (updates.removeIds.length) {
21527             graph = iD.actions.DeleteMultiple(updates.removeIds)(graph);
21528         }
21529         return graph;
21530     }
21531
21532
21533     function mergeMembers(remote, target) {
21534         if (option === 'force_local' || _.isEqual(target.members, remote.members)) {
21535             return target;
21536         }
21537         if (option === 'force_remote') {
21538             return target.update({members: remote.members});
21539         }
21540
21541         conflicts.push(t('merge_remote_changes.conflict.memberlist', { user: user(remote.user) }));
21542         return target;
21543     }
21544
21545
21546     function mergeTags(base, remote, target) {
21547         function ignoreKey(k) {
21548             return _.contains(iD.data.discarded, k);
21549         }
21550
21551         if (option === 'force_local' || _.isEqual(target.tags, remote.tags)) {
21552             return target;
21553         }
21554         if (option === 'force_remote') {
21555             return target.update({tags: remote.tags});
21556         }
21557
21558         var ccount = conflicts.length,
21559             o = base.tags || {},
21560             a = target.tags || {},
21561             b = remote.tags || {},
21562             keys = _.reject(_.union(_.keys(o), _.keys(a), _.keys(b)), ignoreKey),
21563             tags = _.clone(a),
21564             changed = false;
21565
21566         for (var i = 0; i < keys.length; i++) {
21567             var k = keys[i];
21568
21569             if (o[k] !== b[k] && a[k] !== b[k]) {    // changed remotely..
21570                 if (o[k] !== a[k]) {      // changed locally..
21571                     conflicts.push(t('merge_remote_changes.conflict.tags',
21572                         { tag: k, local: a[k], remote: b[k], user: user(remote.user) }));
21573
21574                 } else {                  // unchanged locally, accept remote change..
21575                     if (b.hasOwnProperty(k)) {
21576                         tags[k] = b[k];
21577                     } else {
21578                         delete tags[k];
21579                     }
21580                     changed = true;
21581                 }
21582             }
21583         }
21584
21585         return (changed && conflicts.length === ccount) ? target.update({tags: tags}) : target;
21586     }
21587
21588
21589     //  `graph.base()` is the common ancestor of the two graphs.
21590     //  `localGraph` contains user's edits up to saving
21591     //  `remoteGraph` contains remote edits to modified nodes
21592     //  `graph` must be a descendent of `localGraph` and may include
21593     //      some conflict resolution actions performed on it.
21594     //
21595     //                  --- ... --- `localGraph` -- ... -- `graph`
21596     //                 /
21597     //  `graph.base()` --- ... --- `remoteGraph`
21598     //
21599     var action = function(graph) {
21600         var updates = { replacements: [], removeIds: [] },
21601             base = graph.base().entities[id],
21602             local = localGraph.entity(id),
21603             remote = remoteGraph.entity(id),
21604             target = iD.Entity(local, { version: remote.version });
21605
21606         // delete/undelete
21607         if (!remote.visible) {
21608             if (option === 'force_remote') {
21609                 return iD.actions.DeleteMultiple([id])(graph);
21610
21611             } else if (option === 'force_local') {
21612                 if (target.type === 'way') {
21613                     target = mergeChildren(target, _.uniq(local.nodes), updates, graph);
21614                     graph = updateChildren(updates, graph);
21615                 }
21616                 return graph.replace(target);
21617
21618             } else {
21619                 conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
21620                 return graph;  // do nothing
21621             }
21622         }
21623
21624         // merge
21625         if (target.type === 'node') {
21626             target = mergeLocation(remote, target);
21627
21628         } else if (target.type === 'way') {
21629             // pull in any child nodes that may not be present locally..
21630             graph.rebase(remoteGraph.childNodes(remote), [graph], false);
21631             target = mergeNodes(base, remote, target);
21632             target = mergeChildren(target, _.union(local.nodes, remote.nodes), updates, graph);
21633
21634         } else if (target.type === 'relation') {
21635             target = mergeMembers(remote, target);
21636         }
21637
21638         target = mergeTags(base, remote, target);
21639
21640         if (!conflicts.length) {
21641             graph = updateChildren(updates, graph).replace(target);
21642         }
21643
21644         return graph;
21645     };
21646
21647     action.withOption = function(opt) {
21648         option = opt;
21649         return action;
21650     };
21651
21652     action.conflicts = function() {
21653         return conflicts;
21654     };
21655
21656     return action;
21657 };
21658 // https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
21659 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
21660 iD.actions.Move = function(moveIds, tryDelta, projection, cache) {
21661     var delta = tryDelta;
21662
21663     function vecAdd(a, b) { return [a[0] + b[0], a[1] + b[1]]; }
21664     function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
21665
21666     function setupCache(graph) {
21667         function canMove(nodeId) {
21668             var parents = _.pluck(graph.parentWays(graph.entity(nodeId)), 'id');
21669             if (parents.length < 3) return true;
21670
21671             // Don't move a vertex where >2 ways meet, unless all parentWays are moving too..
21672             var parentsMoving = _.all(parents, function(id) { return cache.moving[id]; });
21673             if (!parentsMoving) delete cache.moving[nodeId];
21674
21675             return parentsMoving;
21676         }
21677
21678         function cacheEntities(ids) {
21679             _.each(ids, function(id) {
21680                 if (cache.moving[id]) return;
21681                 cache.moving[id] = true;
21682
21683                 var entity = graph.hasEntity(id);
21684                 if (!entity) return;
21685
21686                 if (entity.type === 'node') {
21687                     cache.nodes.push(id);
21688                     cache.startLoc[id] = entity.loc;
21689                 } else if (entity.type === 'way') {
21690                     cache.ways.push(id);
21691                     cacheEntities(entity.nodes);
21692                 } else {
21693                     cacheEntities(_.pluck(entity.members, 'id'));
21694                 }
21695             });
21696         }
21697
21698         function cacheIntersections(ids) {
21699             function isEndpoint(way, id) { return !way.isClosed() && !!way.affix(id); }
21700
21701             _.each(ids, function(id) {
21702                 // consider only intersections with 1 moved and 1 unmoved way.
21703                 _.each(graph.childNodes(graph.entity(id)), function(node) {
21704                     var parents = graph.parentWays(node);
21705                     if (parents.length !== 2) return;
21706
21707                     var moved = graph.entity(id),
21708                         unmoved = _.find(parents, function(way) { return !cache.moving[way.id]; });
21709                     if (!unmoved) return;
21710
21711                     // exclude ways that are overly connected..
21712                     if (_.intersection(moved.nodes, unmoved.nodes).length > 2) return;
21713
21714                     if (moved.isArea() || unmoved.isArea()) return;
21715
21716                     cache.intersection[node.id] = {
21717                         nodeId: node.id,
21718                         movedId: moved.id,
21719                         unmovedId: unmoved.id,
21720                         movedIsEP: isEndpoint(moved, node.id),
21721                         unmovedIsEP: isEndpoint(unmoved, node.id)
21722                     };
21723                 });
21724             });
21725         }
21726
21727
21728         if (!cache) {
21729             cache = {};
21730         }
21731         if (!cache.ok) {
21732             cache.moving = {};
21733             cache.intersection = {};
21734             cache.replacedVertex = {};
21735             cache.startLoc = {};
21736             cache.nodes = [];
21737             cache.ways = [];
21738
21739             cacheEntities(moveIds);
21740             cacheIntersections(cache.ways);
21741             cache.nodes = _.filter(cache.nodes, canMove);
21742
21743             cache.ok = true;
21744         }
21745     }
21746
21747
21748     // Place a vertex where the moved vertex used to be, to preserve way shape..
21749     function replaceMovedVertex(nodeId, wayId, graph, delta) {
21750         var way = graph.entity(wayId),
21751             moved = graph.entity(nodeId),
21752             movedIndex = way.nodes.indexOf(nodeId),
21753             len, prevIndex, nextIndex;
21754
21755         if (way.isClosed()) {
21756             len = way.nodes.length - 1;
21757             prevIndex = (movedIndex + len - 1) % len;
21758             nextIndex = (movedIndex + len + 1) % len;
21759         } else {
21760             len = way.nodes.length;
21761             prevIndex = movedIndex - 1;
21762             nextIndex = movedIndex + 1;
21763         }
21764
21765         var prev = graph.hasEntity(way.nodes[prevIndex]),
21766             next = graph.hasEntity(way.nodes[nextIndex]);
21767
21768         // Don't add orig vertex at endpoint..
21769         if (!prev || !next) return graph;
21770
21771         var key = wayId + '_' + nodeId,
21772             orig = cache.replacedVertex[key];
21773         if (!orig) {
21774             orig = iD.Node();
21775             cache.replacedVertex[key] = orig;
21776             cache.startLoc[orig.id] = cache.startLoc[nodeId];
21777         }
21778
21779         var start, end;
21780         if (delta) {
21781             start = projection(cache.startLoc[nodeId]);
21782             end = projection.invert(vecAdd(start, delta));
21783         } else {
21784             end = cache.startLoc[nodeId];
21785         }
21786         orig = orig.move(end);
21787
21788         var angle = Math.abs(iD.geo.angle(orig, prev, projection) -
21789                 iD.geo.angle(orig, next, projection)) * 180 / Math.PI;
21790
21791         // Don't add orig vertex if it would just make a straight line..
21792         if (angle > 175 && angle < 185) return graph;
21793
21794         // Don't add orig vertex if another point is already nearby (within 10m)
21795         if (iD.geo.sphericalDistance(prev.loc, orig.loc) < 10 ||
21796             iD.geo.sphericalDistance(orig.loc, next.loc) < 10) return graph;
21797
21798         // moving forward or backward along way?
21799         var p1 = [prev.loc, orig.loc, moved.loc, next.loc].map(projection),
21800             p2 = [prev.loc, moved.loc, orig.loc, next.loc].map(projection),
21801             d1 = iD.geo.pathLength(p1),
21802             d2 = iD.geo.pathLength(p2),
21803             insertAt = (d1 < d2) ? movedIndex : nextIndex;
21804
21805         // moving around closed loop?
21806         if (way.isClosed() && insertAt === 0) insertAt = len;
21807
21808         way = way.addNode(orig.id, insertAt);
21809         return graph.replace(orig).replace(way);
21810     }
21811
21812     // Reorder nodes around intersections that have moved..
21813     function unZorroIntersection(intersection, graph) {
21814         var vertex = graph.entity(intersection.nodeId),
21815             way1 = graph.entity(intersection.movedId),
21816             way2 = graph.entity(intersection.unmovedId),
21817             isEP1 = intersection.movedIsEP,
21818             isEP2 = intersection.unmovedIsEP;
21819
21820         // don't move the vertex if it is the endpoint of both ways.
21821         if (isEP1 && isEP2) return graph;
21822
21823         var nodes1 = _.without(graph.childNodes(way1), vertex),
21824             nodes2 = _.without(graph.childNodes(way2), vertex);
21825
21826         if (way1.isClosed() && way1.first() === vertex.id) nodes1.push(nodes1[0]);
21827         if (way2.isClosed() && way2.first() === vertex.id) nodes2.push(nodes2[0]);
21828
21829         var edge1 = !isEP1 && iD.geo.chooseEdge(nodes1, projection(vertex.loc), projection),
21830             edge2 = !isEP2 && iD.geo.chooseEdge(nodes2, projection(vertex.loc), projection),
21831             loc;
21832
21833         // snap vertex to nearest edge (or some point between them)..
21834         if (!isEP1 && !isEP2) {
21835             var epsilon = 1e-4, maxIter = 10;
21836             for (var i = 0; i < maxIter; i++) {
21837                 loc = iD.geo.interp(edge1.loc, edge2.loc, 0.5);
21838                 edge1 = iD.geo.chooseEdge(nodes1, projection(loc), projection);
21839                 edge2 = iD.geo.chooseEdge(nodes2, projection(loc), projection);
21840                 if (Math.abs(edge1.distance - edge2.distance) < epsilon) break;
21841             }
21842         } else if (!isEP1) {
21843             loc = edge1.loc;
21844         } else {
21845             loc = edge2.loc;
21846         }
21847
21848         graph = graph.replace(vertex.move(loc));
21849
21850         // if zorro happened, reorder nodes..
21851         if (!isEP1 && edge1.index !== way1.nodes.indexOf(vertex.id)) {
21852             way1 = way1.removeNode(vertex.id).addNode(vertex.id, edge1.index);
21853             graph = graph.replace(way1);
21854         }
21855         if (!isEP2 && edge2.index !== way2.nodes.indexOf(vertex.id)) {
21856             way2 = way2.removeNode(vertex.id).addNode(vertex.id, edge2.index);
21857             graph = graph.replace(way2);
21858         }
21859
21860         return graph;
21861     }
21862
21863
21864     function cleanupIntersections(graph) {
21865         _.each(cache.intersection, function(obj) {
21866             graph = replaceMovedVertex(obj.nodeId, obj.movedId, graph, delta);
21867             graph = replaceMovedVertex(obj.nodeId, obj.unmovedId, graph, null);
21868             graph = unZorroIntersection(obj, graph);
21869         });
21870
21871         return graph;
21872     }
21873
21874     // check if moving way endpoint can cross an unmoved way, if so limit delta..
21875     function limitDelta(graph) {
21876         _.each(cache.intersection, function(obj) {
21877             if (!obj.movedIsEP) return;
21878
21879             var node = graph.entity(obj.nodeId),
21880                 start = projection(node.loc),
21881                 end = vecAdd(start, delta),
21882                 movedNodes = graph.childNodes(graph.entity(obj.movedId)),
21883                 movedPath = _.map(_.pluck(movedNodes, 'loc'),
21884                     function(loc) { return vecAdd(projection(loc), delta); }),
21885                 unmovedNodes = graph.childNodes(graph.entity(obj.unmovedId)),
21886                 unmovedPath = _.map(_.pluck(unmovedNodes, 'loc'), projection),
21887                 hits = iD.geo.pathIntersections(movedPath, unmovedPath);
21888
21889             for (var i = 0; i < hits.length; i++) {
21890                 if (_.isEqual(hits[i], end)) continue;
21891                 var edge = iD.geo.chooseEdge(unmovedNodes, end, projection);
21892                 delta = vecSub(projection(edge.loc), start);
21893             }
21894         });
21895     }
21896
21897
21898     var action = function(graph) {
21899         if (delta[0] === 0 && delta[1] === 0) return graph;
21900
21901         setupCache(graph);
21902
21903         if (!_.isEmpty(cache.intersection)) {
21904             limitDelta(graph);
21905         }
21906
21907         _.each(cache.nodes, function(id) {
21908             var node = graph.entity(id),
21909                 start = projection(node.loc),
21910                 end = vecAdd(start, delta);
21911             graph = graph.replace(node.move(projection.invert(end)));
21912         });
21913
21914         if (!_.isEmpty(cache.intersection)) {
21915             graph = cleanupIntersections(graph);
21916         }
21917
21918         return graph;
21919     };
21920
21921     action.disabled = function(graph) {
21922         function incompleteRelation(id) {
21923             var entity = graph.entity(id);
21924             return entity.type === 'relation' && !entity.isComplete(graph);
21925         }
21926
21927         if (_.any(moveIds, incompleteRelation))
21928             return 'incomplete_relation';
21929     };
21930
21931     action.delta = function() {
21932         return delta;
21933     };
21934
21935     return action;
21936 };
21937 // https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
21938 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
21939 iD.actions.MoveNode = function(nodeId, loc) {
21940     return function(graph) {
21941         return graph.replace(graph.entity(nodeId).move(loc));
21942     };
21943 };
21944 iD.actions.Noop = function() {
21945     return function(graph) {
21946         return graph;
21947     };
21948 };
21949 /*
21950  * Based on https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/potlatch2/tools/Quadrilateralise.as
21951  */
21952
21953 iD.actions.Orthogonalize = function(wayId, projection) {
21954     var threshold = 12, // degrees within right or straight to alter
21955         lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180),
21956         upperThreshold = Math.cos(threshold * Math.PI / 180);
21957
21958     var action = function(graph) {
21959         var way = graph.entity(wayId),
21960             nodes = graph.childNodes(way),
21961             points = _.uniq(nodes).map(function(n) { return projection(n.loc); }),
21962             corner = {i: 0, dotp: 1},
21963             epsilon = 1e-4,
21964             i, j, score, motions;
21965
21966         if (nodes.length === 4) {
21967             for (i = 0; i < 1000; i++) {
21968                 motions = points.map(calcMotion);
21969                 points[corner.i] = addPoints(points[corner.i],motions[corner.i]);
21970                 score = corner.dotp;
21971                 if (score < epsilon) {
21972                     break;
21973                 }
21974             }
21975
21976             graph = graph.replace(graph.entity(nodes[corner.i].id)
21977                 .move(projection.invert(points[corner.i])));
21978         } else {
21979             var best,
21980                 originalPoints = _.clone(points);
21981             score = Infinity;
21982
21983             for (i = 0; i < 1000; i++) {
21984                 motions = points.map(calcMotion);
21985                 for (j = 0; j < motions.length; j++) {
21986                     points[j] = addPoints(points[j],motions[j]);
21987                 }
21988                 var newScore = squareness(points);
21989                 if (newScore < score) {
21990                     best = _.clone(points);
21991                     score = newScore;
21992                 }
21993                 if (score < epsilon) {
21994                     break;
21995                 }
21996             }
21997
21998             points = best;
21999
22000             for (i = 0; i < points.length; i++) {
22001                 // only move the points that actually moved
22002                 if (originalPoints[i][0] !== points[i][0] || originalPoints[i][1] !== points[i][1]) {
22003                     graph = graph.replace(graph.entity(nodes[i].id)
22004                         .move(projection.invert(points[i])));
22005                 }
22006             }
22007
22008             // remove empty nodes on straight sections
22009             for (i = 0; i < points.length; i++) {
22010                 var node = nodes[i];
22011
22012                 if (graph.parentWays(node).length > 1 ||
22013                     graph.parentRelations(node).length ||
22014                     node.hasInterestingTags()) {
22015
22016                     continue;
22017                 }
22018
22019                 var dotp = normalizedDotProduct(i, points);
22020                 if (dotp < -1 + epsilon) {
22021                     graph = iD.actions.DeleteNode(nodes[i].id)(graph);
22022                 }
22023             }
22024         }
22025
22026         return graph;
22027
22028         function calcMotion(b, i, array) {
22029             var a = array[(i - 1 + array.length) % array.length],
22030                 c = array[(i + 1) % array.length],
22031                 p = subtractPoints(a, b),
22032                 q = subtractPoints(c, b),
22033                 scale, dotp;
22034
22035             scale = 2 * Math.min(iD.geo.euclideanDistance(p, [0, 0]), iD.geo.euclideanDistance(q, [0, 0]));
22036             p = normalizePoint(p, 1.0);
22037             q = normalizePoint(q, 1.0);
22038
22039             dotp = filterDotProduct(p[0] * q[0] + p[1] * q[1]);
22040
22041             // nasty hack to deal with almost-straight segments (angle is closer to 180 than to 90/270).
22042             if (array.length > 3) {
22043                 if (dotp < -0.707106781186547) {
22044                     dotp += 1.0;
22045                 }
22046             } else if (dotp && Math.abs(dotp) < corner.dotp) {
22047                 corner.i = i;
22048                 corner.dotp = Math.abs(dotp);
22049             }
22050
22051             return normalizePoint(addPoints(p, q), 0.1 * dotp * scale);
22052         }
22053     };
22054
22055     function squareness(points) {
22056         return points.reduce(function(sum, val, i, array) {
22057             var dotp = normalizedDotProduct(i, array);
22058
22059             dotp = filterDotProduct(dotp);
22060             return sum + 2.0 * Math.min(Math.abs(dotp - 1.0), Math.min(Math.abs(dotp), Math.abs(dotp + 1)));
22061         }, 0);
22062     }
22063
22064     function normalizedDotProduct(i, points) {
22065         var a = points[(i - 1 + points.length) % points.length],
22066             b = points[i],
22067             c = points[(i + 1) % points.length],
22068             p = subtractPoints(a, b),
22069             q = subtractPoints(c, b);
22070
22071         p = normalizePoint(p, 1.0);
22072         q = normalizePoint(q, 1.0);
22073
22074         return p[0] * q[0] + p[1] * q[1];
22075     }
22076
22077     function subtractPoints(a, b) {
22078         return [a[0] - b[0], a[1] - b[1]];
22079     }
22080
22081     function addPoints(a, b) {
22082         return [a[0] + b[0], a[1] + b[1]];
22083     }
22084
22085     function normalizePoint(point, scale) {
22086         var vector = [0, 0];
22087         var length = Math.sqrt(point[0] * point[0] + point[1] * point[1]);
22088         if (length !== 0) {
22089             vector[0] = point[0] / length;
22090             vector[1] = point[1] / length;
22091         }
22092
22093         vector[0] *= scale;
22094         vector[1] *= scale;
22095
22096         return vector;
22097     }
22098
22099     function filterDotProduct(dotp) {
22100         if (lowerThreshold > Math.abs(dotp) || Math.abs(dotp) > upperThreshold) {
22101             return dotp;
22102         }
22103
22104         return 0;
22105     }
22106
22107     action.disabled = function(graph) {
22108         var way = graph.entity(wayId),
22109             nodes = graph.childNodes(way),
22110             points = _.uniq(nodes).map(function(n) { return projection(n.loc); });
22111
22112         if (squareness(points)) {
22113             return false;
22114         }
22115
22116         return 'not_squarish';
22117     };
22118
22119     return action;
22120 };
22121 // Create a restriction relation for `turn`, which must have the following structure:
22122 //
22123 //     {
22124 //         from: { node: <node ID>, way: <way ID> },
22125 //         via:  { node: <node ID> },
22126 //         to:   { node: <node ID>, way: <way ID> },
22127 //         restriction: <'no_right_turn', 'no_left_turn', etc.>
22128 //     }
22129 //
22130 // This specifies a restriction of type `restriction` when traveling from
22131 // `from.node` in `from.way` toward `to.node` in `to.way` via `via.node`.
22132 // (The action does not check that these entities form a valid intersection.)
22133 //
22134 // If `restriction` is not provided, it is automatically determined by
22135 // iD.geo.inferRestriction.
22136 //
22137 // If necessary, the `from` and `to` ways are split. In these cases, `from.node`
22138 // and `to.node` are used to determine which portion of the split ways become
22139 // members of the restriction.
22140 //
22141 // For testing convenience, accepts an ID to assign to the new relation.
22142 // Normally, this will be undefined and the relation will automatically
22143 // be assigned a new ID.
22144 //
22145 iD.actions.RestrictTurn = function(turn, projection, restrictionId) {
22146     return function(graph) {
22147         var from = graph.entity(turn.from.way),
22148             via  = graph.entity(turn.via.node),
22149             to   = graph.entity(turn.to.way);
22150
22151         function split(toOrFrom) {
22152             var newID = toOrFrom.newID || iD.Way().id;
22153             graph = iD.actions.Split(via.id, [newID])
22154                 .limitWays([toOrFrom.way])(graph);
22155
22156             var a = graph.entity(newID),
22157                 b = graph.entity(toOrFrom.way);
22158
22159             if (a.nodes.indexOf(toOrFrom.node) !== -1) {
22160                 return [a, b];
22161             } else {
22162                 return [b, a];
22163             }
22164         }
22165
22166         if (!from.affix(via.id)) {
22167             if (turn.from.node === turn.to.node) {
22168                 // U-turn
22169                 from = to = split(turn.from)[0];
22170             } else if (turn.from.way === turn.to.way) {
22171                 // Straight-on
22172                 var s = split(turn.from);
22173                 from = s[0];
22174                 to   = s[1];
22175             } else {
22176                 // Other
22177                 from = split(turn.from)[0];
22178             }
22179         }
22180
22181         if (!to.affix(via.id)) {
22182             to = split(turn.to)[0];
22183         }
22184
22185         return graph.replace(iD.Relation({
22186             id: restrictionId,
22187             tags: {
22188                 type: 'restriction',
22189                 restriction: turn.restriction ||
22190                     iD.geo.inferRestriction(
22191                         graph,
22192                         turn.from,
22193                         turn.via,
22194                         turn.to,
22195                         projection)
22196             },
22197             members: [
22198                 {id: from.id, type: 'way',  role: 'from'},
22199                 {id: via.id,  type: 'node', role: 'via'},
22200                 {id: to.id,   type: 'way',  role: 'to'}
22201             ]
22202         }));
22203     };
22204 };
22205 /*
22206   Order the nodes of a way in reverse order and reverse any direction dependent tags
22207   other than `oneway`. (We assume that correcting a backwards oneway is the primary
22208   reason for reversing a way.)
22209
22210   The following transforms are performed:
22211
22212     Keys:
22213           *:right=* ⟺ *:left=*
22214         *:forward=* ⟺ *:backward=*
22215        direction=up ⟺ direction=down
22216          incline=up ⟺ incline=down
22217             *=right ⟺ *=left
22218
22219     Relation members:
22220        role=forward ⟺ role=backward
22221          role=north ⟺ role=south
22222           role=east ⟺ role=west
22223
22224    In addition, numeric-valued `incline` tags are negated.
22225
22226    The JOSM implementation was used as a guide, but transformations that were of unclear benefit
22227    or adjusted tags that don't seem to be used in practice were omitted.
22228
22229    References:
22230       http://wiki.openstreetmap.org/wiki/Forward_%26_backward,_left_%26_right
22231       http://wiki.openstreetmap.org/wiki/Key:direction#Steps
22232       http://wiki.openstreetmap.org/wiki/Key:incline
22233       http://wiki.openstreetmap.org/wiki/Route#Members
22234       http://josm.openstreetmap.de/browser/josm/trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
22235  */
22236 iD.actions.Reverse = function(wayId) {
22237     var replacements = [
22238             [/:right$/, ':left'], [/:left$/, ':right'],
22239             [/:forward$/, ':backward'], [/:backward$/, ':forward']
22240         ],
22241         numeric = /^([+\-]?)(?=[\d.])/,
22242         roleReversals = {
22243             forward: 'backward',
22244             backward: 'forward',
22245             north: 'south',
22246             south: 'north',
22247             east: 'west',
22248             west: 'east'
22249         };
22250
22251     function reverseKey(key) {
22252         for (var i = 0; i < replacements.length; ++i) {
22253             var replacement = replacements[i];
22254             if (replacement[0].test(key)) {
22255                 return key.replace(replacement[0], replacement[1]);
22256             }
22257         }
22258         return key;
22259     }
22260
22261     function reverseValue(key, value) {
22262         if (key === 'incline' && numeric.test(value)) {
22263             return value.replace(numeric, function(_, sign) { return sign === '-' ? '' : '-'; });
22264         } else if (key === 'incline' || key === 'direction') {
22265             return {up: 'down', down: 'up'}[value] || value;
22266         } else {
22267             return {left: 'right', right: 'left'}[value] || value;
22268         }
22269     }
22270
22271     return function(graph) {
22272         var way = graph.entity(wayId),
22273             nodes = way.nodes.slice().reverse(),
22274             tags = {}, key, role;
22275
22276         for (key in way.tags) {
22277             tags[reverseKey(key)] = reverseValue(key, way.tags[key]);
22278         }
22279
22280         graph.parentRelations(way).forEach(function(relation) {
22281             relation.members.forEach(function(member, index) {
22282                 if (member.id === way.id && (role = roleReversals[member.role])) {
22283                     relation = relation.updateMember({role: role}, index);
22284                     graph = graph.replace(relation);
22285                 }
22286             });
22287         });
22288
22289         return graph.replace(way.update({nodes: nodes, tags: tags}));
22290     };
22291 };
22292 iD.actions.Revert = function(id) {
22293
22294     var action = function(graph) {
22295         var entity = graph.hasEntity(id),
22296             base = graph.base().entities[id];
22297
22298         if (entity && !base) {    // entity will be removed..
22299             if (entity.type === 'node') {
22300                 graph.parentWays(entity)
22301                     .forEach(function(parent) {
22302                         parent = parent.removeNode(id);
22303                         graph = graph.replace(parent);
22304
22305                         if (parent.isDegenerate()) {
22306                             graph = iD.actions.DeleteWay(parent.id)(graph);
22307                         }
22308                     });
22309             }
22310
22311             graph.parentRelations(entity)
22312                 .forEach(function(parent) {
22313                     parent = parent.removeMembersWithID(id);
22314                     graph = graph.replace(parent);
22315
22316                     if (parent.isDegenerate()) {
22317                         graph = iD.actions.DeleteRelation(parent.id)(graph);
22318                     }
22319                 });
22320         }
22321
22322         return graph.revert(id);
22323     };
22324
22325     return action;
22326 };
22327 iD.actions.RotateWay = function(wayId, pivot, angle, projection) {
22328     return function(graph) {
22329         return graph.update(function(graph) {
22330             var way = graph.entity(wayId);
22331
22332             _.unique(way.nodes).forEach(function(id) {
22333
22334                 var node = graph.entity(id),
22335                     point = projection(node.loc),
22336                     radial = [0,0];
22337
22338                 radial[0] = point[0] - pivot[0];
22339                 radial[1] = point[1] - pivot[1];
22340
22341                 point = [
22342                     radial[0] * Math.cos(angle) - radial[1] * Math.sin(angle) + pivot[0],
22343                     radial[0] * Math.sin(angle) + radial[1] * Math.cos(angle) + pivot[1]
22344                 ];
22345
22346                 graph = graph.replace(node.move(projection.invert(point)));
22347
22348             });
22349
22350         });
22351     };
22352 };
22353 // Split a way at the given node.
22354 //
22355 // Optionally, split only the given ways, if multiple ways share
22356 // the given node.
22357 //
22358 // This is the inverse of `iD.actions.Join`.
22359 //
22360 // For testing convenience, accepts an ID to assign to the new way.
22361 // Normally, this will be undefined and the way will automatically
22362 // be assigned a new ID.
22363 //
22364 // Reference:
22365 //   https://github.com/systemed/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/SplitWayAction.as
22366 //
22367 iD.actions.Split = function(nodeId, newWayIds) {
22368     var wayIds;
22369
22370     // if the way is closed, we need to search for a partner node
22371     // to split the way at.
22372     //
22373     // The following looks for a node that is both far away from
22374     // the initial node in terms of way segment length and nearby
22375     // in terms of beeline-distance. This assures that areas get
22376     // split on the most "natural" points (independent of the number
22377     // of nodes).
22378     // For example: bone-shaped areas get split across their waist
22379     // line, circles across the diameter.
22380     function splitArea(nodes, idxA, graph) {
22381         var lengths = new Array(nodes.length),
22382             length,
22383             i,
22384             best = 0,
22385             idxB;
22386
22387         function wrap(index) {
22388             return iD.util.wrap(index, nodes.length);
22389         }
22390
22391         function dist(nA, nB) {
22392             return iD.geo.sphericalDistance(graph.entity(nA).loc, graph.entity(nB).loc);
22393         }
22394
22395         // calculate lengths
22396         length = 0;
22397         for (i = wrap(idxA+1); i !== idxA; i = wrap(i+1)) {
22398             length += dist(nodes[i], nodes[wrap(i-1)]);
22399             lengths[i] = length;
22400         }
22401
22402         length = 0;
22403         for (i = wrap(idxA-1); i !== idxA; i = wrap(i-1)) {
22404             length += dist(nodes[i], nodes[wrap(i+1)]);
22405             if (length < lengths[i])
22406                 lengths[i] = length;
22407         }
22408
22409         // determine best opposite node to split
22410         for (i = 0; i < nodes.length; i++) {
22411             var cost = lengths[i] / dist(nodes[idxA], nodes[i]);
22412             if (cost > best) {
22413                 idxB = i;
22414                 best = cost;
22415             }
22416         }
22417
22418         return idxB;
22419     }
22420
22421     function split(graph, wayA, newWayId) {
22422         var wayB = iD.Way({id: newWayId, tags: wayA.tags}),
22423             nodesA,
22424             nodesB,
22425             isArea = wayA.isArea(),
22426             isOuter = iD.geo.isSimpleMultipolygonOuterMember(wayA, graph);
22427
22428         if (wayA.isClosed()) {
22429             var nodes = wayA.nodes.slice(0, -1),
22430                 idxA = _.indexOf(nodes, nodeId),
22431                 idxB = splitArea(nodes, idxA, graph);
22432
22433             if (idxB < idxA) {
22434                 nodesA = nodes.slice(idxA).concat(nodes.slice(0, idxB + 1));
22435                 nodesB = nodes.slice(idxB, idxA + 1);
22436             } else {
22437                 nodesA = nodes.slice(idxA, idxB + 1);
22438                 nodesB = nodes.slice(idxB).concat(nodes.slice(0, idxA + 1));
22439             }
22440         } else {
22441             var idx = _.indexOf(wayA.nodes, nodeId, 1);
22442             nodesA = wayA.nodes.slice(0, idx + 1);
22443             nodesB = wayA.nodes.slice(idx);
22444         }
22445
22446         wayA = wayA.update({nodes: nodesA});
22447         wayB = wayB.update({nodes: nodesB});
22448
22449         graph = graph.replace(wayA);
22450         graph = graph.replace(wayB);
22451
22452         graph.parentRelations(wayA).forEach(function(relation) {
22453             if (relation.isRestriction()) {
22454                 var via = relation.memberByRole('via');
22455                 if (via && wayB.contains(via.id)) {
22456                     relation = relation.updateMember({id: wayB.id}, relation.memberById(wayA.id).index);
22457                     graph = graph.replace(relation);
22458                 }
22459             } else {
22460                 if (relation === isOuter) {
22461                     graph = graph.replace(relation.mergeTags(wayA.tags));
22462                     graph = graph.replace(wayA.update({tags: {}}));
22463                     graph = graph.replace(wayB.update({tags: {}}));
22464                 }
22465
22466                 var member = {
22467                     id: wayB.id,
22468                     type: 'way',
22469                     role: relation.memberById(wayA.id).role
22470                 };
22471
22472                 graph = iD.actions.AddMember(relation.id, member)(graph);
22473             }
22474         });
22475
22476         if (!isOuter && isArea) {
22477             var multipolygon = iD.Relation({
22478                 tags: _.extend({}, wayA.tags, {type: 'multipolygon'}),
22479                 members: [
22480                     {id: wayA.id, role: 'outer', type: 'way'},
22481                     {id: wayB.id, role: 'outer', type: 'way'}
22482                 ]});
22483
22484             graph = graph.replace(multipolygon);
22485             graph = graph.replace(wayA.update({tags: {}}));
22486             graph = graph.replace(wayB.update({tags: {}}));
22487         }
22488
22489         return graph;
22490     }
22491
22492     var action = function(graph) {
22493         var candidates = action.ways(graph);
22494         for (var i = 0; i < candidates.length; i++) {
22495             graph = split(graph, candidates[i], newWayIds && newWayIds[i]);
22496         }
22497         return graph;
22498     };
22499
22500     action.ways = function(graph) {
22501         var node = graph.entity(nodeId),
22502             parents = graph.parentWays(node),
22503             hasLines = _.any(parents, function(parent) { return parent.geometry(graph) === 'line'; });
22504
22505         return parents.filter(function(parent) {
22506             if (wayIds && wayIds.indexOf(parent.id) === -1)
22507                 return false;
22508
22509             if (!wayIds && hasLines && parent.geometry(graph) !== 'line')
22510                 return false;
22511
22512             if (parent.isClosed()) {
22513                 return true;
22514             }
22515
22516             for (var i = 1; i < parent.nodes.length - 1; i++) {
22517                 if (parent.nodes[i] === nodeId) {
22518                     return true;
22519                 }
22520             }
22521
22522             return false;
22523         });
22524     };
22525
22526     action.disabled = function(graph) {
22527         var candidates = action.ways(graph);
22528         if (candidates.length === 0 || (wayIds && wayIds.length !== candidates.length))
22529             return 'not_eligible';
22530     };
22531
22532     action.limitWays = function(_) {
22533         if (!arguments.length) return wayIds;
22534         wayIds = _;
22535         return action;
22536     };
22537
22538     return action;
22539 };
22540 /*
22541  * Based on https://github.com/openstreetmap/potlatch2/net/systemeD/potlatch2/tools/Straighten.as
22542  */
22543
22544 iD.actions.Straighten = function(wayId, projection) {
22545     function positionAlongWay(n, s, e) {
22546         return ((n[0] - s[0]) * (e[0] - s[0]) + (n[1] - s[1]) * (e[1] - s[1]))/
22547                 (Math.pow(e[0] - s[0], 2) + Math.pow(e[1] - s[1], 2));
22548     }
22549
22550     var action = function(graph) {
22551         var way = graph.entity(wayId),
22552             nodes = graph.childNodes(way),
22553             points = nodes.map(function(n) { return projection(n.loc); }),
22554             startPoint = points[0],
22555             endPoint = points[points.length-1],
22556             toDelete = [],
22557             i;
22558
22559         for (i = 1; i < points.length-1; i++) {
22560             var node = nodes[i],
22561                 point = points[i];
22562
22563             if (graph.parentWays(node).length > 1 ||
22564                 graph.parentRelations(node).length ||
22565                 node.hasInterestingTags()) {
22566
22567                 var u = positionAlongWay(point, startPoint, endPoint),
22568                     p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
22569                     p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]);
22570
22571                 graph = graph.replace(graph.entity(node.id)
22572                     .move(projection.invert([p0, p1])));
22573             } else {
22574                 // safe to delete
22575                 if (toDelete.indexOf(node) === -1) {
22576                     toDelete.push(node);
22577                 }
22578             }
22579         }
22580
22581         for (i = 0; i < toDelete.length; i++) {
22582             graph = iD.actions.DeleteNode(toDelete[i].id)(graph);
22583         }
22584
22585         return graph;
22586     };
22587     
22588     action.disabled = function(graph) {
22589         // check way isn't too bendy
22590         var way = graph.entity(wayId),
22591             nodes = graph.childNodes(way),
22592             points = nodes.map(function(n) { return projection(n.loc); }),
22593             startPoint = points[0],
22594             endPoint = points[points.length-1],
22595             threshold = 0.2 * Math.sqrt(Math.pow(startPoint[0] - endPoint[0], 2) + Math.pow(startPoint[1] - endPoint[1], 2)),
22596             i;
22597
22598         for (i = 1; i < points.length-1; i++) {
22599             var point = points[i],
22600                 u = positionAlongWay(point, startPoint, endPoint),
22601                 p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
22602                 p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]),
22603                 dist = Math.sqrt(Math.pow(p0 - point[0], 2) + Math.pow(p1 - point[1], 2));
22604
22605             // to bendy if point is off by 20% of total start/end distance in projected space
22606             if (dist > threshold) {
22607                 return 'too_bendy';
22608             }
22609         }
22610     };
22611
22612     return action;
22613 };
22614 // Remove the effects of `turn.restriction` on `turn`, which must have the
22615 // following structure:
22616 //
22617 //     {
22618 //         from: { node: <node ID>, way: <way ID> },
22619 //         via:  { node: <node ID> },
22620 //         to:   { node: <node ID>, way: <way ID> },
22621 //         restriction: <relation ID>
22622 //     }
22623 //
22624 // In the simple case, `restriction` is a reference to a `no_*` restriction
22625 // on the turn itself. In this case, it is simply deleted.
22626 //
22627 // The more complex case is where `restriction` references an `only_*`
22628 // restriction on a different turn in the same intersection. In that case,
22629 // that restriction is also deleted, but at the same time restrictions on
22630 // the turns other than the first two are created.
22631 //
22632 iD.actions.UnrestrictTurn = function(turn) {
22633     return function(graph) {
22634         return iD.actions.DeleteRelation(turn.restriction)(graph);
22635     };
22636 };
22637 iD.behavior = {};
22638 iD.behavior.AddWay = function(context) {
22639     var event = d3.dispatch('start', 'startFromWay', 'startFromNode'),
22640         draw = iD.behavior.Draw(context);
22641
22642     var addWay = function(surface) {
22643         draw.on('click', event.start)
22644             .on('clickWay', event.startFromWay)
22645             .on('clickNode', event.startFromNode)
22646             .on('cancel', addWay.cancel)
22647             .on('finish', addWay.cancel);
22648
22649         context.map()
22650             .dblclickEnable(false);
22651
22652         surface.call(draw);
22653     };
22654
22655     addWay.off = function(surface) {
22656         surface.call(draw.off);
22657     };
22658
22659     addWay.cancel = function() {
22660         window.setTimeout(function() {
22661             context.map().dblclickEnable(true);
22662         }, 1000);
22663
22664         context.enter(iD.modes.Browse(context));
22665     };
22666
22667     addWay.tail = function(text) {
22668         draw.tail(text);
22669         return addWay;
22670     };
22671
22672     return d3.rebind(addWay, event, 'on');
22673 };
22674 iD.behavior.Copy = function(context) {
22675     var keybinding = d3.keybinding('copy');
22676
22677     function groupEntities(ids, graph) {
22678         var entities = ids.map(function (id) { return graph.entity(id); });
22679         return _.extend({relation: [], way: [], node: []},
22680             _.groupBy(entities, function(entity) { return entity.type; }));
22681     }
22682
22683     function getDescendants(id, graph, descendants) {
22684         var entity = graph.entity(id),
22685             i, children;
22686
22687         descendants = descendants || {};
22688
22689         if (entity.type === 'relation') {
22690             children = _.pluck(entity.members, 'id');
22691         } else if (entity.type === 'way') {
22692             children = entity.nodes;
22693         } else {
22694             children = [];
22695         }
22696
22697         for (i = 0; i < children.length; i++) {
22698             if (!descendants[children[i]]) {
22699                 descendants[children[i]] = true;
22700                 descendants = getDescendants(children[i], graph, descendants);
22701             }
22702         }
22703
22704         return descendants;
22705     }
22706
22707     function doCopy() {
22708         d3.event.preventDefault();
22709
22710         var graph = context.graph(),
22711             selected = groupEntities(context.selectedIDs(), graph),
22712             canCopy = [],
22713             skip = {},
22714             i, entity;
22715
22716         for (i = 0; i < selected.relation.length; i++) {
22717             entity = selected.relation[i];
22718             if (!skip[entity.id] && entity.isComplete(graph)) {
22719                 canCopy.push(entity.id);
22720                 skip = getDescendants(entity.id, graph, skip);
22721             }
22722         }
22723         for (i = 0; i < selected.way.length; i++) {
22724             entity = selected.way[i];
22725             if (!skip[entity.id]) {
22726                 canCopy.push(entity.id);
22727                 skip = getDescendants(entity.id, graph, skip);
22728             }
22729         }
22730         for (i = 0; i < selected.node.length; i++) {
22731             entity = selected.node[i];
22732             if (!skip[entity.id]) {
22733                 canCopy.push(entity.id);
22734             }
22735         }
22736
22737         context.copyIDs(canCopy);
22738     }
22739
22740     function copy() {
22741         keybinding.on(iD.ui.cmd('⌘C'), doCopy);
22742         d3.select(document).call(keybinding);
22743         return copy;
22744     }
22745
22746     copy.off = function() {
22747         d3.select(document).call(keybinding.off);
22748     };
22749
22750     return copy;
22751 };
22752 /*
22753     `iD.behavior.drag` is like `d3.behavior.drag`, with the following differences:
22754
22755     * The `origin` function is expected to return an [x, y] tuple rather than an
22756       {x, y} object.
22757     * The events are `start`, `move`, and `end`.
22758       (https://github.com/mbostock/d3/issues/563)
22759     * The `start` event is not dispatched until the first cursor movement occurs.
22760       (https://github.com/mbostock/d3/pull/368)
22761     * The `move` event has a `point` and `delta` [x, y] tuple properties rather
22762       than `x`, `y`, `dx`, and `dy` properties.
22763     * The `end` event is not dispatched if no movement occurs.
22764     * An `off` function is available that unbinds the drag's internal event handlers.
22765     * Delegation is supported via the `delegate` function.
22766
22767  */
22768 iD.behavior.drag = function() {
22769     function d3_eventCancel() {
22770       d3.event.stopPropagation();
22771       d3.event.preventDefault();
22772     }
22773
22774     var event = d3.dispatch('start', 'move', 'end'),
22775         origin = null,
22776         selector = '',
22777         filter = null,
22778         event_, target, surface;
22779
22780     event.of = function(thiz, argumentz) {
22781       return function(e1) {
22782         var e0 = e1.sourceEvent = d3.event;
22783         e1.target = drag;
22784         d3.event = e1;
22785         try {
22786           event[e1.type].apply(thiz, argumentz);
22787         } finally {
22788           d3.event = e0;
22789         }
22790       };
22791     };
22792
22793     var d3_event_userSelectProperty = iD.util.prefixCSSProperty('UserSelect'),
22794         d3_event_userSelectSuppress = d3_event_userSelectProperty ?
22795             function () {
22796                 var selection = d3.selection(),
22797                     select = selection.style(d3_event_userSelectProperty);
22798                 selection.style(d3_event_userSelectProperty, 'none');
22799                 return function () {
22800                     selection.style(d3_event_userSelectProperty, select);
22801                 };
22802             } :
22803             function (type) {
22804                 var w = d3.select(window).on('selectstart.' + type, d3_eventCancel);
22805                 return function () {
22806                     w.on('selectstart.' + type, null);
22807                 };
22808             };
22809
22810     function mousedown() {
22811         target = this;
22812         event_ = event.of(target, arguments);
22813         var eventTarget = d3.event.target,
22814             touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null,
22815             offset,
22816             origin_ = point(),
22817             started = false,
22818             selectEnable = d3_event_userSelectSuppress(touchId !== null ? 'drag-' + touchId : 'drag');
22819
22820         var w = d3.select(window)
22821             .on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', dragmove)
22822             .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', dragend, true);
22823
22824         if (origin) {
22825             offset = origin.apply(target, arguments);
22826             offset = [offset[0] - origin_[0], offset[1] - origin_[1]];
22827         } else {
22828             offset = [0, 0];
22829         }
22830
22831         if (touchId === null) d3.event.stopPropagation();
22832
22833         function point() {
22834             var p = target.parentNode || surface;
22835             return touchId !== null ? d3.touches(p).filter(function(p) {
22836                 return p.identifier === touchId;
22837             })[0] : d3.mouse(p);
22838         }
22839
22840         function dragmove() {
22841
22842             var p = point(),
22843                 dx = p[0] - origin_[0],
22844                 dy = p[1] - origin_[1];
22845             
22846             if (dx === 0 && dy === 0)
22847                 return;
22848
22849             if (!started) {
22850                 started = true;
22851                 event_({
22852                     type: 'start'
22853                 });
22854             }
22855
22856             origin_ = p;
22857             d3_eventCancel();
22858
22859             event_({
22860                 type: 'move',
22861                 point: [p[0] + offset[0],  p[1] + offset[1]],
22862                 delta: [dx, dy]
22863             });
22864         }
22865
22866         function dragend() {
22867             if (started) {
22868                 event_({
22869                     type: 'end'
22870                 });
22871
22872                 d3_eventCancel();
22873                 if (d3.event.target === eventTarget) w.on('click.drag', click, true);
22874             }
22875
22876             w.on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', null)
22877                 .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', null);
22878             selectEnable();
22879         }
22880
22881         function click() {
22882             d3_eventCancel();
22883             w.on('click.drag', null);
22884         }
22885     }
22886
22887     function drag(selection) {
22888         var matchesSelector = iD.util.prefixDOMProperty('matchesSelector'),
22889             delegate = mousedown;
22890
22891         if (selector) {
22892             delegate = function() {
22893                 var root = this,
22894                     target = d3.event.target;
22895                 for (; target && target !== root; target = target.parentNode) {
22896                     if (target[matchesSelector](selector) &&
22897                             (!filter || filter(target.__data__))) {
22898                         return mousedown.call(target, target.__data__);
22899                     }
22900                 }
22901             };
22902         }
22903
22904         selection.on('mousedown.drag' + selector, delegate)
22905             .on('touchstart.drag' + selector, delegate);
22906     }
22907
22908     drag.off = function(selection) {
22909         selection.on('mousedown.drag' + selector, null)
22910             .on('touchstart.drag' + selector, null);
22911     };
22912
22913     drag.delegate = function(_) {
22914         if (!arguments.length) return selector;
22915         selector = _;
22916         return drag;
22917     };
22918
22919     drag.filter = function(_) {
22920         if (!arguments.length) return origin;
22921         filter = _;
22922         return drag;
22923     };
22924
22925     drag.origin = function (_) {
22926         if (!arguments.length) return origin;
22927         origin = _;
22928         return drag;
22929     };
22930
22931     drag.cancel = function() {
22932         d3.select(window)
22933             .on('mousemove.drag', null)
22934             .on('mouseup.drag', null);
22935         return drag;
22936     };
22937
22938     drag.target = function() {
22939         if (!arguments.length) return target;
22940         target = arguments[0];
22941         event_ = event.of(target, Array.prototype.slice.call(arguments, 1));
22942         return drag;
22943     };
22944
22945     drag.surface = function() {
22946         if (!arguments.length) return surface;
22947         surface = arguments[0];
22948         return drag;
22949     };
22950
22951     return d3.rebind(drag, event, 'on');
22952 };
22953 iD.behavior.Draw = function(context) {
22954     var event = d3.dispatch('move', 'click', 'clickWay',
22955         'clickNode', 'undo', 'cancel', 'finish'),
22956         keybinding = d3.keybinding('draw'),
22957         hover = iD.behavior.Hover(context)
22958             .altDisables(true)
22959             .on('hover', context.ui().sidebar.hover),
22960         tail = iD.behavior.Tail(),
22961         edit = iD.behavior.Edit(context),
22962         closeTolerance = 4,
22963         tolerance = 12;
22964
22965     function datum() {
22966         if (d3.event.altKey) return {};
22967         else return d3.event.target.__data__ || {};
22968     }
22969
22970     function mousedown() {
22971
22972         function point() {
22973             var p = element.node().parentNode;
22974             return touchId !== null ? d3.touches(p).filter(function(p) {
22975                 return p.identifier === touchId;
22976             })[0] : d3.mouse(p);
22977         }
22978
22979         var element = d3.select(this),
22980             touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null,
22981             time = +new Date(),
22982             pos = point();
22983
22984         element.on('mousemove.draw', null);
22985
22986         d3.select(window).on('mouseup.draw', function() {
22987             element.on('mousemove.draw', mousemove);
22988             if (iD.geo.euclideanDistance(pos, point()) < closeTolerance ||
22989                 (iD.geo.euclideanDistance(pos, point()) < tolerance &&
22990                 (+new Date() - time) < 500)) {
22991
22992                 // Prevent a quick second click
22993                 d3.select(window).on('click.draw-block', function() {
22994                     d3.event.stopPropagation();
22995                 }, true);
22996
22997                 context.map().dblclickEnable(false);
22998
22999                 window.setTimeout(function() {
23000                     context.map().dblclickEnable(true);
23001                     d3.select(window).on('click.draw-block', null);
23002                 }, 500);
23003
23004                 click();
23005             }
23006         });
23007     }
23008
23009     function mousemove() {
23010         event.move(datum());
23011     }
23012
23013     function click() {
23014         var d = datum();
23015         if (d.type === 'way') {
23016             var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection),
23017                 edge = [d.nodes[choice.index - 1], d.nodes[choice.index]];
23018             event.clickWay(choice.loc, edge);
23019
23020         } else if (d.type === 'node') {
23021             event.clickNode(d);
23022
23023         } else {
23024             event.click(context.map().mouseCoordinates());
23025         }
23026     }
23027
23028     function backspace() {
23029         d3.event.preventDefault();
23030         event.undo();
23031     }
23032
23033     function del() {
23034         d3.event.preventDefault();
23035         event.cancel();
23036     }
23037
23038     function ret() {
23039         d3.event.preventDefault();
23040         event.finish();
23041     }
23042
23043     function draw(selection) {
23044         context.install(hover);
23045         context.install(edit);
23046
23047         if (!context.inIntro() && !iD.behavior.Draw.usedTails[tail.text()]) {
23048             context.install(tail);
23049         }
23050
23051         keybinding
23052             .on('⌫', backspace)
23053             .on('⌦', del)
23054             .on('⎋', ret)
23055             .on('↩', ret);
23056
23057         selection
23058             .on('mousedown.draw', mousedown)
23059             .on('mousemove.draw', mousemove);
23060
23061         d3.select(document)
23062             .call(keybinding);
23063
23064         return draw;
23065     }
23066
23067     draw.off = function(selection) {
23068         context.uninstall(hover);
23069         context.uninstall(edit);
23070
23071         if (!context.inIntro() && !iD.behavior.Draw.usedTails[tail.text()]) {
23072             context.uninstall(tail);
23073             iD.behavior.Draw.usedTails[tail.text()] = true;
23074         }
23075
23076         selection
23077             .on('mousedown.draw', null)
23078             .on('mousemove.draw', null);
23079
23080         d3.select(window)
23081             .on('mouseup.draw', null);
23082
23083         d3.select(document)
23084             .call(keybinding.off);
23085     };
23086
23087     draw.tail = function(_) {
23088         tail.text(_);
23089         return draw;
23090     };
23091
23092     return d3.rebind(draw, event, 'on');
23093 };
23094
23095 iD.behavior.Draw.usedTails = {};
23096 iD.behavior.DrawWay = function(context, wayId, index, mode, baseGraph) {
23097     var way = context.entity(wayId),
23098         isArea = context.geometry(wayId) === 'area',
23099         finished = false,
23100         annotation = t((way.isDegenerate() ?
23101             'operations.start.annotation.' :
23102             'operations.continue.annotation.') + context.geometry(wayId)),
23103         draw = iD.behavior.Draw(context);
23104
23105     var startIndex = typeof index === 'undefined' ? way.nodes.length - 1 : 0,
23106         start = iD.Node({loc: context.graph().entity(way.nodes[startIndex]).loc}),
23107         end = iD.Node({loc: context.map().mouseCoordinates()}),
23108         segment = iD.Way({
23109             nodes: typeof index === 'undefined' ? [start.id, end.id] : [end.id, start.id],
23110             tags: _.clone(way.tags)
23111         });
23112
23113     var f = context[way.isDegenerate() ? 'replace' : 'perform'];
23114     if (isArea) {
23115         f(iD.actions.AddEntity(end),
23116             iD.actions.AddVertex(wayId, end.id, index));
23117     } else {
23118         f(iD.actions.AddEntity(start),
23119             iD.actions.AddEntity(end),
23120             iD.actions.AddEntity(segment));
23121     }
23122
23123     function move(datum) {
23124         var loc;
23125
23126         if (datum.type === 'node' && datum.id !== end.id) {
23127             loc = datum.loc;
23128         } else if (datum.type === 'way' && datum.id !== segment.id) {
23129             loc = iD.geo.chooseEdge(context.childNodes(datum), context.mouse(), context.projection).loc;
23130         } else {
23131             loc = context.map().mouseCoordinates();
23132         }
23133
23134         context.replace(iD.actions.MoveNode(end.id, loc));
23135     }
23136
23137     function undone() {
23138         finished = true;
23139         context.enter(iD.modes.Browse(context));
23140     }
23141
23142     function setActiveElements() {
23143         var active = isArea ? [wayId, end.id] : [segment.id, start.id, end.id];
23144         context.surface().selectAll(iD.util.entitySelector(active))
23145             .classed('active', true);
23146     }
23147
23148     var drawWay = function(surface) {
23149         draw.on('move', move)
23150             .on('click', drawWay.add)
23151             .on('clickWay', drawWay.addWay)
23152             .on('clickNode', drawWay.addNode)
23153             .on('undo', context.undo)
23154             .on('cancel', drawWay.cancel)
23155             .on('finish', drawWay.finish);
23156
23157         context.map()
23158             .dblclickEnable(false)
23159             .on('drawn.draw', setActiveElements);
23160
23161         setActiveElements();
23162
23163         surface.call(draw);
23164
23165         context.history()
23166             .on('undone.draw', undone);
23167     };
23168
23169     drawWay.off = function(surface) {
23170         if (!finished)
23171             context.pop();
23172
23173         context.map()
23174             .on('drawn.draw', null);
23175
23176         surface.call(draw.off)
23177             .selectAll('.active')
23178             .classed('active', false);
23179
23180         context.history()
23181             .on('undone.draw', null);
23182     };
23183
23184     function ReplaceTemporaryNode(newNode) {
23185         return function(graph) {
23186             if (isArea) {
23187                 return graph
23188                     .replace(way.addNode(newNode.id, index))
23189                     .remove(end);
23190
23191             } else {
23192                 return graph
23193                     .replace(graph.entity(wayId).addNode(newNode.id, index))
23194                     .remove(end)
23195                     .remove(segment)
23196                     .remove(start);
23197             }
23198         };
23199     }
23200
23201     // Accept the current position of the temporary node and continue drawing.
23202     drawWay.add = function(loc) {
23203
23204         // prevent duplicate nodes
23205         var last = context.hasEntity(way.nodes[way.nodes.length - (isArea ? 2 : 1)]);
23206         if (last && last.loc[0] === loc[0] && last.loc[1] === loc[1]) return;
23207
23208         var newNode = iD.Node({loc: loc});
23209
23210         context.replace(
23211             iD.actions.AddEntity(newNode),
23212             ReplaceTemporaryNode(newNode),
23213             annotation);
23214
23215         finished = true;
23216         context.enter(mode);
23217     };
23218
23219     // Connect the way to an existing way.
23220     drawWay.addWay = function(loc, edge) {
23221         var previousEdge = startIndex ?
23222             [way.nodes[startIndex], way.nodes[startIndex - 1]] :
23223             [way.nodes[0], way.nodes[1]];
23224
23225         // Avoid creating duplicate segments
23226         if (!isArea && iD.geo.edgeEqual(edge, previousEdge))
23227             return;
23228
23229         var newNode = iD.Node({ loc: loc });
23230
23231         context.perform(
23232             iD.actions.AddMidpoint({ loc: loc, edge: edge}, newNode),
23233             ReplaceTemporaryNode(newNode),
23234             annotation);
23235
23236         finished = true;
23237         context.enter(mode);
23238     };
23239
23240     // Connect the way to an existing node and continue drawing.
23241     drawWay.addNode = function(node) {
23242
23243         // Avoid creating duplicate segments
23244         if (way.areAdjacent(node.id, way.nodes[way.nodes.length - 1])) return;
23245
23246         context.perform(
23247             ReplaceTemporaryNode(node),
23248             annotation);
23249
23250         finished = true;
23251         context.enter(mode);
23252     };
23253
23254     // Finish the draw operation, removing the temporary node. If the way has enough
23255     // nodes to be valid, it's selected. Otherwise, return to browse mode.
23256     drawWay.finish = function() {
23257         context.pop();
23258         finished = true;
23259
23260         window.setTimeout(function() {
23261             context.map().dblclickEnable(true);
23262         }, 1000);
23263
23264         if (context.hasEntity(wayId)) {
23265             context.enter(
23266                 iD.modes.Select(context, [wayId])
23267                     .suppressMenu(true)
23268                     .newFeature(true));
23269         } else {
23270             context.enter(iD.modes.Browse(context));
23271         }
23272     };
23273
23274     // Cancel the draw operation and return to browse, deleting everything drawn.
23275     drawWay.cancel = function() {
23276         context.perform(
23277             d3.functor(baseGraph),
23278             t('operations.cancel_draw.annotation'));
23279
23280         window.setTimeout(function() {
23281             context.map().dblclickEnable(true);
23282         }, 1000);
23283
23284         finished = true;
23285         context.enter(iD.modes.Browse(context));
23286     };
23287
23288     drawWay.tail = function(text) {
23289         draw.tail(text);
23290         return drawWay;
23291     };
23292
23293     return drawWay;
23294 };
23295 iD.behavior.Edit = function(context) {
23296     function edit() {
23297         context.map()
23298             .minzoom(context.minEditableZoom());
23299     }
23300
23301     edit.off = function() {
23302         context.map()
23303             .minzoom(0);
23304     };
23305
23306     return edit;
23307 };
23308 iD.behavior.Hash = function(context) {
23309     var s0 = null, // cached location.hash
23310         lat = 90 - 1e-8; // allowable latitude range
23311
23312     var parser = function(map, s) {
23313         var q = iD.util.stringQs(s);
23314         var args = (q.map || '').split('/').map(Number);
23315         if (args.length < 3 || args.some(isNaN)) {
23316             return true; // replace bogus hash
23317         } else if (s !== formatter(map).slice(1)) {
23318             map.centerZoom([args[1],
23319                 Math.min(lat, Math.max(-lat, args[2]))], args[0]);
23320         }
23321     };
23322
23323     var formatter = function(map) {
23324         var mode = context.mode(),
23325             center = map.center(),
23326             zoom = map.zoom(),
23327             precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)),
23328             q = _.omit(iD.util.stringQs(location.hash.substring(1)), 'comment'),
23329             newParams = {};
23330
23331         if (mode && mode.id === 'browse') {
23332             delete q.id;
23333         } else {
23334             var selected = context.selectedIDs().filter(function(id) {
23335                 return !context.entity(id).isNew();
23336             });
23337             if (selected.length) {
23338                 newParams.id = selected.join(',');
23339             }
23340         }
23341
23342         newParams.map = zoom.toFixed(2) +
23343                 '/' + center[0].toFixed(precision) +
23344                 '/' + center[1].toFixed(precision);
23345
23346         return '#' + iD.util.qsString(_.assign(q, newParams), true);
23347     };
23348
23349     function update() {
23350         var s1 = formatter(context.map());
23351         if (s0 !== s1) location.replace(s0 = s1); // don't recenter the map!
23352     }
23353
23354     var throttledUpdate = _.throttle(update, 500);
23355
23356     function hashchange() {
23357         if (location.hash === s0) return; // ignore spurious hashchange events
23358         if (parser(context.map(), (s0 = location.hash).substring(1))) {
23359             update(); // replace bogus hash
23360         }
23361     }
23362
23363     function hash() {
23364         context.map()
23365             .on('move.hash', throttledUpdate);
23366
23367         context
23368             .on('enter.hash', throttledUpdate);
23369
23370         d3.select(window)
23371             .on('hashchange.hash', hashchange);
23372
23373         if (location.hash) {
23374             var q = iD.util.stringQs(location.hash.substring(1));
23375             if (q.id) context.zoomToEntity(q.id.split(',')[0], !q.map);
23376             if (q.comment) context.storage('comment', q.comment);
23377             hashchange();
23378             if (q.map) hash.hadHash = true;
23379         }
23380     }
23381
23382     hash.off = function() {
23383         context.map()
23384             .on('move.hash', null);
23385
23386         context
23387             .on('enter.hash', null);
23388
23389         d3.select(window)
23390             .on('hashchange.hash', null);
23391
23392         location.hash = '';
23393     };
23394
23395     return hash;
23396 };
23397 /*
23398    The hover behavior adds the `.hover` class on mouseover to all elements to which
23399    the identical datum is bound, and removes it on mouseout.
23400
23401    The :hover pseudo-class is insufficient for iD's purposes because a datum's visual
23402    representation may consist of several elements scattered throughout the DOM hierarchy.
23403    Only one of these elements can have the :hover pseudo-class, but all of them will
23404    have the .hover class.
23405  */
23406 iD.behavior.Hover = function() {
23407     var dispatch = d3.dispatch('hover'),
23408         selection,
23409         altDisables,
23410         target;
23411
23412     function keydown() {
23413         if (altDisables && d3.event.keyCode === d3.keybinding.modifierCodes.alt) {
23414             dispatch.hover(null);
23415             selection.selectAll('.hover')
23416                 .classed('hover-suppressed', true)
23417                 .classed('hover', false);
23418         }
23419     }
23420
23421     function keyup() {
23422         if (altDisables && d3.event.keyCode === d3.keybinding.modifierCodes.alt) {
23423             dispatch.hover(target ? target.id : null);
23424             selection.selectAll('.hover-suppressed')
23425                 .classed('hover-suppressed', false)
23426                 .classed('hover', true);
23427         }
23428     }
23429
23430     var hover = function(__) {
23431         selection = __;
23432
23433         function enter(d) {
23434             if (d === target) return;
23435
23436             target = d;
23437
23438             selection.selectAll('.hover')
23439                 .classed('hover', false);
23440             selection.selectAll('.hover-suppressed')
23441                 .classed('hover-suppressed', false);
23442
23443             if (target instanceof iD.Entity) {
23444                 var selector = '.' + target.id;
23445
23446                 if (target.type === 'relation') {
23447                     target.members.forEach(function(member) {
23448                         selector += ', .' + member.id;
23449                     });
23450                 }
23451
23452                 var suppressed = altDisables && d3.event && d3.event.altKey;
23453
23454                 selection.selectAll(selector)
23455                     .classed(suppressed ? 'hover-suppressed' : 'hover', true);
23456
23457                 dispatch.hover(target.id);
23458             } else {
23459                 dispatch.hover(null);
23460             }
23461         }
23462
23463         var down;
23464
23465         function mouseover() {
23466             if (down) return;
23467             var target = d3.event.target;
23468             enter(target ? target.__data__ : null);
23469         }
23470
23471         function mouseout() {
23472             if (down) return;
23473             var target = d3.event.relatedTarget;
23474             enter(target ? target.__data__ : null);
23475         }
23476
23477         function mousedown() {
23478             down = true;
23479             d3.select(window)
23480                 .on('mouseup.hover', mouseup);
23481         }
23482
23483         function mouseup() {
23484             down = false;
23485         }
23486
23487         selection
23488             .on('mouseover.hover', mouseover)
23489             .on('mouseout.hover', mouseout)
23490             .on('mousedown.hover', mousedown)
23491             .on('mouseup.hover', mouseup);
23492
23493         d3.select(window)
23494             .on('keydown.hover', keydown)
23495             .on('keyup.hover', keyup);
23496     };
23497
23498     hover.off = function(selection) {
23499         selection.selectAll('.hover')
23500             .classed('hover', false);
23501         selection.selectAll('.hover-suppressed')
23502             .classed('hover-suppressed', false);
23503
23504         selection
23505             .on('mouseover.hover', null)
23506             .on('mouseout.hover', null)
23507             .on('mousedown.hover', null)
23508             .on('mouseup.hover', null);
23509
23510         d3.select(window)
23511             .on('keydown.hover', null)
23512             .on('keyup.hover', null)
23513             .on('mouseup.hover', null);
23514     };
23515
23516     hover.altDisables = function(_) {
23517         if (!arguments.length) return altDisables;
23518         altDisables = _;
23519         return hover;
23520     };
23521
23522     return d3.rebind(hover, dispatch, 'on');
23523 };
23524 iD.behavior.Lasso = function(context) {
23525
23526     var behavior = function(selection) {
23527
23528         var mouse = null,
23529             lasso;
23530
23531         function mousedown() {
23532             if (d3.event.shiftKey === true) {
23533
23534                 mouse = context.mouse();
23535                 lasso = null;
23536
23537                 selection
23538                     .on('mousemove.lasso', mousemove)
23539                     .on('mouseup.lasso', mouseup);
23540
23541                 d3.event.stopPropagation();
23542             }
23543         }
23544
23545         function mousemove() {
23546             if (!lasso) {
23547                 lasso = iD.ui.Lasso(context).a(mouse);
23548                 context.surface().call(lasso);
23549             }
23550
23551             lasso.b(context.mouse());
23552         }
23553
23554         function normalize(a, b) {
23555             return [
23556                 [Math.min(a[0], b[0]), Math.min(a[1], b[1])],
23557                 [Math.max(a[0], b[0]), Math.max(a[1], b[1])]];
23558         }
23559
23560         function mouseup() {
23561
23562             selection
23563                 .on('mousemove.lasso', null)
23564                 .on('mouseup.lasso', null);
23565
23566             if (!lasso) return;
23567
23568             var extent = iD.geo.Extent(
23569                 normalize(context.projection.invert(lasso.a()),
23570                 context.projection.invert(lasso.b())));
23571
23572             lasso.close();
23573
23574             var selected = context.intersects(extent).filter(function (entity) {
23575                 return entity.type === 'node';
23576             });
23577
23578             if (selected.length) {
23579                 context.enter(iD.modes.Select(context, _.pluck(selected, 'id')));
23580             }
23581         }
23582
23583         selection
23584             .on('mousedown.lasso', mousedown);
23585     };
23586
23587     behavior.off = function(selection) {
23588         selection.on('mousedown.lasso', null);
23589     };
23590
23591     return behavior;
23592 };
23593 iD.behavior.Paste = function(context) {
23594     var keybinding = d3.keybinding('paste');
23595
23596     function omitTag(v, k) {
23597         return (
23598             k === 'phone' ||
23599             k === 'fax' ||
23600             k === 'email' ||
23601             k === 'website' ||
23602             k === 'url' ||
23603             k === 'note' ||
23604             k === 'description' ||
23605             k.indexOf('name') !== -1 ||
23606             k.indexOf('wiki') === 0 ||
23607             k.indexOf('addr:') === 0 ||
23608             k.indexOf('contact:') === 0
23609         );
23610     }
23611
23612     function doPaste() {
23613         d3.event.preventDefault();
23614
23615         var mouse = context.mouse(),
23616             projection = context.projection,
23617             viewport = iD.geo.Extent(projection.clipExtent()).polygon();
23618
23619         if (!iD.geo.pointInPolygon(mouse, viewport)) return;
23620
23621         var extent = iD.geo.Extent(),
23622             oldIDs = context.copyIDs(),
23623             oldGraph = context.copyGraph(),
23624             newIDs = [],
23625             i, j;
23626
23627         if (!oldIDs.length) return;
23628
23629         for (i = 0; i < oldIDs.length; i++) {
23630             var oldEntity = oldGraph.entity(oldIDs[i]),
23631                 action = iD.actions.CopyEntity(oldEntity.id, oldGraph, true),
23632                 newEntities;
23633
23634             extent._extend(oldEntity.extent(oldGraph));
23635             context.perform(action);
23636
23637             // First element in `newEntities` contains the copied Entity,
23638             // Subsequent array elements contain any descendants..
23639             newEntities = action.newEntities();
23640             newIDs.push(newEntities[0].id);
23641
23642             for (j = 0; j < newEntities.length; j++) {
23643                 var newEntity = newEntities[j],
23644                     tags = _.omit(newEntity.tags, omitTag);
23645
23646                 context.perform(iD.actions.ChangeTags(newEntity.id, tags));
23647             }
23648         }
23649
23650         // Put pasted objects where mouse pointer is..
23651         var center = projection(extent.center()),
23652             delta = [ mouse[0] - center[0], mouse[1] - center[1] ];
23653
23654         context.perform(iD.actions.Move(newIDs, delta, projection));
23655         context.enter(iD.modes.Move(context, newIDs));
23656     }
23657
23658     function paste() {
23659         keybinding.on(iD.ui.cmd('⌘V'), doPaste);
23660         d3.select(document).call(keybinding);
23661         return paste;
23662     }
23663
23664     paste.off = function() {
23665         d3.select(document).call(keybinding.off);
23666     };
23667
23668     return paste;
23669 };
23670 iD.behavior.Select = function(context) {
23671     function keydown() {
23672         if (d3.event && d3.event.shiftKey) {
23673             context.surface()
23674                 .classed('behavior-multiselect', true);
23675         }
23676     }
23677
23678     function keyup() {
23679         if (!d3.event || !d3.event.shiftKey) {
23680             context.surface()
23681                 .classed('behavior-multiselect', false);
23682         }
23683     }
23684
23685     function click() {
23686         var datum = d3.event.target.__data__,
23687             lasso = d3.select('#surface .lasso').node(),
23688             mode = context.mode();
23689
23690         if (!(datum instanceof iD.Entity)) {
23691             if (!d3.event.shiftKey && !lasso && mode.id !== 'browse')
23692                 context.enter(iD.modes.Browse(context));
23693
23694         } else if (!d3.event.shiftKey && !lasso) {
23695             // Avoid re-entering Select mode with same entity.
23696             if (context.selectedIDs().length !== 1 || context.selectedIDs()[0] !== datum.id) {
23697                 context.enter(iD.modes.Select(context, [datum.id]));
23698             } else {
23699                 mode.suppressMenu(false).reselect();
23700             }
23701         } else if (context.selectedIDs().indexOf(datum.id) >= 0) {
23702             var selectedIDs = _.without(context.selectedIDs(), datum.id);
23703             context.enter(selectedIDs.length ?
23704                 iD.modes.Select(context, selectedIDs) :
23705                 iD.modes.Browse(context));
23706
23707         } else {
23708             context.enter(iD.modes.Select(context, context.selectedIDs().concat([datum.id])));
23709         }
23710     }
23711
23712     var behavior = function(selection) {
23713         d3.select(window)
23714             .on('keydown.select', keydown)
23715             .on('keyup.select', keyup);
23716
23717         selection.on('click.select', click);
23718
23719         keydown();
23720     };
23721
23722     behavior.off = function(selection) {
23723         d3.select(window)
23724             .on('keydown.select', null)
23725             .on('keyup.select', null);
23726
23727         selection.on('click.select', null);
23728
23729         keyup();
23730     };
23731
23732     return behavior;
23733 };
23734 iD.behavior.Tail = function() {
23735     var text,
23736         container,
23737         xmargin = 25,
23738         tooltipSize = [0, 0],
23739         selectionSize = [0, 0];
23740
23741     function tail(selection) {
23742         if (!text) return;
23743
23744         d3.select(window)
23745             .on('resize.tail', function() { selectionSize = selection.dimensions(); });
23746
23747         function show() {
23748             container.style('display', 'block');
23749             tooltipSize = container.dimensions();
23750         }
23751
23752         function mousemove() {
23753             if (container.style('display') === 'none') show();
23754             var xoffset = ((d3.event.clientX + tooltipSize[0] + xmargin) > selectionSize[0]) ?
23755                 -tooltipSize[0] - xmargin : xmargin;
23756             container.classed('left', xoffset > 0);
23757             iD.util.setTransform(container, d3.event.clientX + xoffset, d3.event.clientY);
23758         }
23759
23760         function mouseleave() {
23761             if (d3.event.relatedTarget !== container.node()) {
23762                 container.style('display', 'none');
23763             }
23764         }
23765
23766         function mouseenter() {
23767             if (d3.event.relatedTarget !== container.node()) {
23768                 show();
23769             }
23770         }
23771
23772         container = d3.select(document.body)
23773             .append('div')
23774             .style('display', 'none')
23775             .attr('class', 'tail tooltip-inner');
23776
23777         container.append('div')
23778             .text(text);
23779
23780         selection
23781             .on('mousemove.tail', mousemove)
23782             .on('mouseenter.tail', mouseenter)
23783             .on('mouseleave.tail', mouseleave);
23784
23785         container
23786             .on('mousemove.tail', mousemove);
23787
23788         tooltipSize = container.dimensions();
23789         selectionSize = selection.dimensions();
23790     }
23791
23792     tail.off = function(selection) {
23793         if (!text) return;
23794
23795         container
23796             .on('mousemove.tail', null)
23797             .remove();
23798
23799         selection
23800             .on('mousemove.tail', null)
23801             .on('mouseenter.tail', null)
23802             .on('mouseleave.tail', null);
23803
23804         d3.select(window)
23805             .on('resize.tail', null);
23806     };
23807
23808     tail.text = function(_) {
23809         if (!arguments.length) return text;
23810         text = _;
23811         return tail;
23812     };
23813
23814     return tail;
23815 };
23816 iD.modes = {};
23817 iD.modes.AddArea = function(context) {
23818     var mode = {
23819         id: 'add-area',
23820         button: 'area',
23821         title: t('modes.add_area.title'),
23822         description: t('modes.add_area.description'),
23823         key: '3'
23824     };
23825
23826     var behavior = iD.behavior.AddWay(context)
23827             .tail(t('modes.add_area.tail'))
23828             .on('start', start)
23829             .on('startFromWay', startFromWay)
23830             .on('startFromNode', startFromNode),
23831         defaultTags = {area: 'yes'};
23832
23833     function start(loc) {
23834         var graph = context.graph(),
23835             node = iD.Node({loc: loc}),
23836             way = iD.Way({tags: defaultTags});
23837
23838         context.perform(
23839             iD.actions.AddEntity(node),
23840             iD.actions.AddEntity(way),
23841             iD.actions.AddVertex(way.id, node.id),
23842             iD.actions.AddVertex(way.id, node.id));
23843
23844         context.enter(iD.modes.DrawArea(context, way.id, graph));
23845     }
23846
23847     function startFromWay(loc, edge) {
23848         var graph = context.graph(),
23849             node = iD.Node({loc: loc}),
23850             way = iD.Way({tags: defaultTags});
23851
23852         context.perform(
23853             iD.actions.AddEntity(node),
23854             iD.actions.AddEntity(way),
23855             iD.actions.AddVertex(way.id, node.id),
23856             iD.actions.AddVertex(way.id, node.id),
23857             iD.actions.AddMidpoint({ loc: loc, edge: edge }, node));
23858
23859         context.enter(iD.modes.DrawArea(context, way.id, graph));
23860     }
23861
23862     function startFromNode(node) {
23863         var graph = context.graph(),
23864             way = iD.Way({tags: defaultTags});
23865
23866         context.perform(
23867             iD.actions.AddEntity(way),
23868             iD.actions.AddVertex(way.id, node.id),
23869             iD.actions.AddVertex(way.id, node.id));
23870
23871         context.enter(iD.modes.DrawArea(context, way.id, graph));
23872     }
23873
23874     mode.enter = function() {
23875         context.install(behavior);
23876     };
23877
23878     mode.exit = function() {
23879         context.uninstall(behavior);
23880     };
23881
23882     return mode;
23883 };
23884 iD.modes.AddLine = function(context) {
23885     var mode = {
23886         id: 'add-line',
23887         button: 'line',
23888         title: t('modes.add_line.title'),
23889         description: t('modes.add_line.description'),
23890         key: '2'
23891     };
23892
23893     var behavior = iD.behavior.AddWay(context)
23894         .tail(t('modes.add_line.tail'))
23895         .on('start', start)
23896         .on('startFromWay', startFromWay)
23897         .on('startFromNode', startFromNode);
23898
23899     function start(loc) {
23900         var graph = context.graph(),
23901             node = iD.Node({loc: loc}),
23902             way = iD.Way();
23903
23904         context.perform(
23905             iD.actions.AddEntity(node),
23906             iD.actions.AddEntity(way),
23907             iD.actions.AddVertex(way.id, node.id));
23908
23909         context.enter(iD.modes.DrawLine(context, way.id, graph));
23910     }
23911
23912     function startFromWay(loc, edge) {
23913         var graph = context.graph(),
23914             node = iD.Node({loc: loc}),
23915             way = iD.Way();
23916
23917         context.perform(
23918             iD.actions.AddEntity(node),
23919             iD.actions.AddEntity(way),
23920             iD.actions.AddVertex(way.id, node.id),
23921             iD.actions.AddMidpoint({ loc: loc, edge: edge }, node));
23922
23923         context.enter(iD.modes.DrawLine(context, way.id, graph));
23924     }
23925
23926     function startFromNode(node) {
23927         var way = iD.Way();
23928
23929         context.perform(
23930             iD.actions.AddEntity(way),
23931             iD.actions.AddVertex(way.id, node.id));
23932
23933         context.enter(iD.modes.DrawLine(context, way.id, context.graph()));
23934     }
23935
23936     mode.enter = function() {
23937         context.install(behavior);
23938     };
23939
23940     mode.exit = function() {
23941         context.uninstall(behavior);
23942     };
23943
23944     return mode;
23945 };
23946 iD.modes.AddPoint = function(context) {
23947     var mode = {
23948         id: 'add-point',
23949         button: 'point',
23950         title: t('modes.add_point.title'),
23951         description: t('modes.add_point.description'),
23952         key: '1'
23953     };
23954
23955     var behavior = iD.behavior.Draw(context)
23956         .tail(t('modes.add_point.tail'))
23957         .on('click', add)
23958         .on('clickWay', addWay)
23959         .on('clickNode', addNode)
23960         .on('cancel', cancel)
23961         .on('finish', cancel);
23962
23963     function add(loc) {
23964         var node = iD.Node({loc: loc});
23965
23966         context.perform(
23967             iD.actions.AddEntity(node),
23968             t('operations.add.annotation.point'));
23969
23970         context.enter(
23971             iD.modes.Select(context, [node.id])
23972                 .suppressMenu(true)
23973                 .newFeature(true));
23974     }
23975
23976     function addWay(loc) {
23977         add(loc);
23978     }
23979
23980     function addNode(node) {
23981         add(node.loc);
23982     }
23983
23984     function cancel() {
23985         context.enter(iD.modes.Browse(context));
23986     }
23987
23988     mode.enter = function() {
23989         context.install(behavior);
23990     };
23991
23992     mode.exit = function() {
23993         context.uninstall(behavior);
23994     };
23995
23996     return mode;
23997 };
23998 iD.modes.Browse = function(context) {
23999     var mode = {
24000         button: 'browse',
24001         id: 'browse',
24002         title: t('modes.browse.title'),
24003         description: t('modes.browse.description')
24004     }, sidebar;
24005
24006     var behaviors = [
24007         iD.behavior.Paste(context),
24008         iD.behavior.Hover(context)
24009             .on('hover', context.ui().sidebar.hover),
24010         iD.behavior.Select(context),
24011         iD.behavior.Lasso(context),
24012         iD.modes.DragNode(context).behavior];
24013
24014     mode.enter = function() {
24015         behaviors.forEach(function(behavior) {
24016             context.install(behavior);
24017         });
24018
24019         // Get focus on the body.
24020         if (document.activeElement && document.activeElement.blur) {
24021             document.activeElement.blur();
24022         }
24023
24024         if (sidebar) {
24025             context.ui().sidebar.show(sidebar);
24026         } else {
24027             context.ui().sidebar.select(null);
24028         }
24029     };
24030
24031     mode.exit = function() {
24032         behaviors.forEach(function(behavior) {
24033             context.uninstall(behavior);
24034         });
24035
24036         if (sidebar) {
24037             context.ui().sidebar.hide();
24038         }
24039     };
24040
24041     mode.sidebar = function(_) {
24042         if (!arguments.length) return sidebar;
24043         sidebar = _;
24044         return mode;
24045     };
24046
24047     return mode;
24048 };
24049 iD.modes.DragNode = function(context) {
24050     var mode = {
24051         id: 'drag-node',
24052         button: 'browse'
24053     };
24054
24055     var nudgeInterval,
24056         activeIDs,
24057         wasMidpoint,
24058         cancelled,
24059         selectedIDs = [],
24060         hover = iD.behavior.Hover(context)
24061             .altDisables(true)
24062             .on('hover', context.ui().sidebar.hover),
24063         edit = iD.behavior.Edit(context);
24064
24065     function edge(point, size) {
24066         var pad = [30, 100, 30, 100];
24067         if (point[0] > size[0] - pad[0]) return [-10, 0];
24068         else if (point[0] < pad[2]) return [10, 0];
24069         else if (point[1] > size[1] - pad[1]) return [0, -10];
24070         else if (point[1] < pad[3]) return [0, 10];
24071         return null;
24072     }
24073
24074     function startNudge(nudge) {
24075         if (nudgeInterval) window.clearInterval(nudgeInterval);
24076         nudgeInterval = window.setInterval(function() {
24077             context.pan(nudge);
24078         }, 50);
24079     }
24080
24081     function stopNudge() {
24082         if (nudgeInterval) window.clearInterval(nudgeInterval);
24083         nudgeInterval = null;
24084     }
24085
24086     function moveAnnotation(entity) {
24087         return t('operations.move.annotation.' + entity.geometry(context.graph()));
24088     }
24089
24090     function connectAnnotation(entity) {
24091         return t('operations.connect.annotation.' + entity.geometry(context.graph()));
24092     }
24093
24094     function origin(entity) {
24095         return context.projection(entity.loc);
24096     }
24097
24098     function start(entity) {
24099         cancelled = d3.event.sourceEvent.shiftKey ||
24100             context.features().hasHiddenConnections(entity, context.graph());
24101
24102         if (cancelled) return behavior.cancel();
24103
24104         wasMidpoint = entity.type === 'midpoint';
24105         if (wasMidpoint) {
24106             var midpoint = entity;
24107             entity = iD.Node();
24108             context.perform(iD.actions.AddMidpoint(midpoint, entity));
24109
24110              var vertex = context.surface()
24111                 .selectAll('.' + entity.id);
24112              behavior.target(vertex.node(), entity);
24113
24114         } else {
24115             context.perform(
24116                 iD.actions.Noop());
24117         }
24118
24119         activeIDs = _.pluck(context.graph().parentWays(entity), 'id');
24120         activeIDs.push(entity.id);
24121
24122         context.enter(mode);
24123     }
24124
24125     function datum() {
24126         if (d3.event.sourceEvent.altKey) {
24127             return {};
24128         }
24129
24130         return d3.event.sourceEvent.target.__data__ || {};
24131     }
24132
24133     // via https://gist.github.com/shawnbot/4166283
24134     function childOf(p, c) {
24135         if (p === c) return false;
24136         while (c && c !== p) c = c.parentNode;
24137         return c === p;
24138     }
24139
24140     function move(entity) {
24141         if (cancelled) return;
24142         d3.event.sourceEvent.stopPropagation();
24143
24144         var nudge = childOf(context.container().node(),
24145             d3.event.sourceEvent.toElement) &&
24146             edge(d3.event.point, context.map().dimensions());
24147
24148         if (nudge) startNudge(nudge);
24149         else stopNudge();
24150
24151         var loc = context.map().mouseCoordinates();
24152
24153         var d = datum();
24154         if (d.type === 'node' && d.id !== entity.id) {
24155             loc = d.loc;
24156         } else if (d.type === 'way' && !d3.select(d3.event.sourceEvent.target).classed('fill')) {
24157             loc = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection).loc;
24158         }
24159
24160         context.replace(
24161             iD.actions.MoveNode(entity.id, loc),
24162             moveAnnotation(entity));
24163     }
24164
24165     function end(entity) {
24166         if (cancelled) return;
24167
24168         var d = datum();
24169
24170         if (d.type === 'way') {
24171             var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection);
24172             context.replace(
24173                 iD.actions.AddMidpoint({ loc: choice.loc, edge: [d.nodes[choice.index - 1], d.nodes[choice.index]] }, entity),
24174                 connectAnnotation(d));
24175
24176         } else if (d.type === 'node' && d.id !== entity.id) {
24177             context.replace(
24178                 iD.actions.Connect([d.id, entity.id]),
24179                 connectAnnotation(d));
24180
24181         } else if (wasMidpoint) {
24182             context.replace(
24183                 iD.actions.Noop(),
24184                 t('operations.add.annotation.vertex'));
24185
24186         } else {
24187             context.replace(
24188                 iD.actions.Noop(),
24189                 moveAnnotation(entity));
24190         }
24191
24192         var reselection = selectedIDs.filter(function(id) {
24193             return context.graph().hasEntity(id);
24194         });
24195
24196         if (reselection.length) {
24197             context.enter(
24198                 iD.modes.Select(context, reselection)
24199                     .suppressMenu(true));
24200         } else {
24201             context.enter(iD.modes.Browse(context));
24202         }
24203     }
24204
24205     function cancel() {
24206         behavior.cancel();
24207         context.enter(iD.modes.Browse(context));
24208     }
24209
24210     function setActiveElements() {
24211         context.surface().selectAll(iD.util.entitySelector(activeIDs))
24212             .classed('active', true);
24213     }
24214
24215     var behavior = iD.behavior.drag()
24216         .delegate('g.node, g.point, g.midpoint')
24217         .surface(context.surface().node())
24218         .origin(origin)
24219         .on('start', start)
24220         .on('move', move)
24221         .on('end', end);
24222
24223     mode.enter = function() {
24224         context.install(hover);
24225         context.install(edit);
24226
24227         context.history()
24228             .on('undone.drag-node', cancel);
24229
24230         context.map()
24231             .on('drawn.drag-node', setActiveElements);
24232
24233         setActiveElements();
24234     };
24235
24236     mode.exit = function() {
24237         context.uninstall(hover);
24238         context.uninstall(edit);
24239
24240         context.history()
24241             .on('undone.drag-node', null);
24242
24243         context.map()
24244             .on('drawn.drag-node', null);
24245
24246         context.surface()
24247             .selectAll('.active')
24248             .classed('active', false);
24249
24250         stopNudge();
24251     };
24252
24253     mode.selectedIDs = function(_) {
24254         if (!arguments.length) return selectedIDs;
24255         selectedIDs = _;
24256         return mode;
24257     };
24258
24259     mode.behavior = behavior;
24260
24261     return mode;
24262 };
24263 iD.modes.DrawArea = function(context, wayId, baseGraph) {
24264     var mode = {
24265         button: 'area',
24266         id: 'draw-area'
24267     };
24268
24269     var behavior;
24270
24271     mode.enter = function() {
24272         var way = context.entity(wayId),
24273             headId = way.nodes[way.nodes.length - 2],
24274             tailId = way.first();
24275
24276         behavior = iD.behavior.DrawWay(context, wayId, -1, mode, baseGraph)
24277             .tail(t('modes.draw_area.tail'));
24278
24279         var addNode = behavior.addNode;
24280
24281         behavior.addNode = function(node) {
24282             if (node.id === headId || node.id === tailId) {
24283                 behavior.finish();
24284             } else {
24285                 addNode(node);
24286             }
24287         };
24288
24289         context.install(behavior);
24290     };
24291
24292     mode.exit = function() {
24293         context.uninstall(behavior);
24294     };
24295
24296     mode.selectedIDs = function() {
24297         return [wayId];
24298     };
24299
24300     return mode;
24301 };
24302 iD.modes.DrawLine = function(context, wayId, baseGraph, affix) {
24303     var mode = {
24304         button: 'line',
24305         id: 'draw-line'
24306     };
24307
24308     var behavior;
24309
24310     mode.enter = function() {
24311         var way = context.entity(wayId),
24312             index = (affix === 'prefix') ? 0 : undefined,
24313             headId = (affix === 'prefix') ? way.first() : way.last();
24314
24315         behavior = iD.behavior.DrawWay(context, wayId, index, mode, baseGraph)
24316             .tail(t('modes.draw_line.tail'));
24317
24318         var addNode = behavior.addNode;
24319
24320         behavior.addNode = function(node) {
24321             if (node.id === headId) {
24322                 behavior.finish();
24323             } else {
24324                 addNode(node);
24325             }
24326         };
24327
24328         context.install(behavior);
24329     };
24330
24331     mode.exit = function() {
24332         context.uninstall(behavior);
24333     };
24334
24335     mode.selectedIDs = function() {
24336         return [wayId];
24337     };
24338
24339     return mode;
24340 };
24341 iD.modes.Move = function(context, entityIDs) {
24342     var mode = {
24343         id: 'move',
24344         button: 'browse'
24345     };
24346
24347     var keybinding = d3.keybinding('move'),
24348         edit = iD.behavior.Edit(context),
24349         annotation = entityIDs.length === 1 ?
24350             t('operations.move.annotation.' + context.geometry(entityIDs[0])) :
24351             t('operations.move.annotation.multiple'),
24352         cache,
24353         origin,
24354         nudgeInterval;
24355
24356     function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
24357
24358     function edge(point, size) {
24359         var pad = [30, 100, 30, 100];
24360         if (point[0] > size[0] - pad[0]) return [-10, 0];
24361         else if (point[0] < pad[2]) return [10, 0];
24362         else if (point[1] > size[1] - pad[1]) return [0, -10];
24363         else if (point[1] < pad[3]) return [0, 10];
24364         return null;
24365     }
24366
24367     function startNudge(nudge) {
24368         if (nudgeInterval) window.clearInterval(nudgeInterval);
24369         nudgeInterval = window.setInterval(function() {
24370             context.pan(nudge);
24371
24372             var currMouse = context.mouse(),
24373                 origMouse = context.projection(origin),
24374                 delta = vecSub(vecSub(currMouse, origMouse), nudge),
24375                 action = iD.actions.Move(entityIDs, delta, context.projection, cache);
24376
24377             context.overwrite(action, annotation);
24378
24379         }, 50);
24380     }
24381
24382     function stopNudge() {
24383         if (nudgeInterval) window.clearInterval(nudgeInterval);
24384         nudgeInterval = null;
24385     }
24386
24387     function move() {
24388         var currMouse = context.mouse(),
24389             origMouse = context.projection(origin),
24390             delta = vecSub(currMouse, origMouse),
24391             action = iD.actions.Move(entityIDs, delta, context.projection, cache);
24392
24393         context.overwrite(action, annotation);
24394
24395         var nudge = edge(currMouse, context.map().dimensions());
24396         if (nudge) startNudge(nudge);
24397         else stopNudge();
24398     }
24399
24400     function finish() {
24401         d3.event.stopPropagation();
24402         context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
24403         stopNudge();
24404     }
24405
24406     function cancel() {
24407         context.pop();
24408         context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
24409         stopNudge();
24410     }
24411
24412     function undone() {
24413         context.enter(iD.modes.Browse(context));
24414     }
24415
24416     mode.enter = function() {
24417         origin = context.map().mouseCoordinates();
24418         cache = {};
24419
24420         context.install(edit);
24421
24422         context.perform(
24423             iD.actions.Noop(),
24424             annotation);
24425
24426         context.surface()
24427             .on('mousemove.move', move)
24428             .on('click.move', finish);
24429
24430         context.history()
24431             .on('undone.move', undone);
24432
24433         keybinding
24434             .on('⎋', cancel)
24435             .on('↩', finish);
24436
24437         d3.select(document)
24438             .call(keybinding);
24439     };
24440
24441     mode.exit = function() {
24442         stopNudge();
24443
24444         context.uninstall(edit);
24445
24446         context.surface()
24447             .on('mousemove.move', null)
24448             .on('click.move', null);
24449
24450         context.history()
24451             .on('undone.move', null);
24452
24453         keybinding.off();
24454     };
24455
24456     return mode;
24457 };
24458 iD.modes.RotateWay = function(context, wayId) {
24459     var mode = {
24460         id: 'rotate-way',
24461         button: 'browse'
24462     };
24463
24464     var keybinding = d3.keybinding('rotate-way'),
24465         edit = iD.behavior.Edit(context);
24466
24467     mode.enter = function() {
24468         context.install(edit);
24469
24470         var annotation = t('operations.rotate.annotation.' + context.geometry(wayId)),
24471             way = context.graph().entity(wayId),
24472             nodes = _.uniq(context.graph().childNodes(way)),
24473             points = nodes.map(function(n) { return context.projection(n.loc); }),
24474             pivot = d3.geom.polygon(points).centroid(),
24475             angle;
24476
24477         context.perform(
24478             iD.actions.Noop(),
24479             annotation);
24480
24481         function rotate() {
24482
24483             var mousePoint = context.mouse(),
24484                 newAngle = Math.atan2(mousePoint[1] - pivot[1], mousePoint[0] - pivot[0]);
24485
24486             if (typeof angle === 'undefined') angle = newAngle;
24487
24488             context.replace(
24489                 iD.actions.RotateWay(wayId, pivot, newAngle - angle, context.projection),
24490                 annotation);
24491
24492             angle = newAngle;
24493         }
24494
24495         function finish() {
24496             d3.event.stopPropagation();
24497             context.enter(iD.modes.Select(context, [wayId])
24498                 .suppressMenu(true));
24499         }
24500
24501         function cancel() {
24502             context.pop();
24503             context.enter(iD.modes.Select(context, [wayId])
24504                 .suppressMenu(true));
24505         }
24506
24507         function undone() {
24508             context.enter(iD.modes.Browse(context));
24509         }
24510
24511         context.surface()
24512             .on('mousemove.rotate-way', rotate)
24513             .on('click.rotate-way', finish);
24514
24515         context.history()
24516             .on('undone.rotate-way', undone);
24517
24518         keybinding
24519             .on('⎋', cancel)
24520             .on('↩', finish);
24521
24522         d3.select(document)
24523             .call(keybinding);
24524     };
24525
24526     mode.exit = function() {
24527         context.uninstall(edit);
24528
24529         context.surface()
24530             .on('mousemove.rotate-way', null)
24531             .on('click.rotate-way', null);
24532
24533         context.history()
24534             .on('undone.rotate-way', null);
24535
24536         keybinding.off();
24537     };
24538
24539     return mode;
24540 };
24541 iD.modes.Save = function(context) {
24542     var ui = iD.ui.Commit(context)
24543             .on('cancel', cancel)
24544             .on('save', save);
24545
24546     function cancel() {
24547         context.enter(iD.modes.Browse(context));
24548     }
24549
24550     function save(e, tryAgain) {
24551         function withChildNodes(ids, graph) {
24552             return _.uniq(_.reduce(ids, function(result, id) {
24553                 var e = graph.entity(id);
24554                 if (e.type === 'way') {
24555                     var cn = graph.childNodes(e);
24556                     result.push.apply(result, _.pluck(_.filter(cn, 'version'), 'id'));
24557                 }
24558                 return result;
24559             }, _.clone(ids)));
24560         }
24561
24562         var loading = iD.ui.Loading(context).message(t('save.uploading')).blocking(true),
24563             history = context.history(),
24564             origChanges = history.changes(iD.actions.DiscardTags(history.difference())),
24565             localGraph = context.graph(),
24566             remoteGraph = iD.Graph(history.base(), true),
24567             modified = _.filter(history.difference().summary(), {changeType: 'modified'}),
24568             toCheck = _.pluck(_.pluck(modified, 'entity'), 'id'),
24569             toLoad = withChildNodes(toCheck, localGraph),
24570             conflicts = [],
24571             errors = [];
24572
24573         if (!tryAgain) history.perform(iD.actions.Noop());  // checkpoint
24574         context.container().call(loading);
24575
24576         if (toCheck.length) {
24577             context.connection().loadMultiple(toLoad, loaded);
24578         } else {
24579             finalize();
24580         }
24581
24582
24583         // Reload modified entities into an alternate graph and check for conflicts..
24584         function loaded(err, result) {
24585             if (errors.length) return;
24586
24587             if (err) {
24588                 errors.push({
24589                     msg: err.responseText,
24590                     details: [ t('save.status_code', { code: err.status }) ]
24591                 });
24592                 showErrors();
24593
24594             } else {
24595                 var loadMore = [];
24596                 _.each(result.data, function(entity) {
24597                     remoteGraph.replace(entity);
24598                     toLoad = _.without(toLoad, entity.id);
24599
24600                     // Because loadMultiple doesn't download /full like loadEntity,
24601                     // need to also load children that aren't already being checked..
24602                     if (!entity.visible) return;
24603                     if (entity.type === 'way') {
24604                         loadMore.push.apply(loadMore,
24605                             _.difference(entity.nodes, toCheck, toLoad, loadMore));
24606                     } else if (entity.type === 'relation' && entity.isMultipolygon()) {
24607                         loadMore.push.apply(loadMore,
24608                             _.difference(_.pluck(entity.members, 'id'), toCheck, toLoad, loadMore));
24609                     }
24610                 });
24611
24612                 if (loadMore.length) {
24613                     toLoad.push.apply(toLoad, loadMore);
24614                     context.connection().loadMultiple(loadMore, loaded);
24615                 }
24616
24617                 if (!toLoad.length) {
24618                     checkConflicts();
24619                 }
24620             }
24621         }
24622
24623
24624         function checkConflicts() {
24625             function choice(id, text, action) {
24626                 return { id: id, text: text, action: function() { history.replace(action); } };
24627             }
24628             function formatUser(d) {
24629                 return '<a href="' + context.connection().userURL(d) + '" target="_blank">' + d + '</a>';
24630             }
24631             function entityName(entity) {
24632                 return iD.util.displayName(entity) || (iD.util.displayType(entity.id) + ' ' + entity.id);
24633             }
24634
24635             function compareVersions(local, remote) {
24636                 if (local.version !== remote.version) return false;
24637
24638                 if (local.type === 'way') {
24639                     var children = _.union(local.nodes, remote.nodes);
24640
24641                     for (var i = 0; i < children.length; i++) {
24642                         var a = localGraph.hasEntity(children[i]),
24643                             b = remoteGraph.hasEntity(children[i]);
24644
24645                         if (a && b && a.version !== b.version) return false;
24646                     }
24647                 }
24648
24649                 return true;
24650             }
24651
24652             _.each(toCheck, function(id) {
24653                 var local = localGraph.entity(id),
24654                     remote = remoteGraph.entity(id);
24655
24656                 if (compareVersions(local, remote)) return;
24657
24658                 var action = iD.actions.MergeRemoteChanges,
24659                     merge = action(id, localGraph, remoteGraph, formatUser);
24660
24661                 history.replace(merge);
24662
24663                 var mergeConflicts = merge.conflicts();
24664                 if (!mergeConflicts.length) return;  // merged safely
24665
24666                 var forceLocal = action(id, localGraph, remoteGraph).withOption('force_local'),
24667                     forceRemote = action(id, localGraph, remoteGraph).withOption('force_remote'),
24668                     keepMine = t('save.conflict.' + (remote.visible ? 'keep_local' : 'restore')),
24669                     keepTheirs = t('save.conflict.' + (remote.visible ? 'keep_remote' : 'delete'));
24670
24671                 conflicts.push({
24672                     id: id,
24673                     name: entityName(local),
24674                     details: mergeConflicts,
24675                     chosen: 1,
24676                     choices: [
24677                         choice(id, keepMine, forceLocal),
24678                         choice(id, keepTheirs, forceRemote)
24679                     ]
24680                 });
24681             });
24682
24683             finalize();
24684         }
24685
24686
24687         function finalize() {
24688             if (conflicts.length) {
24689                 conflicts.sort(function(a,b) { return b.id.localeCompare(a.id); });
24690                 showConflicts();
24691             } else if (errors.length) {
24692                 showErrors();
24693             } else {
24694                 var changes = history.changes(iD.actions.DiscardTags(history.difference()));
24695                 if (changes.modified.length || changes.created.length || changes.deleted.length) {
24696                     context.connection().putChangeset(
24697                         changes,
24698                         e.comment,
24699                         history.imageryUsed(),
24700                         function(err, changeset_id) {
24701                             if (err) {
24702                                 errors.push({
24703                                     msg: err.responseText,
24704                                     details: [ t('save.status_code', { code: err.status }) ]
24705                                 });
24706                                 showErrors();
24707                             } else {
24708                                 history.clearSaved();
24709                                 success(e, changeset_id);
24710                                 // Add delay to allow for postgres replication #1646 #2678
24711                                 window.setTimeout(function() {
24712                                     loading.close();
24713                                     context.flush();
24714                                 }, 2500);
24715                             }
24716                         });
24717                 } else {        // changes were insignificant or reverted by user
24718                     loading.close();
24719                     context.flush();
24720                     cancel();
24721                 }
24722             }
24723         }
24724
24725
24726         function showConflicts() {
24727             var selection = context.container()
24728                 .select('#sidebar')
24729                 .append('div')
24730                 .attr('class','sidebar-component');
24731
24732             loading.close();
24733
24734             selection.call(iD.ui.Conflicts(context)
24735                 .list(conflicts)
24736                 .on('download', function() {
24737                     var data = JXON.stringify(context.connection().osmChangeJXON('CHANGEME', origChanges)),
24738                         win = window.open('data:text/xml,' + encodeURIComponent(data), '_blank');
24739                     win.focus();
24740                 })
24741                 .on('cancel', function() {
24742                     history.pop();
24743                     selection.remove();
24744                 })
24745                 .on('save', function() {
24746                     for (var i = 0; i < conflicts.length; i++) {
24747                         if (conflicts[i].chosen === 1) {  // user chose "keep theirs"
24748                             var entity = context.hasEntity(conflicts[i].id);
24749                             if (entity && entity.type === 'way') {
24750                                 var children = _.uniq(entity.nodes);
24751                                 for (var j = 0; j < children.length; j++) {
24752                                     history.replace(iD.actions.Revert(children[j]));
24753                                 }
24754                             }
24755                             history.replace(iD.actions.Revert(conflicts[i].id));
24756                         }
24757                     }
24758
24759                     selection.remove();
24760                     save(e, true);
24761                 })
24762             );
24763         }
24764
24765
24766         function showErrors() {
24767             var selection = iD.ui.confirm(context.container());
24768
24769             history.pop();
24770             loading.close();
24771
24772             selection
24773                 .select('.modal-section.header')
24774                 .append('h3')
24775                 .text(t('save.error'));
24776
24777             addErrors(selection, errors);
24778             selection.okButton();
24779         }
24780
24781
24782         function addErrors(selection, data) {
24783             var message = selection
24784                 .select('.modal-section.message-text');
24785
24786             var items = message
24787                 .selectAll('.error-container')
24788                 .data(data);
24789
24790             var enter = items.enter()
24791                 .append('div')
24792                 .attr('class', 'error-container');
24793
24794             enter
24795                 .append('a')
24796                 .attr('class', 'error-description')
24797                 .attr('href', '#')
24798                 .classed('hide-toggle', true)
24799                 .text(function(d) { return d.msg || t('save.unknown_error_details'); })
24800                 .on('click', function() {
24801                     var error = d3.select(this),
24802                         detail = d3.select(this.nextElementSibling),
24803                         exp = error.classed('expanded');
24804
24805                     detail.style('display', exp ? 'none' : 'block');
24806                     error.classed('expanded', !exp);
24807
24808                     d3.event.preventDefault();
24809                 });
24810
24811             var details = enter
24812                 .append('div')
24813                 .attr('class', 'error-detail-container')
24814                 .style('display', 'none');
24815
24816             details
24817                 .append('ul')
24818                 .attr('class', 'error-detail-list')
24819                 .selectAll('li')
24820                 .data(function(d) { return d.details || []; })
24821                 .enter()
24822                 .append('li')
24823                 .attr('class', 'error-detail-item')
24824                 .text(function(d) { return d; });
24825
24826             items.exit()
24827                 .remove();
24828         }
24829
24830     }
24831
24832
24833     function success(e, changeset_id) {
24834         context.enter(iD.modes.Browse(context)
24835             .sidebar(iD.ui.Success(context)
24836                 .changeset({
24837                     id: changeset_id,
24838                     comment: e.comment
24839                 })
24840                 .on('cancel', function() {
24841                     context.ui().sidebar.hide();
24842                 })));
24843     }
24844
24845     var mode = {
24846         id: 'save'
24847     };
24848
24849     mode.enter = function() {
24850         context.connection().authenticate(function() {
24851             context.ui().sidebar.show(ui);
24852         });
24853     };
24854
24855     mode.exit = function() {
24856         context.ui().sidebar.hide();
24857     };
24858
24859     return mode;
24860 };
24861 iD.modes.Select = function(context, selectedIDs) {
24862     var mode = {
24863         id: 'select',
24864         button: 'browse'
24865     };
24866
24867     var keybinding = d3.keybinding('select'),
24868         timeout = null,
24869         behaviors = [
24870             iD.behavior.Copy(context),
24871             iD.behavior.Paste(context),
24872             iD.behavior.Hover(context),
24873             iD.behavior.Select(context),
24874             iD.behavior.Lasso(context),
24875             iD.modes.DragNode(context)
24876                 .selectedIDs(selectedIDs)
24877                 .behavior],
24878         inspector,
24879         radialMenu,
24880         newFeature = false,
24881         suppressMenu = false;
24882
24883     var wrap = context.container()
24884         .select('.inspector-wrap');
24885
24886
24887     function singular() {
24888         if (selectedIDs.length === 1) {
24889             return context.entity(selectedIDs[0]);
24890         }
24891     }
24892
24893     function closeMenu() {
24894         if (radialMenu) {
24895             context.surface().call(radialMenu.close);
24896         }
24897     }
24898
24899     function positionMenu() {
24900         if (suppressMenu || !radialMenu) { return; }
24901
24902         var entity = singular();
24903         if (entity && context.geometry(entity.id) === 'relation') {
24904             suppressMenu = true;
24905         } else if (entity && entity.type === 'node') {
24906             radialMenu.center(context.projection(entity.loc));
24907         } else {
24908             var point = context.mouse(),
24909                 viewport = iD.geo.Extent(context.projection.clipExtent()).polygon();
24910             if (iD.geo.pointInPolygon(point, viewport)) {
24911                 radialMenu.center(point);
24912             } else {
24913                 suppressMenu = true;
24914             }
24915         }
24916     }
24917
24918     function showMenu() {
24919         closeMenu();
24920         if (!suppressMenu && radialMenu) {
24921             context.surface().call(radialMenu);
24922         }
24923     }
24924
24925     mode.selectedIDs = function() {
24926         return selectedIDs;
24927     };
24928
24929     mode.reselect = function() {
24930         var surfaceNode = context.surface().node();
24931         if (surfaceNode.focus) { // FF doesn't support it
24932             surfaceNode.focus();
24933         }
24934
24935         positionMenu();
24936         showMenu();
24937     };
24938
24939     mode.newFeature = function(_) {
24940         if (!arguments.length) return newFeature;
24941         newFeature = _;
24942         return mode;
24943     };
24944
24945     mode.suppressMenu = function(_) {
24946         if (!arguments.length) return suppressMenu;
24947         suppressMenu = _;
24948         return mode;
24949     };
24950
24951     mode.enter = function() {
24952         function update() {
24953             closeMenu();
24954             if (_.any(selectedIDs, function(id) { return !context.hasEntity(id); })) {
24955                 // Exit mode if selected entity gets undone
24956                 context.enter(iD.modes.Browse(context));
24957             }
24958         }
24959
24960         function dblclick() {
24961             var target = d3.select(d3.event.target),
24962                 datum = target.datum();
24963
24964             if (datum instanceof iD.Way && !target.classed('fill')) {
24965                 var choice = iD.geo.chooseEdge(context.childNodes(datum), context.mouse(), context.projection),
24966                     node = iD.Node();
24967
24968                 var prev = datum.nodes[choice.index - 1],
24969                     next = datum.nodes[choice.index];
24970
24971                 context.perform(
24972                     iD.actions.AddMidpoint({loc: choice.loc, edge: [prev, next]}, node),
24973                     t('operations.add.annotation.vertex'));
24974
24975                 d3.event.preventDefault();
24976                 d3.event.stopPropagation();
24977             }
24978         }
24979
24980         function selectElements(drawn) {
24981             var entity = singular();
24982             if (entity && context.geometry(entity.id) === 'relation') {
24983                 suppressMenu = true;
24984                 return;
24985             }
24986
24987             var selection = context.surface()
24988                     .selectAll(iD.util.entityOrMemberSelector(selectedIDs, context.graph()));
24989
24990             if (selection.empty()) {
24991                 if (drawn) {  // Exit mode if selected DOM elements have disappeared..
24992                     context.enter(iD.modes.Browse(context));
24993                 }
24994             } else {
24995                 selection
24996                     .classed('selected', true);
24997             }
24998         }
24999
25000
25001         behaviors.forEach(function(behavior) {
25002             context.install(behavior);
25003         });
25004
25005         var operations = _.without(d3.values(iD.operations), iD.operations.Delete)
25006                 .map(function(o) { return o(selectedIDs, context); })
25007                 .filter(function(o) { return o.available(); });
25008
25009         operations.unshift(iD.operations.Delete(selectedIDs, context));
25010
25011         keybinding.on('⎋', function() {
25012             context.enter(iD.modes.Browse(context));
25013         }, true);
25014
25015         operations.forEach(function(operation) {
25016             operation.keys.forEach(function(key) {
25017                 keybinding.on(key, function() {
25018                     if (!operation.disabled()) {
25019                         operation();
25020                     }
25021                 });
25022             });
25023         });
25024
25025         d3.select(document)
25026             .call(keybinding);
25027
25028         radialMenu = iD.ui.RadialMenu(context, operations);
25029
25030         context.ui().sidebar
25031             .select(singular() ? singular().id : null, newFeature);
25032
25033         context.history()
25034             .on('undone.select', update)
25035             .on('redone.select', update);
25036
25037         context.map()
25038             .on('move.select', closeMenu)
25039             .on('drawn.select', selectElements);
25040
25041         selectElements();
25042
25043         var show = d3.event && !suppressMenu;
25044
25045         if (show) {
25046             positionMenu();
25047         }
25048
25049         timeout = window.setTimeout(function() {
25050             if (show) {
25051                 showMenu();
25052             }
25053
25054             context.surface()
25055                 .on('dblclick.select', dblclick);
25056         }, 200);
25057
25058         if (selectedIDs.length > 1) {
25059             var entities = iD.ui.SelectionList(context, selectedIDs);
25060             context.ui().sidebar.show(entities);
25061         }
25062     };
25063
25064     mode.exit = function() {
25065         if (timeout) window.clearTimeout(timeout);
25066
25067         if (inspector) wrap.call(inspector.close);
25068
25069         behaviors.forEach(function(behavior) {
25070             context.uninstall(behavior);
25071         });
25072
25073         keybinding.off();
25074         closeMenu();
25075         radialMenu = undefined;
25076
25077         context.history()
25078             .on('undone.select', null)
25079             .on('redone.select', null);
25080
25081         context.surface()
25082             .on('dblclick.select', null)
25083             .selectAll('.selected')
25084             .classed('selected', false);
25085
25086         context.map().on('drawn.select', null);
25087         context.ui().sidebar.hide();
25088     };
25089
25090     return mode;
25091 };
25092 iD.operations = {};
25093 iD.operations.Circularize = function(selectedIDs, context) {
25094     var entityId = selectedIDs[0],
25095         entity = context.entity(entityId),
25096         extent = entity.extent(context.graph()),
25097         geometry = context.geometry(entityId),
25098         action = iD.actions.Circularize(entityId, context.projection);
25099
25100     var operation = function() {
25101         var annotation = t('operations.circularize.annotation.' + geometry);
25102         context.perform(action, annotation);
25103     };
25104
25105     operation.available = function() {
25106         return selectedIDs.length === 1 &&
25107             entity.type === 'way' &&
25108             _.uniq(entity.nodes).length > 1;
25109     };
25110
25111     operation.disabled = function() {
25112         var reason;
25113         if (extent.percentContainedIn(context.extent()) < 0.8) {
25114             reason = 'too_large';
25115         } else if (context.hasHiddenConnections(entityId)) {
25116             reason = 'connected_to_hidden';
25117         }
25118         return action.disabled(context.graph()) || reason;
25119     };
25120
25121     operation.tooltip = function() {
25122         var disable = operation.disabled();
25123         return disable ?
25124             t('operations.circularize.' + disable) :
25125             t('operations.circularize.description.' + geometry);
25126     };
25127
25128     operation.id = 'circularize';
25129     operation.keys = [t('operations.circularize.key')];
25130     operation.title = t('operations.circularize.title');
25131
25132     return operation;
25133 };
25134 iD.operations.Continue = function(selectedIDs, context) {
25135     var graph = context.graph(),
25136         entities = selectedIDs.map(function(id) { return graph.entity(id); }),
25137         geometries = _.extend({line: [], vertex: []},
25138             _.groupBy(entities, function(entity) { return entity.geometry(graph); })),
25139         vertex = geometries.vertex[0];
25140
25141     function candidateWays() {
25142         return graph.parentWays(vertex).filter(function(parent) {
25143             return parent.geometry(graph) === 'line' &&
25144                 parent.affix(vertex.id) &&
25145                 (geometries.line.length === 0 || geometries.line[0] === parent);
25146         });
25147     }
25148
25149     var operation = function() {
25150         var candidate = candidateWays()[0];
25151         context.enter(iD.modes.DrawLine(
25152             context,
25153             candidate.id,
25154             context.graph(),
25155             candidate.affix(vertex.id)));
25156     };
25157
25158     operation.available = function() {
25159         return geometries.vertex.length === 1 && geometries.line.length <= 1 &&
25160             !context.features().hasHiddenConnections(vertex, context.graph());
25161     };
25162
25163     operation.disabled = function() {
25164         var candidates = candidateWays();
25165         if (candidates.length === 0)
25166             return 'not_eligible';
25167         if (candidates.length > 1)
25168             return 'multiple';
25169     };
25170
25171     operation.tooltip = function() {
25172         var disable = operation.disabled();
25173         return disable ?
25174             t('operations.continue.' + disable) :
25175             t('operations.continue.description');
25176     };
25177
25178     operation.id = 'continue';
25179     operation.keys = [t('operations.continue.key')];
25180     operation.title = t('operations.continue.title');
25181
25182     return operation;
25183 };
25184 iD.operations.Delete = function(selectedIDs, context) {
25185     var action = iD.actions.DeleteMultiple(selectedIDs);
25186
25187     var operation = function() {
25188         var annotation,
25189             nextSelectedID;
25190
25191         if (selectedIDs.length > 1) {
25192             annotation = t('operations.delete.annotation.multiple', {n: selectedIDs.length});
25193
25194         } else {
25195             var id = selectedIDs[0],
25196                 entity = context.entity(id),
25197                 geometry = context.geometry(id),
25198                 parents = context.graph().parentWays(entity),
25199                 parent = parents[0];
25200
25201             annotation = t('operations.delete.annotation.' + geometry);
25202
25203             // Select the next closest node in the way.
25204             if (geometry === 'vertex' && parents.length === 1 && parent.nodes.length > 2) {
25205                 var nodes = parent.nodes,
25206                     i = nodes.indexOf(id);
25207
25208                 if (i === 0) {
25209                     i++;
25210                 } else if (i === nodes.length - 1) {
25211                     i--;
25212                 } else {
25213                     var a = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i - 1]).loc),
25214                         b = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i + 1]).loc);
25215                     i = a < b ? i - 1 : i + 1;
25216                 }
25217
25218                 nextSelectedID = nodes[i];
25219             }
25220         }
25221
25222         if (nextSelectedID && context.hasEntity(nextSelectedID)) {
25223             context.enter(iD.modes.Select(context, [nextSelectedID]));
25224         } else {
25225             context.enter(iD.modes.Browse(context));
25226         }
25227
25228         context.perform(
25229             action,
25230             annotation);
25231     };
25232
25233     operation.available = function() {
25234         return true;
25235     };
25236
25237     operation.disabled = function() {
25238         var reason;
25239         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25240             reason = 'connected_to_hidden';
25241         }
25242         return action.disabled(context.graph()) || reason;
25243     };
25244
25245     operation.tooltip = function() {
25246         var disable = operation.disabled();
25247         return disable ?
25248             t('operations.delete.' + disable) :
25249             t('operations.delete.description');
25250     };
25251
25252     operation.id = 'delete';
25253     operation.keys = [iD.ui.cmd('⌘⌫'), iD.ui.cmd('⌘⌦')];
25254     operation.title = t('operations.delete.title');
25255
25256     return operation;
25257 };
25258 iD.operations.Disconnect = function(selectedIDs, context) {
25259     var vertices = _.filter(selectedIDs, function vertex(entityId) {
25260         return context.geometry(entityId) === 'vertex';
25261     });
25262
25263     var entityId = vertices[0],
25264         action = iD.actions.Disconnect(entityId);
25265
25266     if (selectedIDs.length > 1) {
25267         action.limitWays(_.without(selectedIDs, entityId));
25268     }
25269
25270     var operation = function() {
25271         context.perform(action, t('operations.disconnect.annotation'));
25272     };
25273
25274     operation.available = function() {
25275         return vertices.length === 1;
25276     };
25277
25278     operation.disabled = function() {
25279         var reason;
25280         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25281             reason = 'connected_to_hidden';
25282         }
25283         return action.disabled(context.graph()) || reason;
25284     };
25285
25286     operation.tooltip = function() {
25287         var disable = operation.disabled();
25288         return disable ?
25289             t('operations.disconnect.' + disable) :
25290             t('operations.disconnect.description');
25291     };
25292
25293     operation.id = 'disconnect';
25294     operation.keys = [t('operations.disconnect.key')];
25295     operation.title = t('operations.disconnect.title');
25296
25297     return operation;
25298 };
25299 iD.operations.Merge = function(selectedIDs, context) {
25300     var join = iD.actions.Join(selectedIDs),
25301         merge = iD.actions.Merge(selectedIDs),
25302         mergePolygon = iD.actions.MergePolygon(selectedIDs);
25303
25304     var operation = function() {
25305         var annotation = t('operations.merge.annotation', {n: selectedIDs.length}),
25306             action;
25307
25308         if (!join.disabled(context.graph())) {
25309             action = join;
25310         } else if (!merge.disabled(context.graph())) {
25311             action = merge;
25312         } else {
25313             action = mergePolygon;
25314         }
25315
25316         context.perform(action, annotation);
25317         context.enter(iD.modes.Select(context, selectedIDs.filter(function(id) { return context.hasEntity(id); }))
25318             .suppressMenu(true));
25319     };
25320
25321     operation.available = function() {
25322         return selectedIDs.length >= 2;
25323     };
25324
25325     operation.disabled = function() {
25326         return join.disabled(context.graph()) &&
25327             merge.disabled(context.graph()) &&
25328             mergePolygon.disabled(context.graph());
25329     };
25330
25331     operation.tooltip = function() {
25332         var j = join.disabled(context.graph()),
25333             m = merge.disabled(context.graph()),
25334             p = mergePolygon.disabled(context.graph());
25335
25336         if (j === 'restriction' && m && p)
25337             return t('operations.merge.restriction', {relation: context.presets().item('type/restriction').name()});
25338
25339         if (p === 'incomplete_relation' && j && m)
25340             return t('operations.merge.incomplete_relation');
25341
25342         if (j && m && p)
25343             return t('operations.merge.' + j);
25344
25345         return t('operations.merge.description');
25346     };
25347
25348     operation.id = 'merge';
25349     operation.keys = [t('operations.merge.key')];
25350     operation.title = t('operations.merge.title');
25351
25352     return operation;
25353 };
25354 iD.operations.Move = function(selectedIDs, context) {
25355     var extent = selectedIDs.reduce(function(extent, id) {
25356             return extent.extend(context.entity(id).extent(context.graph()));
25357         }, iD.geo.Extent());
25358
25359     var operation = function() {
25360         context.enter(iD.modes.Move(context, selectedIDs));
25361     };
25362
25363     operation.available = function() {
25364         return selectedIDs.length > 1 ||
25365             context.entity(selectedIDs[0]).type !== 'node';
25366     };
25367
25368     operation.disabled = function() {
25369         var reason;
25370         if (extent.area() && extent.percentContainedIn(context.extent()) < 0.8) {
25371             reason = 'too_large';
25372         } else if (_.any(selectedIDs, context.hasHiddenConnections)) {
25373             reason = 'connected_to_hidden';
25374         }
25375         return iD.actions.Move(selectedIDs).disabled(context.graph()) || reason;
25376     };
25377
25378     operation.tooltip = function() {
25379         var disable = operation.disabled();
25380         return disable ?
25381             t('operations.move.' + disable) :
25382             t('operations.move.description');
25383     };
25384
25385     operation.id = 'move';
25386     operation.keys = [t('operations.move.key')];
25387     operation.title = t('operations.move.title');
25388
25389     return operation;
25390 };
25391 iD.operations.Orthogonalize = function(selectedIDs, context) {
25392     var entityId = selectedIDs[0],
25393         entity = context.entity(entityId),
25394         extent = entity.extent(context.graph()),
25395         geometry = context.geometry(entityId),
25396         action = iD.actions.Orthogonalize(entityId, context.projection);
25397
25398     var operation = function() {
25399         var annotation = t('operations.orthogonalize.annotation.' + geometry);
25400         context.perform(action, annotation);
25401     };
25402
25403     operation.available = function() {
25404         return selectedIDs.length === 1 &&
25405             entity.type === 'way' &&
25406             entity.isClosed() &&
25407             _.uniq(entity.nodes).length > 2;
25408     };
25409
25410     operation.disabled = function() {
25411         var reason;
25412         if (extent.percentContainedIn(context.extent()) < 0.8) {
25413             reason = 'too_large';
25414         } else if (context.hasHiddenConnections(entityId)) {
25415             reason = 'connected_to_hidden';
25416         }
25417         return action.disabled(context.graph()) || reason;
25418     };
25419
25420     operation.tooltip = function() {
25421         var disable = operation.disabled();
25422         return disable ?
25423             t('operations.orthogonalize.' + disable) :
25424             t('operations.orthogonalize.description.' + geometry);
25425     };
25426
25427     operation.id = 'orthogonalize';
25428     operation.keys = [t('operations.orthogonalize.key')];
25429     operation.title = t('operations.orthogonalize.title');
25430
25431     return operation;
25432 };
25433 iD.operations.Reverse = function(selectedIDs, context) {
25434     var entityId = selectedIDs[0];
25435
25436     var operation = function() {
25437         context.perform(
25438             iD.actions.Reverse(entityId),
25439             t('operations.reverse.annotation'));
25440     };
25441
25442     operation.available = function() {
25443         return selectedIDs.length === 1 &&
25444             context.geometry(entityId) === 'line';
25445     };
25446
25447     operation.disabled = function() {
25448         return false;
25449     };
25450
25451     operation.tooltip = function() {
25452         return t('operations.reverse.description');
25453     };
25454
25455     operation.id = 'reverse';
25456     operation.keys = [t('operations.reverse.key')];
25457     operation.title = t('operations.reverse.title');
25458
25459     return operation;
25460 };
25461 iD.operations.Rotate = function(selectedIDs, context) {
25462     var entityId = selectedIDs[0],
25463         entity = context.entity(entityId),
25464         extent = entity.extent(context.graph()),
25465         geometry = context.geometry(entityId);
25466
25467     var operation = function() {
25468         context.enter(iD.modes.RotateWay(context, entityId));
25469     };
25470
25471     operation.available = function() {
25472         if (selectedIDs.length !== 1 || entity.type !== 'way')
25473             return false;
25474         if (geometry === 'area')
25475             return true;
25476         if (entity.isClosed() &&
25477             context.graph().parentRelations(entity).some(function(r) { return r.isMultipolygon(); }))
25478             return true;
25479         return false;
25480     };
25481
25482     operation.disabled = function() {
25483         if (extent.percentContainedIn(context.extent()) < 0.8) {
25484             return 'too_large';
25485         } else if (context.hasHiddenConnections(entityId)) {
25486             return 'connected_to_hidden';
25487         } else {
25488             return false;
25489         }
25490     };
25491
25492     operation.tooltip = function() {
25493         var disable = operation.disabled();
25494         return disable ?
25495             t('operations.rotate.' + disable) :
25496             t('operations.rotate.description');
25497     };
25498
25499     operation.id = 'rotate';
25500     operation.keys = [t('operations.rotate.key')];
25501     operation.title = t('operations.rotate.title');
25502
25503     return operation;
25504 };
25505 iD.operations.Split = function(selectedIDs, context) {
25506     var vertices = _.filter(selectedIDs, function vertex(entityId) {
25507         return context.geometry(entityId) === 'vertex';
25508     });
25509
25510     var entityId = vertices[0],
25511         action = iD.actions.Split(entityId);
25512
25513     if (selectedIDs.length > 1) {
25514         action.limitWays(_.without(selectedIDs, entityId));
25515     }
25516
25517     var operation = function() {
25518         var annotation;
25519
25520         var ways = action.ways(context.graph());
25521         if (ways.length === 1) {
25522             annotation = t('operations.split.annotation.' + context.geometry(ways[0].id));
25523         } else {
25524             annotation = t('operations.split.annotation.multiple', {n: ways.length});
25525         }
25526
25527         var difference = context.perform(action, annotation);
25528         context.enter(iD.modes.Select(context, difference.extantIDs()));
25529     };
25530
25531     operation.available = function() {
25532         return vertices.length === 1;
25533     };
25534
25535     operation.disabled = function() {
25536         var reason;
25537         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25538             reason = 'connected_to_hidden';
25539         }
25540         return action.disabled(context.graph()) || reason;
25541     };
25542
25543     operation.tooltip = function() {
25544         var disable = operation.disabled();
25545         if (disable) {
25546             return t('operations.split.' + disable);
25547         }
25548
25549         var ways = action.ways(context.graph());
25550         if (ways.length === 1) {
25551             return t('operations.split.description.' + context.geometry(ways[0].id));
25552         } else {
25553             return t('operations.split.description.multiple');
25554         }
25555     };
25556
25557     operation.id = 'split';
25558     operation.keys = [t('operations.split.key')];
25559     operation.title = t('operations.split.title');
25560
25561     return operation;
25562 };
25563 iD.operations.Straighten = function(selectedIDs, context) {
25564     var entityId = selectedIDs[0],
25565         action = iD.actions.Straighten(entityId, context.projection);
25566
25567     function operation() {
25568         var annotation = t('operations.straighten.annotation');
25569         context.perform(action, annotation);
25570     }
25571
25572     operation.available = function() {
25573         var entity = context.entity(entityId);
25574         return selectedIDs.length === 1 &&
25575             entity.type === 'way' &&
25576             !entity.isClosed() &&
25577             _.uniq(entity.nodes).length > 2;
25578     };
25579
25580     operation.disabled = function() {
25581         var reason;
25582         if (context.hasHiddenConnections(entityId)) {
25583             reason = 'connected_to_hidden';
25584         }
25585         return action.disabled(context.graph()) || reason;
25586     };
25587
25588     operation.tooltip = function() {
25589         var disable = operation.disabled();
25590         return disable ?
25591             t('operations.straighten.' + disable) :
25592             t('operations.straighten.description');
25593     };
25594
25595     operation.id = 'straighten';
25596     operation.keys = [t('operations.straighten.key')];
25597     operation.title = t('operations.straighten.title');
25598
25599     return operation;
25600 };
25601 iD.Connection = function() {
25602     var event = d3.dispatch('authenticating', 'authenticated', 'auth', 'loading', 'loaded'),
25603         url = 'http://www.openstreetmap.org',
25604         connection = {},
25605         inflight = {},
25606         loadedTiles = {},
25607         tileZoom = 16,
25608         oauth = osmAuth({
25609             url: 'http://www.openstreetmap.org',
25610             oauth_consumer_key: '5A043yRSEugj4DJ5TljuapfnrflWDte8jTOcWLlT',
25611             oauth_secret: 'aB3jKq1TRsCOUrfOIZ6oQMEDmv2ptV76PA54NGLL',
25612             loading: authenticating,
25613             done: authenticated
25614         }),
25615         ndStr = 'nd',
25616         tagStr = 'tag',
25617         memberStr = 'member',
25618         nodeStr = 'node',
25619         wayStr = 'way',
25620         relationStr = 'relation',
25621         userDetails,
25622         off;
25623
25624
25625     connection.changesetURL = function(changesetId) {
25626         return url + '/changeset/' + changesetId;
25627     };
25628
25629     connection.changesetsURL = function(center, zoom) {
25630         var precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2));
25631         return url + '/history#map=' +
25632             Math.floor(zoom) + '/' +
25633             center[1].toFixed(precision) + '/' +
25634             center[0].toFixed(precision);
25635     };
25636
25637     connection.entityURL = function(entity) {
25638         return url + '/' + entity.type + '/' + entity.osmId();
25639     };
25640
25641     connection.userURL = function(username) {
25642         return url + '/user/' + username;
25643     };
25644
25645     connection.loadFromURL = function(url, callback) {
25646         function done(err, dom) {
25647             return callback(err, parse(dom));
25648         }
25649         return d3.xml(url).get(done);
25650     };
25651
25652     connection.loadEntity = function(id, callback) {
25653         var type = iD.Entity.id.type(id),
25654             osmID = iD.Entity.id.toOSM(id);
25655
25656         connection.loadFromURL(
25657             url + '/api/0.6/' + type + '/' + osmID + (type !== 'node' ? '/full' : ''),
25658             function(err, entities) {
25659                 if (callback) callback(err, {data: entities});
25660             });
25661     };
25662
25663     connection.loadMultiple = function(ids, callback) {
25664         _.each(_.groupBy(_.uniq(ids), iD.Entity.id.type), function(v, k) {
25665             var type = k + 's',
25666                 osmIDs = _.map(v, iD.Entity.id.toOSM);
25667
25668             _.each(_.chunk(osmIDs, 150), function(arr) {
25669                 connection.loadFromURL(
25670                     url + '/api/0.6/' + type + '?' + type + '=' + arr.join(),
25671                     function(err, entities) {
25672                         if (callback) callback(err, {data: entities});
25673                     });
25674             });
25675         });
25676     };
25677
25678     function authenticating() {
25679         event.authenticating();
25680     }
25681
25682     function authenticated() {
25683         event.authenticated();
25684     }
25685
25686     function getLoc(attrs) {
25687         var lon = attrs.lon && attrs.lon.value,
25688             lat = attrs.lat && attrs.lat.value;
25689         return [parseFloat(lon), parseFloat(lat)];
25690     }
25691
25692     function getNodes(obj) {
25693         var elems = obj.getElementsByTagName(ndStr),
25694             nodes = new Array(elems.length);
25695         for (var i = 0, l = elems.length; i < l; i++) {
25696             nodes[i] = 'n' + elems[i].attributes.ref.value;
25697         }
25698         return nodes;
25699     }
25700
25701     function getTags(obj) {
25702         var elems = obj.getElementsByTagName(tagStr),
25703             tags = {};
25704         for (var i = 0, l = elems.length; i < l; i++) {
25705             var attrs = elems[i].attributes;
25706             tags[attrs.k.value] = attrs.v.value;
25707         }
25708         return tags;
25709     }
25710
25711     function getMembers(obj) {
25712         var elems = obj.getElementsByTagName(memberStr),
25713             members = new Array(elems.length);
25714         for (var i = 0, l = elems.length; i < l; i++) {
25715             var attrs = elems[i].attributes;
25716             members[i] = {
25717                 id: attrs.type.value[0] + attrs.ref.value,
25718                 type: attrs.type.value,
25719                 role: attrs.role.value
25720             };
25721         }
25722         return members;
25723     }
25724
25725     function getVisible(attrs) {
25726         return (!attrs.visible || attrs.visible.value !== 'false');
25727     }
25728
25729     var parsers = {
25730         node: function nodeData(obj) {
25731             var attrs = obj.attributes;
25732             return new iD.Node({
25733                 id: iD.Entity.id.fromOSM(nodeStr, attrs.id.value),
25734                 loc: getLoc(attrs),
25735                 version: attrs.version.value,
25736                 user: attrs.user && attrs.user.value,
25737                 tags: getTags(obj),
25738                 visible: getVisible(attrs)
25739             });
25740         },
25741
25742         way: function wayData(obj) {
25743             var attrs = obj.attributes;
25744             return new iD.Way({
25745                 id: iD.Entity.id.fromOSM(wayStr, attrs.id.value),
25746                 version: attrs.version.value,
25747                 user: attrs.user && attrs.user.value,
25748                 tags: getTags(obj),
25749                 nodes: getNodes(obj),
25750                 visible: getVisible(attrs)
25751             });
25752         },
25753
25754         relation: function relationData(obj) {
25755             var attrs = obj.attributes;
25756             return new iD.Relation({
25757                 id: iD.Entity.id.fromOSM(relationStr, attrs.id.value),
25758                 version: attrs.version.value,
25759                 user: attrs.user && attrs.user.value,
25760                 tags: getTags(obj),
25761                 members: getMembers(obj),
25762                 visible: getVisible(attrs)
25763             });
25764         }
25765     };
25766
25767     function parse(dom) {
25768         if (!dom || !dom.childNodes) return;
25769
25770         var root = dom.childNodes[0],
25771             children = root.childNodes,
25772             entities = [];
25773
25774         for (var i = 0, l = children.length; i < l; i++) {
25775             var child = children[i],
25776                 parser = parsers[child.nodeName];
25777             if (parser) {
25778                 entities.push(parser(child));
25779             }
25780         }
25781
25782         return entities;
25783     }
25784
25785     connection.authenticated = function() {
25786         return oauth.authenticated();
25787     };
25788
25789     // Generate Changeset XML. Returns a string.
25790     connection.changesetJXON = function(tags) {
25791         return {
25792             osm: {
25793                 changeset: {
25794                     tag: _.map(tags, function(value, key) {
25795                         return { '@k': key, '@v': value };
25796                     }),
25797                     '@version': 0.3,
25798                     '@generator': 'iD'
25799                 }
25800             }
25801         };
25802     };
25803
25804     // Generate [osmChange](http://wiki.openstreetmap.org/wiki/OsmChange)
25805     // XML. Returns a string.
25806     connection.osmChangeJXON = function(changeset_id, changes) {
25807         function nest(x, order) {
25808             var groups = {};
25809             for (var i = 0; i < x.length; i++) {
25810                 var tagName = Object.keys(x[i])[0];
25811                 if (!groups[tagName]) groups[tagName] = [];
25812                 groups[tagName].push(x[i][tagName]);
25813             }
25814             var ordered = {};
25815             order.forEach(function(o) {
25816                 if (groups[o]) ordered[o] = groups[o];
25817             });
25818             return ordered;
25819         }
25820
25821         function rep(entity) {
25822             return entity.asJXON(changeset_id);
25823         }
25824
25825         return {
25826             osmChange: {
25827                 '@version': 0.3,
25828                 '@generator': 'iD',
25829                 'create': nest(changes.created.map(rep), ['node', 'way', 'relation']),
25830                 'modify': nest(changes.modified.map(rep), ['node', 'way', 'relation']),
25831                 'delete': _.extend(nest(changes.deleted.map(rep), ['relation', 'way', 'node']), {'@if-unused': true})
25832             }
25833         };
25834     };
25835
25836     connection.changesetTags = function(comment, imageryUsed) {
25837         var detected = iD.detect(),
25838             tags = {
25839                 created_by: 'iD ' + iD.version,
25840                 imagery_used: imageryUsed.join(';').substr(0, 255),
25841                 host: (window.location.origin + window.location.pathname).substr(0, 255),
25842                 locale: detected.locale,
25843             };
25844
25845         if (comment) {
25846             tags.comment = comment.substr(0, 255);
25847         }
25848
25849         return tags;
25850     };
25851
25852     connection.putChangeset = function(changes, comment, imageryUsed, callback) {
25853         oauth.xhr({
25854                 method: 'PUT',
25855                 path: '/api/0.6/changeset/create',
25856                 options: { header: { 'Content-Type': 'text/xml' } },
25857                 content: JXON.stringify(connection.changesetJXON(connection.changesetTags(comment, imageryUsed)))
25858             }, function(err, changeset_id) {
25859                 if (err) return callback(err);
25860                 oauth.xhr({
25861                     method: 'POST',
25862                     path: '/api/0.6/changeset/' + changeset_id + '/upload',
25863                     options: { header: { 'Content-Type': 'text/xml' } },
25864                     content: JXON.stringify(connection.osmChangeJXON(changeset_id, changes))
25865                 }, function(err) {
25866                     if (err) return callback(err);
25867                     // POST was successful, safe to call the callback.
25868                     // Still attempt to close changeset, but ignore response because #2667
25869                     // Add delay to allow for postgres replication #1646 #2678
25870                     window.setTimeout(function() { callback(null, changeset_id); }, 2500);
25871                     oauth.xhr({
25872                         method: 'PUT',
25873                         path: '/api/0.6/changeset/' + changeset_id + '/close'
25874                     }, d3.functor(true));
25875                 });
25876             });
25877     };
25878
25879     connection.userDetails = function(callback) {
25880         if (userDetails) {
25881             callback(undefined, userDetails);
25882             return;
25883         }
25884
25885         function done(err, user_details) {
25886             if (err) return callback(err);
25887
25888             var u = user_details.getElementsByTagName('user')[0],
25889                 img = u.getElementsByTagName('img'),
25890                 image_url = '';
25891
25892             if (img && img[0] && img[0].getAttribute('href')) {
25893                 image_url = img[0].getAttribute('href');
25894             }
25895
25896             userDetails = {
25897                 display_name: u.attributes.display_name.value,
25898                 image_url: image_url,
25899                 id: u.attributes.id.value
25900             };
25901
25902             callback(undefined, userDetails);
25903         }
25904
25905         oauth.xhr({ method: 'GET', path: '/api/0.6/user/details' }, done);
25906     };
25907
25908     connection.status = function(callback) {
25909         function done(capabilities) {
25910             var apiStatus = capabilities.getElementsByTagName('status');
25911             callback(undefined, apiStatus[0].getAttribute('api'));
25912         }
25913         d3.xml(url + '/api/capabilities').get()
25914             .on('load', done)
25915             .on('error', callback);
25916     };
25917
25918     function abortRequest(i) { i.abort(); }
25919
25920     connection.tileZoom = function(_) {
25921         if (!arguments.length) return tileZoom;
25922         tileZoom = _;
25923         return connection;
25924     };
25925
25926     connection.loadTiles = function(projection, dimensions, callback) {
25927
25928         if (off) return;
25929
25930         var s = projection.scale() * 2 * Math.PI,
25931             z = Math.max(Math.log(s) / Math.log(2) - 8, 0),
25932             ts = 256 * Math.pow(2, z - tileZoom),
25933             origin = [
25934                 s / 2 - projection.translate()[0],
25935                 s / 2 - projection.translate()[1]];
25936
25937         var tiles = d3.geo.tile()
25938             .scaleExtent([tileZoom, tileZoom])
25939             .scale(s)
25940             .size(dimensions)
25941             .translate(projection.translate())()
25942             .map(function(tile) {
25943                 var x = tile[0] * ts - origin[0],
25944                     y = tile[1] * ts - origin[1];
25945
25946                 return {
25947                     id: tile.toString(),
25948                     extent: iD.geo.Extent(
25949                         projection.invert([x, y + ts]),
25950                         projection.invert([x + ts, y]))
25951                 };
25952             });
25953
25954         function bboxUrl(tile) {
25955             return url + '/api/0.6/map?bbox=' + tile.extent.toParam();
25956         }
25957
25958         _.filter(inflight, function(v, i) {
25959             var wanted = _.find(tiles, function(tile) {
25960                 return i === tile.id;
25961             });
25962             if (!wanted) delete inflight[i];
25963             return !wanted;
25964         }).map(abortRequest);
25965
25966         tiles.forEach(function(tile) {
25967             var id = tile.id;
25968
25969             if (loadedTiles[id] || inflight[id]) return;
25970
25971             if (_.isEmpty(inflight)) {
25972                 event.loading();
25973             }
25974
25975             inflight[id] = connection.loadFromURL(bboxUrl(tile), function(err, parsed) {
25976                 loadedTiles[id] = true;
25977                 delete inflight[id];
25978
25979                 if (callback) callback(err, _.extend({data: parsed}, tile));
25980
25981                 if (_.isEmpty(inflight)) {
25982                     event.loaded();
25983                 }
25984             });
25985         });
25986     };
25987
25988     connection.switch = function(options) {
25989         url = options.url;
25990         oauth.options(_.extend({
25991             loading: authenticating,
25992             done: authenticated
25993         }, options));
25994         event.auth();
25995         connection.flush();
25996         return connection;
25997     };
25998
25999     connection.toggle = function(_) {
26000         off = !_;
26001         return connection;
26002     };
26003
26004     connection.flush = function() {
26005         userDetails = undefined;
26006         _.forEach(inflight, abortRequest);
26007         loadedTiles = {};
26008         inflight = {};
26009         return connection;
26010     };
26011
26012     connection.loadedTiles = function(_) {
26013         if (!arguments.length) return loadedTiles;
26014         loadedTiles = _;
26015         return connection;
26016     };
26017
26018     connection.logout = function() {
26019         userDetails = undefined;
26020         oauth.logout();
26021         event.auth();
26022         return connection;
26023     };
26024
26025     connection.authenticate = function(callback) {
26026         userDetails = undefined;
26027         function done(err, res) {
26028             event.auth();
26029             if (callback) callback(err, res);
26030         }
26031         return oauth.authenticate(done);
26032     };
26033
26034     return d3.rebind(connection, event, 'on');
26035 };
26036 /*
26037     iD.Difference represents the difference between two graphs.
26038     It knows how to calculate the set of entities that were
26039     created, modified, or deleted, and also contains the logic
26040     for recursively extending a difference to the complete set
26041     of entities that will require a redraw, taking into account
26042     child and parent relationships.
26043  */
26044 iD.Difference = function(base, head) {
26045     var changes = {}, length = 0;
26046
26047     function changed(h, b) {
26048         return h !== b && !_.isEqual(_.omit(h, 'v'), _.omit(b, 'v'));
26049     }
26050
26051     _.each(head.entities, function(h, id) {
26052         var b = base.entities[id];
26053         if (changed(h, b)) {
26054             changes[id] = {base: b, head: h};
26055             length++;
26056         }
26057     });
26058
26059     _.each(base.entities, function(b, id) {
26060         var h = head.entities[id];
26061         if (!changes[id] && changed(h, b)) {
26062             changes[id] = {base: b, head: h};
26063             length++;
26064         }
26065     });
26066
26067     function addParents(parents, result) {
26068         for (var i = 0; i < parents.length; i++) {
26069             var parent = parents[i];
26070
26071             if (parent.id in result)
26072                 continue;
26073
26074             result[parent.id] = parent;
26075             addParents(head.parentRelations(parent), result);
26076         }
26077     }
26078
26079     var difference = {};
26080
26081     difference.length = function() {
26082         return length;
26083     };
26084
26085     difference.changes = function() {
26086         return changes;
26087     };
26088
26089     difference.extantIDs = function() {
26090         var result = [];
26091         _.each(changes, function(change, id) {
26092             if (change.head) result.push(id);
26093         });
26094         return result;
26095     };
26096
26097     difference.modified = function() {
26098         var result = [];
26099         _.each(changes, function(change) {
26100             if (change.base && change.head) result.push(change.head);
26101         });
26102         return result;
26103     };
26104
26105     difference.created = function() {
26106         var result = [];
26107         _.each(changes, function(change) {
26108             if (!change.base && change.head) result.push(change.head);
26109         });
26110         return result;
26111     };
26112
26113     difference.deleted = function() {
26114         var result = [];
26115         _.each(changes, function(change) {
26116             if (change.base && !change.head) result.push(change.base);
26117         });
26118         return result;
26119     };
26120
26121     difference.summary = function() {
26122         var relevant = {};
26123
26124         function addEntity(entity, graph, changeType) {
26125             relevant[entity.id] = {
26126                 entity: entity,
26127                 graph: graph,
26128                 changeType: changeType
26129             };
26130         }
26131
26132         function addParents(entity) {
26133             var parents = head.parentWays(entity);
26134             for (var j = parents.length - 1; j >= 0; j--) {
26135                 var parent = parents[j];
26136                 if (!(parent.id in relevant)) addEntity(parent, head, 'modified');
26137             }
26138         }
26139
26140         _.each(changes, function(change) {
26141             if (change.head && change.head.geometry(head) !== 'vertex') {
26142                 addEntity(change.head, head, change.base ? 'modified' : 'created');
26143
26144             } else if (change.base && change.base.geometry(base) !== 'vertex') {
26145                 addEntity(change.base, base, 'deleted');
26146
26147             } else if (change.base && change.head) { // modified vertex
26148                 var moved    = !_.isEqual(change.base.loc,  change.head.loc),
26149                     retagged = !_.isEqual(change.base.tags, change.head.tags);
26150
26151                 if (moved) {
26152                     addParents(change.head);
26153                 }
26154
26155                 if (retagged || (moved && change.head.hasInterestingTags())) {
26156                     addEntity(change.head, head, 'modified');
26157                 }
26158
26159             } else if (change.head && change.head.hasInterestingTags()) { // created vertex
26160                 addEntity(change.head, head, 'created');
26161
26162             } else if (change.base && change.base.hasInterestingTags()) { // deleted vertex
26163                 addEntity(change.base, base, 'deleted');
26164             }
26165         });
26166
26167         return d3.values(relevant);
26168     };
26169
26170     difference.complete = function(extent) {
26171         var result = {}, id, change;
26172
26173         for (id in changes) {
26174             change = changes[id];
26175
26176             var h = change.head,
26177                 b = change.base,
26178                 entity = h || b;
26179
26180             if (extent &&
26181                 (!h || !h.intersects(extent, head)) &&
26182                 (!b || !b.intersects(extent, base)))
26183                 continue;
26184
26185             result[id] = h;
26186
26187             if (entity.type === 'way') {
26188                 var nh = h ? h.nodes : [],
26189                     nb = b ? b.nodes : [],
26190                     diff, i;
26191
26192                 diff = _.difference(nh, nb);
26193                 for (i = 0; i < diff.length; i++) {
26194                     result[diff[i]] = head.hasEntity(diff[i]);
26195                 }
26196
26197                 diff = _.difference(nb, nh);
26198                 for (i = 0; i < diff.length; i++) {
26199                     result[diff[i]] = head.hasEntity(diff[i]);
26200                 }
26201             }
26202
26203             addParents(head.parentWays(entity), result);
26204             addParents(head.parentRelations(entity), result);
26205         }
26206
26207         return result;
26208     };
26209
26210     return difference;
26211 };
26212 iD.Entity = function(attrs) {
26213     // For prototypal inheritance.
26214     if (this instanceof iD.Entity) return;
26215
26216     // Create the appropriate subtype.
26217     if (attrs && attrs.type) {
26218         return iD.Entity[attrs.type].apply(this, arguments);
26219     } else if (attrs && attrs.id) {
26220         return iD.Entity[iD.Entity.id.type(attrs.id)].apply(this, arguments);
26221     }
26222
26223     // Initialize a generic Entity (used only in tests).
26224     return (new iD.Entity()).initialize(arguments);
26225 };
26226
26227 iD.Entity.id = function(type) {
26228     return iD.Entity.id.fromOSM(type, iD.Entity.id.next[type]--);
26229 };
26230
26231 iD.Entity.id.next = {node: -1, way: -1, relation: -1};
26232
26233 iD.Entity.id.fromOSM = function(type, id) {
26234     return type[0] + id;
26235 };
26236
26237 iD.Entity.id.toOSM = function(id) {
26238     return id.slice(1);
26239 };
26240
26241 iD.Entity.id.type = function(id) {
26242     return {'n': 'node', 'w': 'way', 'r': 'relation'}[id[0]];
26243 };
26244
26245 // A function suitable for use as the second argument to d3.selection#data().
26246 iD.Entity.key = function(entity) {
26247     return entity.id + 'v' + (entity.v || 0);
26248 };
26249
26250 iD.Entity.prototype = {
26251     tags: {},
26252
26253     initialize: function(sources) {
26254         for (var i = 0; i < sources.length; ++i) {
26255             var source = sources[i];
26256             for (var prop in source) {
26257                 if (Object.prototype.hasOwnProperty.call(source, prop)) {
26258                     if (source[prop] === undefined) {
26259                         delete this[prop];
26260                     } else {
26261                         this[prop] = source[prop];
26262                     }
26263                 }
26264             }
26265         }
26266
26267         if (!this.id && this.type) {
26268             this.id = iD.Entity.id(this.type);
26269         }
26270         if (!this.hasOwnProperty('visible')) {
26271             this.visible = true;
26272         }
26273
26274         if (iD.debug) {
26275             Object.freeze(this);
26276             Object.freeze(this.tags);
26277
26278             if (this.loc) Object.freeze(this.loc);
26279             if (this.nodes) Object.freeze(this.nodes);
26280             if (this.members) Object.freeze(this.members);
26281         }
26282
26283         return this;
26284     },
26285
26286     copy: function() {
26287         // Returns an array so that we can support deep copying ways and relations.
26288         // The first array element will contain this.copy, followed by any descendants.
26289         return [iD.Entity(this, {id: undefined, user: undefined, version: undefined})];
26290     },
26291
26292     osmId: function() {
26293         return iD.Entity.id.toOSM(this.id);
26294     },
26295
26296     isNew: function() {
26297         return this.osmId() < 0;
26298     },
26299
26300     update: function(attrs) {
26301         return iD.Entity(this, attrs, {v: 1 + (this.v || 0)});
26302     },
26303
26304     mergeTags: function(tags) {
26305         var merged = _.clone(this.tags), changed = false;
26306         for (var k in tags) {
26307             var t1 = merged[k],
26308                 t2 = tags[k];
26309             if (!t1) {
26310                 changed = true;
26311                 merged[k] = t2;
26312             } else if (t1 !== t2) {
26313                 changed = true;
26314                 merged[k] = _.union(t1.split(/;\s*/), t2.split(/;\s*/)).join(';');
26315             }
26316         }
26317         return changed ? this.update({tags: merged}) : this;
26318     },
26319
26320     intersects: function(extent, resolver) {
26321         return this.extent(resolver).intersects(extent);
26322     },
26323
26324     isUsed: function(resolver) {
26325         return _.without(Object.keys(this.tags), 'area').length > 0 ||
26326             resolver.parentRelations(this).length > 0;
26327     },
26328
26329     hasInterestingTags: function() {
26330         return _.keys(this.tags).some(function(key) {
26331             return key !== 'attribution' &&
26332                 key !== 'created_by' &&
26333                 key !== 'source' &&
26334                 key !== 'odbl' &&
26335                 key.indexOf('tiger:') !== 0;
26336         });
26337     },
26338
26339     isHighwayIntersection: function() {
26340         return false;
26341     },
26342
26343     deprecatedTags: function() {
26344         var tags = _.pairs(this.tags);
26345         var deprecated = {};
26346
26347         iD.data.deprecated.forEach(function(d) {
26348             var match = _.pairs(d.old)[0];
26349             tags.forEach(function(t) {
26350                 if (t[0] === match[0] &&
26351                     (t[1] === match[1] || match[1] === '*')) {
26352                     deprecated[t[0]] = t[1];
26353                 }
26354             });
26355         });
26356
26357         return deprecated;
26358     }
26359 };
26360 iD.Graph = function(other, mutable) {
26361     if (!(this instanceof iD.Graph)) return new iD.Graph(other, mutable);
26362
26363     if (other instanceof iD.Graph) {
26364         var base = other.base();
26365         this.entities = _.assign(Object.create(base.entities), other.entities);
26366         this._parentWays = _.assign(Object.create(base.parentWays), other._parentWays);
26367         this._parentRels = _.assign(Object.create(base.parentRels), other._parentRels);
26368
26369     } else {
26370         this.entities = Object.create({});
26371         this._parentWays = Object.create({});
26372         this._parentRels = Object.create({});
26373         this.rebase(other || [], [this]);
26374     }
26375
26376     this.transients = {};
26377     this._childNodes = {};
26378     this.frozen = !mutable;
26379 };
26380
26381 iD.Graph.prototype = {
26382     hasEntity: function(id) {
26383         return this.entities[id];
26384     },
26385
26386     entity: function(id) {
26387         var entity = this.entities[id];
26388         if (!entity) {
26389             throw new Error('entity ' + id + ' not found');
26390         }
26391         return entity;
26392     },
26393
26394     transient: function(entity, key, fn) {
26395         var id = entity.id,
26396             transients = this.transients[id] ||
26397             (this.transients[id] = {});
26398
26399         if (transients[key] !== undefined) {
26400             return transients[key];
26401         }
26402
26403         transients[key] = fn.call(entity);
26404
26405         return transients[key];
26406     },
26407
26408     parentWays: function(entity) {
26409         var parents = this._parentWays[entity.id],
26410             result = [];
26411
26412         if (parents) {
26413             for (var i = 0; i < parents.length; i++) {
26414                 result.push(this.entity(parents[i]));
26415             }
26416         }
26417         return result;
26418     },
26419
26420     isPoi: function(entity) {
26421         var parentWays = this._parentWays[entity.id];
26422         return !parentWays || parentWays.length === 0;
26423     },
26424
26425     isShared: function(entity) {
26426         var parentWays = this._parentWays[entity.id];
26427         return parentWays && parentWays.length > 1;
26428     },
26429
26430     parentRelations: function(entity) {
26431         var parents = this._parentRels[entity.id],
26432             result = [];
26433
26434         if (parents) {
26435             for (var i = 0; i < parents.length; i++) {
26436                 result.push(this.entity(parents[i]));
26437             }
26438         }
26439         return result;
26440     },
26441
26442     childNodes: function(entity) {
26443         if (this._childNodes[entity.id])
26444             return this._childNodes[entity.id];
26445
26446         var nodes = [];
26447         if (entity.nodes) {
26448             for (var i = 0; i < entity.nodes.length; i++) {
26449                 nodes[i] = this.entity(entity.nodes[i]);
26450             }
26451         }
26452
26453         if (iD.debug) Object.freeze(nodes);
26454
26455         this._childNodes[entity.id] = nodes;
26456         return this._childNodes[entity.id];
26457     },
26458
26459     base: function() {
26460         return {
26461             'entities': iD.util.getPrototypeOf(this.entities),
26462             'parentWays': iD.util.getPrototypeOf(this._parentWays),
26463             'parentRels': iD.util.getPrototypeOf(this._parentRels)
26464         };
26465     },
26466
26467     // Unlike other graph methods, rebase mutates in place. This is because it
26468     // is used only during the history operation that merges newly downloaded
26469     // data into each state. To external consumers, it should appear as if the
26470     // graph always contained the newly downloaded data.
26471     rebase: function(entities, stack, force) {
26472         var base = this.base(),
26473             i, j, k, id;
26474
26475         for (i = 0; i < entities.length; i++) {
26476             var entity = entities[i];
26477
26478             if (!entity.visible || (!force && base.entities[entity.id]))
26479                 continue;
26480
26481             // Merging data into the base graph
26482             base.entities[entity.id] = entity;
26483             this._updateCalculated(undefined, entity, base.parentWays, base.parentRels);
26484
26485             // Restore provisionally-deleted nodes that are discovered to have an extant parent
26486             if (entity.type === 'way') {
26487                 for (j = 0; j < entity.nodes.length; j++) {
26488                     id = entity.nodes[j];
26489                     for (k = 1; k < stack.length; k++) {
26490                         var ents = stack[k].entities;
26491                         if (ents.hasOwnProperty(id) && ents[id] === undefined) {
26492                             delete ents[id];
26493                         }
26494                     }
26495                 }
26496             }
26497         }
26498
26499         for (i = 0; i < stack.length; i++) {
26500             stack[i]._updateRebased();
26501         }
26502     },
26503
26504     _updateRebased: function() {
26505         var base = this.base(),
26506             i, k, child, id, keys;
26507
26508         keys = Object.keys(this._parentWays);
26509         for (i = 0; i < keys.length; i++) {
26510             child = keys[i];
26511             if (base.parentWays[child]) {
26512                 for (k = 0; k < base.parentWays[child].length; k++) {
26513                     id = base.parentWays[child][k];
26514                     if (!this.entities.hasOwnProperty(id) && !_.contains(this._parentWays[child], id)) {
26515                         this._parentWays[child].push(id);
26516                     }
26517                 }
26518             }
26519         }
26520
26521         keys = Object.keys(this._parentRels);
26522         for (i = 0; i < keys.length; i++) {
26523             child = keys[i];
26524             if (base.parentRels[child]) {
26525                 for (k = 0; k < base.parentRels[child].length; k++) {
26526                     id = base.parentRels[child][k];
26527                     if (!this.entities.hasOwnProperty(id) && !_.contains(this._parentRels[child], id)) {
26528                         this._parentRels[child].push(id);
26529                     }
26530                 }
26531             }
26532         }
26533
26534         this.transients = {};
26535
26536         // this._childNodes is not updated, under the assumption that
26537         // ways are always downloaded with their child nodes.
26538     },
26539
26540     // Updates calculated properties (parentWays, parentRels) for the specified change
26541     _updateCalculated: function(oldentity, entity, parentWays, parentRels) {
26542
26543         parentWays = parentWays || this._parentWays;
26544         parentRels = parentRels || this._parentRels;
26545
26546         var type = entity && entity.type || oldentity && oldentity.type,
26547             removed, added, ways, rels, i;
26548
26549
26550         if (type === 'way') {
26551
26552             // Update parentWays
26553             if (oldentity && entity) {
26554                 removed = _.difference(oldentity.nodes, entity.nodes);
26555                 added = _.difference(entity.nodes, oldentity.nodes);
26556             } else if (oldentity) {
26557                 removed = oldentity.nodes;
26558                 added = [];
26559             } else if (entity) {
26560                 removed = [];
26561                 added = entity.nodes;
26562             }
26563             for (i = 0; i < removed.length; i++) {
26564                 parentWays[removed[i]] = _.without(parentWays[removed[i]], oldentity.id);
26565             }
26566             for (i = 0; i < added.length; i++) {
26567                 ways = _.without(parentWays[added[i]], entity.id);
26568                 ways.push(entity.id);
26569                 parentWays[added[i]] = ways;
26570             }
26571
26572         } else if (type === 'relation') {
26573
26574             // Update parentRels
26575             if (oldentity && entity) {
26576                 removed = _.difference(oldentity.members, entity.members);
26577                 added = _.difference(entity.members, oldentity);
26578             } else if (oldentity) {
26579                 removed = oldentity.members;
26580                 added = [];
26581             } else if (entity) {
26582                 removed = [];
26583                 added = entity.members;
26584             }
26585             for (i = 0; i < removed.length; i++) {
26586                 parentRels[removed[i].id] = _.without(parentRels[removed[i].id], oldentity.id);
26587             }
26588             for (i = 0; i < added.length; i++) {
26589                 rels = _.without(parentRels[added[i].id], entity.id);
26590                 rels.push(entity.id);
26591                 parentRels[added[i].id] = rels;
26592             }
26593         }
26594     },
26595
26596     replace: function(entity) {
26597         if (this.entities[entity.id] === entity)
26598             return this;
26599
26600         return this.update(function() {
26601             this._updateCalculated(this.entities[entity.id], entity);
26602             this.entities[entity.id] = entity;
26603         });
26604     },
26605
26606     remove: function(entity) {
26607         return this.update(function() {
26608             this._updateCalculated(entity, undefined);
26609             this.entities[entity.id] = undefined;
26610         });
26611     },
26612
26613     revert: function(id) {
26614         var baseEntity = this.base().entities[id],
26615             headEntity = this.entities[id];
26616
26617         if (headEntity === baseEntity)
26618             return this;
26619
26620         return this.update(function() {
26621             this._updateCalculated(headEntity, baseEntity);
26622             delete this.entities[id];
26623         });
26624     },
26625
26626     update: function() {
26627         var graph = this.frozen ? iD.Graph(this, true) : this;
26628
26629         for (var i = 0; i < arguments.length; i++) {
26630             arguments[i].call(graph, graph);
26631         }
26632
26633         if (this.frozen) graph.frozen = true;
26634
26635         return graph;
26636     },
26637
26638     // Obliterates any existing entities
26639     load: function(entities) {
26640         var base = this.base();
26641         this.entities = Object.create(base.entities);
26642
26643         for (var i in entities) {
26644             this.entities[i] = entities[i];
26645             this._updateCalculated(base.entities[i], this.entities[i]);
26646         }
26647
26648         return this;
26649     }
26650 };
26651 iD.History = function(context) {
26652     var stack, index, tree,
26653         imageryUsed = ['Bing'],
26654         dispatch = d3.dispatch('change', 'undone', 'redone'),
26655         lock = iD.util.SessionMutex('lock');
26656
26657     function perform(actions) {
26658         actions = Array.prototype.slice.call(actions);
26659
26660         var annotation;
26661
26662         if (!_.isFunction(_.last(actions))) {
26663             annotation = actions.pop();
26664         }
26665
26666         var graph = stack[index].graph;
26667         for (var i = 0; i < actions.length; i++) {
26668             graph = actions[i](graph);
26669         }
26670
26671         return {
26672             graph: graph,
26673             annotation: annotation,
26674             imageryUsed: imageryUsed
26675         };
26676     }
26677
26678     function change(previous) {
26679         var difference = iD.Difference(previous, history.graph());
26680         dispatch.change(difference);
26681         return difference;
26682     }
26683
26684     // iD uses namespaced keys so multiple installations do not conflict
26685     function getKey(n) {
26686         return 'iD_' + window.location.origin + '_' + n;
26687     }
26688
26689     var history = {
26690         graph: function() {
26691             return stack[index].graph;
26692         },
26693
26694         base: function() {
26695             return stack[0].graph;
26696         },
26697
26698         merge: function(entities, extent) {
26699             stack[0].graph.rebase(entities, _.pluck(stack, 'graph'), false);
26700             tree.rebase(entities, false);
26701
26702             dispatch.change(undefined, extent);
26703         },
26704
26705         perform: function() {
26706             var previous = stack[index].graph;
26707
26708             stack = stack.slice(0, index + 1);
26709             stack.push(perform(arguments));
26710             index++;
26711
26712             return change(previous);
26713         },
26714
26715         replace: function() {
26716             var previous = stack[index].graph;
26717
26718             // assert(index == stack.length - 1)
26719             stack[index] = perform(arguments);
26720
26721             return change(previous);
26722         },
26723
26724         pop: function() {
26725             var previous = stack[index].graph;
26726
26727             if (index > 0) {
26728                 index--;
26729                 stack.pop();
26730                 return change(previous);
26731             }
26732         },
26733
26734         // Same as calling pop and then perform
26735         overwrite: function() {
26736             var previous = stack[index].graph;
26737
26738             if (index > 0) {
26739                 index--;
26740                 stack.pop();
26741             }
26742             stack = stack.slice(0, index + 1);
26743             stack.push(perform(arguments));
26744             index++;
26745
26746             return change(previous);
26747         },
26748
26749         undo: function() {
26750             var previous = stack[index].graph;
26751
26752             // Pop to the next annotated state.
26753             while (index > 0) {
26754                 index--;
26755                 if (stack[index].annotation) break;
26756             }
26757
26758             dispatch.undone();
26759             return change(previous);
26760         },
26761
26762         redo: function() {
26763             var previous = stack[index].graph;
26764
26765             while (index < stack.length - 1) {
26766                 index++;
26767                 if (stack[index].annotation) break;
26768             }
26769
26770             dispatch.redone();
26771             return change(previous);
26772         },
26773
26774         undoAnnotation: function() {
26775             var i = index;
26776             while (i >= 0) {
26777                 if (stack[i].annotation) return stack[i].annotation;
26778                 i--;
26779             }
26780         },
26781
26782         redoAnnotation: function() {
26783             var i = index + 1;
26784             while (i <= stack.length - 1) {
26785                 if (stack[i].annotation) return stack[i].annotation;
26786                 i++;
26787             }
26788         },
26789
26790         intersects: function(extent) {
26791             return tree.intersects(extent, stack[index].graph);
26792         },
26793
26794         difference: function() {
26795             var base = stack[0].graph,
26796                 head = stack[index].graph;
26797             return iD.Difference(base, head);
26798         },
26799
26800         changes: function(action) {
26801             var base = stack[0].graph,
26802                 head = stack[index].graph;
26803
26804             if (action) {
26805                 head = action(head);
26806             }
26807
26808             var difference = iD.Difference(base, head);
26809
26810             return {
26811                 modified: difference.modified(),
26812                 created: difference.created(),
26813                 deleted: difference.deleted()
26814             };
26815         },
26816
26817         hasChanges: function() {
26818             return this.difference().length() > 0;
26819         },
26820
26821         imageryUsed: function(sources) {
26822             if (sources) {
26823                 imageryUsed = sources;
26824                 return history;
26825             } else {
26826                 return _(stack.slice(1, index + 1))
26827                     .pluck('imageryUsed')
26828                     .flatten()
26829                     .unique()
26830                     .without(undefined, 'Custom')
26831                     .value();
26832             }
26833         },
26834
26835         reset: function() {
26836             stack = [{graph: iD.Graph()}];
26837             index = 0;
26838             tree = iD.Tree(stack[0].graph);
26839             dispatch.change();
26840             return history;
26841         },
26842
26843         toJSON: function() {
26844             if (stack.length <= 1) return;
26845
26846             var allEntities = {},
26847                 baseEntities = {},
26848                 base = stack[0];
26849
26850             var s = stack.map(function(i) {
26851                 var modified = [], deleted = [];
26852
26853                 _.forEach(i.graph.entities, function(entity, id) {
26854                     if (entity) {
26855                         var key = iD.Entity.key(entity);
26856                         allEntities[key] = entity;
26857                         modified.push(key);
26858                     } else {
26859                         deleted.push(id);
26860                     }
26861
26862                     // make sure that the originals of changed or deleted entities get merged
26863                     // into the base of the stack after restoring the data from JSON.
26864                     if (id in base.graph.entities) {
26865                         baseEntities[id] = base.graph.entities[id];
26866                     }
26867                     // get originals of parent entities too
26868                     _.forEach(base.graph._parentWays[id], function(parentId) {
26869                         if (parentId in base.graph.entities) {
26870                             baseEntities[parentId] = base.graph.entities[parentId];
26871                         }
26872                     });
26873                 });
26874
26875                 var x = {};
26876
26877                 if (modified.length) x.modified = modified;
26878                 if (deleted.length) x.deleted = deleted;
26879                 if (i.imageryUsed) x.imageryUsed = i.imageryUsed;
26880                 if (i.annotation) x.annotation = i.annotation;
26881
26882                 return x;
26883             });
26884
26885             return JSON.stringify({
26886                 version: 3,
26887                 entities: _.values(allEntities),
26888                 baseEntities: _.values(baseEntities),
26889                 stack: s,
26890                 nextIDs: iD.Entity.id.next,
26891                 index: index
26892             });
26893         },
26894
26895         fromJSON: function(json) {
26896             var h = JSON.parse(json);
26897
26898             iD.Entity.id.next = h.nextIDs;
26899             index = h.index;
26900
26901             if (h.version === 2 || h.version === 3) {
26902                 var allEntities = {};
26903
26904                 h.entities.forEach(function(entity) {
26905                     allEntities[iD.Entity.key(entity)] = iD.Entity(entity);
26906                 });
26907
26908                 if (h.version === 3) {
26909                     // this merges originals for changed entities into the base of
26910                     // the stack even if the current stack doesn't have them (for
26911                     // example when iD has been restarted in a different region)
26912                     var baseEntities = h.baseEntities.map(function(entity) {
26913                         return iD.Entity(entity);
26914                     });
26915                     stack[0].graph.rebase(baseEntities, _.pluck(stack, 'graph'), true);
26916                     tree.rebase(baseEntities, true);
26917                 }
26918
26919                 stack = h.stack.map(function(d) {
26920                     var entities = {}, entity;
26921
26922                     if (d.modified) {
26923                         d.modified.forEach(function(key) {
26924                             entity = allEntities[key];
26925                             entities[entity.id] = entity;
26926                         });
26927                     }
26928
26929                     if (d.deleted) {
26930                         d.deleted.forEach(function(id) {
26931                             entities[id] = undefined;
26932                         });
26933                     }
26934
26935                     return {
26936                         graph: iD.Graph(stack[0].graph).load(entities),
26937                         annotation: d.annotation,
26938                         imageryUsed: d.imageryUsed
26939                     };
26940                 });
26941             } else { // original version
26942                 stack = h.stack.map(function(d) {
26943                     var entities = {};
26944
26945                     for (var i in d.entities) {
26946                         var entity = d.entities[i];
26947                         entities[i] = entity === 'undefined' ? undefined : iD.Entity(entity);
26948                     }
26949
26950                     d.graph = iD.Graph(stack[0].graph).load(entities);
26951                     return d;
26952                 });
26953             }
26954
26955             dispatch.change();
26956
26957             return history;
26958         },
26959
26960         save: function() {
26961             if (lock.locked()) context.storage(getKey('saved_history'), history.toJSON() || null);
26962             return history;
26963         },
26964
26965         clearSaved: function() {
26966             if (lock.locked()) context.storage(getKey('saved_history'), null);
26967             return history;
26968         },
26969
26970         lock: function() {
26971             return lock.lock();
26972         },
26973
26974         unlock: function() {
26975             lock.unlock();
26976         },
26977
26978         // is iD not open in another window and it detects that
26979         // there's a history stored in localStorage that's recoverable?
26980         restorableChanges: function() {
26981             return lock.locked() && !!context.storage(getKey('saved_history'));
26982         },
26983
26984         // load history from a version stored in localStorage
26985         restore: function() {
26986             if (!lock.locked()) return;
26987
26988             var json = context.storage(getKey('saved_history'));
26989             if (json) history.fromJSON(json);
26990         },
26991
26992         _getKey: getKey
26993
26994     };
26995
26996     history.reset();
26997
26998     return d3.rebind(history, dispatch, 'on');
26999 };
27000 iD.Node = iD.Entity.node = function iD_Node() {
27001     if (!(this instanceof iD_Node)) {
27002         return (new iD_Node()).initialize(arguments);
27003     } else if (arguments.length) {
27004         this.initialize(arguments);
27005     }
27006 };
27007
27008 iD.Node.prototype = Object.create(iD.Entity.prototype);
27009
27010 _.extend(iD.Node.prototype, {
27011     type: 'node',
27012
27013     extent: function() {
27014         return new iD.geo.Extent(this.loc);
27015     },
27016
27017     geometry: function(graph) {
27018         return graph.transient(this, 'geometry', function() {
27019             return graph.isPoi(this) ? 'point' : 'vertex';
27020         });
27021     },
27022
27023     move: function(loc) {
27024         return this.update({loc: loc});
27025     },
27026
27027     isIntersection: function(resolver) {
27028         return resolver.transient(this, 'isIntersection', function() {
27029             return resolver.parentWays(this).filter(function(parent) {
27030                 return (parent.tags.highway ||
27031                     parent.tags.waterway ||
27032                     parent.tags.railway ||
27033                     parent.tags.aeroway) &&
27034                     parent.geometry(resolver) === 'line';
27035             }).length > 1;
27036         });
27037     },
27038
27039     isHighwayIntersection: function(resolver) {
27040         return resolver.transient(this, 'isHighwayIntersection', function() {
27041             return resolver.parentWays(this).filter(function(parent) {
27042                 return parent.tags.highway && parent.geometry(resolver) === 'line';
27043             }).length > 1;
27044         });
27045     },
27046
27047     asJXON: function(changeset_id) {
27048         var r = {
27049             node: {
27050                 '@id': this.osmId(),
27051                 '@lon': this.loc[0],
27052                 '@lat': this.loc[1],
27053                 '@version': (this.version || 0),
27054                 tag: _.map(this.tags, function(v, k) {
27055                     return { keyAttributes: { k: k, v: v } };
27056                 })
27057             }
27058         };
27059         if (changeset_id) r.node['@changeset'] = changeset_id;
27060         return r;
27061     },
27062
27063     asGeoJSON: function() {
27064         return {
27065             type: 'Point',
27066             coordinates: this.loc
27067         };
27068     }
27069 });
27070 iD.oneWayTags = {
27071     'aerialway': {
27072         'chair_lift': true,
27073         'mixed_lift': true,
27074         't-bar': true,
27075         'j-bar': true,
27076         'platter': true,
27077         'rope_tow': true,
27078         'magic_carpet': true,
27079         'yes': true
27080     },
27081     'highway': {
27082         'motorway': true,
27083         'motorway_link': true
27084     },
27085     'junction': {
27086         'roundabout': true
27087     },
27088     'man_made': {
27089         'piste:halfpipe': true
27090     },
27091     'piste:type': {
27092         'downhill': true,
27093         'sled': true,
27094         'yes': true
27095     },
27096     'waterway': {
27097         'river': true,
27098         'stream': true
27099     }
27100 };
27101 iD.Relation = iD.Entity.relation = function iD_Relation() {
27102     if (!(this instanceof iD_Relation)) {
27103         return (new iD_Relation()).initialize(arguments);
27104     } else if (arguments.length) {
27105         this.initialize(arguments);
27106     }
27107 };
27108
27109 iD.Relation.prototype = Object.create(iD.Entity.prototype);
27110
27111 iD.Relation.creationOrder = function(a, b) {
27112     var aId = parseInt(iD.Entity.id.toOSM(a.id), 10);
27113     var bId = parseInt(iD.Entity.id.toOSM(b.id), 10);
27114
27115     if (aId < 0 || bId < 0) return aId - bId;
27116     return bId - aId;
27117 };
27118
27119 _.extend(iD.Relation.prototype, {
27120     type: 'relation',
27121     members: [],
27122
27123     copy: function(deep, resolver, replacements) {
27124         var copy = iD.Entity.prototype.copy.call(this);
27125         if (!deep || !resolver || !this.isComplete(resolver)) {
27126             return copy;
27127         }
27128
27129         var members = [],
27130             i, oldmember, oldid, newid, children;
27131
27132         replacements = replacements || {};
27133         replacements[this.id] = copy[0].id;
27134
27135         for (i = 0; i < this.members.length; i++) {
27136             oldmember = this.members[i];
27137             oldid = oldmember.id;
27138             newid = replacements[oldid];
27139             if (!newid) {
27140                 children = resolver.entity(oldid).copy(true, resolver, replacements);
27141                 newid = replacements[oldid] = children[0].id;
27142                 copy = copy.concat(children);
27143             }
27144             members.push({id: newid, type: oldmember.type, role: oldmember.role});
27145         }
27146
27147         copy[0] = copy[0].update({members: members});
27148         return copy;
27149     },
27150
27151     extent: function(resolver, memo) {
27152         return resolver.transient(this, 'extent', function() {
27153             if (memo && memo[this.id]) return iD.geo.Extent();
27154             memo = memo || {};
27155             memo[this.id] = true;
27156
27157             var extent = iD.geo.Extent();
27158             for (var i = 0; i < this.members.length; i++) {
27159                 var member = resolver.hasEntity(this.members[i].id);
27160                 if (member) {
27161                     extent._extend(member.extent(resolver, memo));
27162                 }
27163             }
27164             return extent;
27165         });
27166     },
27167
27168     geometry: function(graph) {
27169         return graph.transient(this, 'geometry', function() {
27170             return this.isMultipolygon() ? 'area' : 'relation';
27171         });
27172     },
27173
27174     isDegenerate: function() {
27175         return this.members.length === 0;
27176     },
27177
27178     // Return an array of members, each extended with an 'index' property whose value
27179     // is the member index.
27180     indexedMembers: function() {
27181         var result = new Array(this.members.length);
27182         for (var i = 0; i < this.members.length; i++) {
27183             result[i] = _.extend({}, this.members[i], {index: i});
27184         }
27185         return result;
27186     },
27187
27188     // Return the first member with the given role. A copy of the member object
27189     // is returned, extended with an 'index' property whose value is the member index.
27190     memberByRole: function(role) {
27191         for (var i = 0; i < this.members.length; i++) {
27192             if (this.members[i].role === role) {
27193                 return _.extend({}, this.members[i], {index: i});
27194             }
27195         }
27196     },
27197
27198     // Return the first member with the given id. A copy of the member object
27199     // is returned, extended with an 'index' property whose value is the member index.
27200     memberById: function(id) {
27201         for (var i = 0; i < this.members.length; i++) {
27202             if (this.members[i].id === id) {
27203                 return _.extend({}, this.members[i], {index: i});
27204             }
27205         }
27206     },
27207
27208     // Return the first member with the given id and role. A copy of the member object
27209     // is returned, extended with an 'index' property whose value is the member index.
27210     memberByIdAndRole: function(id, role) {
27211         for (var i = 0; i < this.members.length; i++) {
27212             if (this.members[i].id === id && this.members[i].role === role) {
27213                 return _.extend({}, this.members[i], {index: i});
27214             }
27215         }
27216     },
27217
27218     addMember: function(member, index) {
27219         var members = this.members.slice();
27220         members.splice(index === undefined ? members.length : index, 0, member);
27221         return this.update({members: members});
27222     },
27223
27224     updateMember: function(member, index) {
27225         var members = this.members.slice();
27226         members.splice(index, 1, _.extend({}, members[index], member));
27227         return this.update({members: members});
27228     },
27229
27230     removeMember: function(index) {
27231         var members = this.members.slice();
27232         members.splice(index, 1);
27233         return this.update({members: members});
27234     },
27235
27236     removeMembersWithID: function(id) {
27237         var members = _.reject(this.members, function(m) { return m.id === id; });
27238         return this.update({members: members});
27239     },
27240
27241     // Wherever a member appears with id `needle.id`, replace it with a member
27242     // with id `replacement.id`, type `replacement.type`, and the original role,
27243     // unless a member already exists with that id and role. Return an updated
27244     // relation.
27245     replaceMember: function(needle, replacement) {
27246         if (!this.memberById(needle.id))
27247             return this;
27248
27249         var members = [];
27250
27251         for (var i = 0; i < this.members.length; i++) {
27252             var member = this.members[i];
27253             if (member.id !== needle.id) {
27254                 members.push(member);
27255             } else if (!this.memberByIdAndRole(replacement.id, member.role)) {
27256                 members.push({id: replacement.id, type: replacement.type, role: member.role});
27257             }
27258         }
27259
27260         return this.update({members: members});
27261     },
27262
27263     asJXON: function(changeset_id) {
27264         var r = {
27265             relation: {
27266                 '@id': this.osmId(),
27267                 '@version': this.version || 0,
27268                 member: _.map(this.members, function(member) {
27269                     return { keyAttributes: { type: member.type, role: member.role, ref: iD.Entity.id.toOSM(member.id) } };
27270                 }),
27271                 tag: _.map(this.tags, function(v, k) {
27272                     return { keyAttributes: { k: k, v: v } };
27273                 })
27274             }
27275         };
27276         if (changeset_id) r.relation['@changeset'] = changeset_id;
27277         return r;
27278     },
27279
27280     asGeoJSON: function(resolver) {
27281         return resolver.transient(this, 'GeoJSON', function () {
27282             if (this.isMultipolygon()) {
27283                 return {
27284                     type: 'MultiPolygon',
27285                     coordinates: this.multipolygon(resolver)
27286                 };
27287             } else {
27288                 return {
27289                     type: 'FeatureCollection',
27290                     properties: this.tags,
27291                     features: this.members.map(function (member) {
27292                         return _.extend({role: member.role}, resolver.entity(member.id).asGeoJSON(resolver));
27293                     })
27294                 };
27295             }
27296         });
27297     },
27298
27299     area: function(resolver) {
27300         return resolver.transient(this, 'area', function() {
27301             return d3.geo.area(this.asGeoJSON(resolver));
27302         });
27303     },
27304
27305     isMultipolygon: function() {
27306         return this.tags.type === 'multipolygon';
27307     },
27308
27309     isComplete: function(resolver) {
27310         for (var i = 0; i < this.members.length; i++) {
27311             if (!resolver.hasEntity(this.members[i].id)) {
27312                 return false;
27313             }
27314         }
27315         return true;
27316     },
27317
27318     isRestriction: function() {
27319         return !!(this.tags.type && this.tags.type.match(/^restriction:?/));
27320     },
27321
27322     // Returns an array [A0, ... An], each Ai being an array of node arrays [Nds0, ... Ndsm],
27323     // where Nds0 is an outer ring and subsequent Ndsi's (if any i > 0) being inner rings.
27324     //
27325     // This corresponds to the structure needed for rendering a multipolygon path using a
27326     // `evenodd` fill rule, as well as the structure of a GeoJSON MultiPolygon geometry.
27327     //
27328     // In the case of invalid geometries, this function will still return a result which
27329     // includes the nodes of all way members, but some Nds may be unclosed and some inner
27330     // rings not matched with the intended outer ring.
27331     //
27332     multipolygon: function(resolver) {
27333         var outers = this.members.filter(function(m) { return 'outer' === (m.role || 'outer'); }),
27334             inners = this.members.filter(function(m) { return 'inner' === m.role; });
27335
27336         outers = iD.geo.joinWays(outers, resolver);
27337         inners = iD.geo.joinWays(inners, resolver);
27338
27339         outers = outers.map(function(outer) { return _.pluck(outer.nodes, 'loc'); });
27340         inners = inners.map(function(inner) { return _.pluck(inner.nodes, 'loc'); });
27341
27342         var result = outers.map(function(o) {
27343             // Heuristic for detecting counterclockwise winding order. Assumes
27344             // that OpenStreetMap polygons are not hemisphere-spanning.
27345             return [d3.geo.area({type: 'Polygon', coordinates: [o]}) > 2 * Math.PI ? o.reverse() : o];
27346         });
27347
27348         function findOuter(inner) {
27349             var o, outer;
27350
27351             for (o = 0; o < outers.length; o++) {
27352                 outer = outers[o];
27353                 if (iD.geo.polygonContainsPolygon(outer, inner))
27354                     return o;
27355             }
27356
27357             for (o = 0; o < outers.length; o++) {
27358                 outer = outers[o];
27359                 if (iD.geo.polygonIntersectsPolygon(outer, inner))
27360                     return o;
27361             }
27362         }
27363
27364         for (var i = 0; i < inners.length; i++) {
27365             var inner = inners[i];
27366
27367             if (d3.geo.area({type: 'Polygon', coordinates: [inner]}) < 2 * Math.PI) {
27368                 inner = inner.reverse();
27369             }
27370
27371             var o = findOuter(inners[i]);
27372             if (o !== undefined)
27373                 result[o].push(inners[i]);
27374             else
27375                 result.push([inners[i]]); // Invalid geometry
27376         }
27377
27378         return result;
27379     }
27380 });
27381 iD.Tree = function(head) {
27382     var rtree = rbush(),
27383         rectangles = {};
27384
27385     function extentRectangle(extent) {
27386         return [
27387             extent[0][0],
27388             extent[0][1],
27389             extent[1][0],
27390             extent[1][1]
27391         ];
27392     }
27393
27394     function entityRectangle(entity) {
27395         var rect = extentRectangle(entity.extent(head));
27396         rect.id = entity.id;
27397         rectangles[entity.id] = rect;
27398         return rect;
27399     }
27400
27401     function updateParents(entity, insertions, memo) {
27402         head.parentWays(entity).forEach(function(parent) {
27403             if (rectangles[parent.id]) {
27404                 rtree.remove(rectangles[parent.id]);
27405                 insertions[parent.id] = parent;
27406             }
27407         });
27408
27409         head.parentRelations(entity).forEach(function(parent) {
27410             if (memo[entity.id]) return;
27411             memo[entity.id] = true;
27412             if (rectangles[parent.id]) {
27413                 rtree.remove(rectangles[parent.id]);
27414                 insertions[parent.id] = parent;
27415             }
27416             updateParents(parent, insertions, memo);
27417         });
27418     }
27419
27420     var tree = {};
27421
27422     tree.rebase = function(entities, force) {
27423         var insertions = {};
27424
27425         for (var i = 0; i < entities.length; i++) {
27426             var entity = entities[i];
27427
27428             if (!entity.visible)
27429                 continue;
27430
27431             if (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id]) {
27432                 if (!force) {
27433                     continue;
27434                 } else if (rectangles[entity.id]) {
27435                     rtree.remove(rectangles[entity.id]);
27436                 }
27437             }
27438
27439             insertions[entity.id] = entity;
27440             updateParents(entity, insertions, {});
27441         }
27442
27443         rtree.load(_.map(insertions, entityRectangle));
27444
27445         return tree;
27446     };
27447
27448     tree.intersects = function(extent, graph) {
27449         if (graph !== head) {
27450             var diff = iD.Difference(head, graph),
27451                 insertions = {};
27452
27453             head = graph;
27454
27455             diff.deleted().forEach(function(entity) {
27456                 rtree.remove(rectangles[entity.id]);
27457                 delete rectangles[entity.id];
27458             });
27459
27460             diff.modified().forEach(function(entity) {
27461                 rtree.remove(rectangles[entity.id]);
27462                 insertions[entity.id] = entity;
27463                 updateParents(entity, insertions, {});
27464             });
27465
27466             diff.created().forEach(function(entity) {
27467                 insertions[entity.id] = entity;
27468             });
27469
27470             rtree.load(_.map(insertions, entityRectangle));
27471         }
27472
27473         return rtree.search(extentRectangle(extent)).map(function(rect) {
27474             return head.entity(rect.id);
27475         });
27476     };
27477
27478     return tree;
27479 };
27480 iD.Way = iD.Entity.way = function iD_Way() {
27481     if (!(this instanceof iD_Way)) {
27482         return (new iD_Way()).initialize(arguments);
27483     } else if (arguments.length) {
27484         this.initialize(arguments);
27485     }
27486 };
27487
27488 iD.Way.prototype = Object.create(iD.Entity.prototype);
27489
27490 _.extend(iD.Way.prototype, {
27491     type: 'way',
27492     nodes: [],
27493
27494     copy: function(deep, resolver) {
27495         var copy = iD.Entity.prototype.copy.call(this);
27496
27497         if (!deep || !resolver) {
27498             return copy;
27499         }
27500
27501         var nodes = [],
27502             replacements = {},
27503             i, oldid, newid, child;
27504
27505         for (i = 0; i < this.nodes.length; i++) {
27506             oldid = this.nodes[i];
27507             newid = replacements[oldid];
27508             if (!newid) {
27509                 child = resolver.entity(oldid).copy();
27510                 newid = replacements[oldid] = child[0].id;
27511                 copy = copy.concat(child);
27512             }
27513             nodes.push(newid);
27514         }
27515
27516         copy[0] = copy[0].update({nodes: nodes});
27517         return copy;
27518     },
27519
27520     extent: function(resolver) {
27521         return resolver.transient(this, 'extent', function() {
27522             var extent = iD.geo.Extent();
27523             for (var i = 0; i < this.nodes.length; i++) {
27524                 var node = resolver.hasEntity(this.nodes[i]);
27525                 if (node) {
27526                     extent._extend(node.extent());
27527                 }
27528             }
27529             return extent;
27530         });
27531     },
27532
27533     first: function() {
27534         return this.nodes[0];
27535     },
27536
27537     last: function() {
27538         return this.nodes[this.nodes.length - 1];
27539     },
27540
27541     contains: function(node) {
27542         return this.nodes.indexOf(node) >= 0;
27543     },
27544
27545     affix: function(node) {
27546         if (this.nodes[0] === node) return 'prefix';
27547         if (this.nodes[this.nodes.length - 1] === node) return 'suffix';
27548     },
27549
27550     layer: function() {
27551         // explicit layer tag, clamp between -10, 10..
27552         if (this.tags.layer !== undefined) {
27553             return Math.max(-10, Math.min(+(this.tags.layer), 10));
27554         }
27555
27556         // implied layer tag..
27557         if (this.tags.location === 'overground') return 1;
27558         if (this.tags.location === 'underground') return -1;
27559         if (this.tags.location === 'underwater') return -10;
27560
27561         if (this.tags.power === 'line') return 10;
27562         if (this.tags.power === 'minor_line') return 10;
27563         if (this.tags.aerialway) return 10;
27564         if (this.tags.bridge) return 1;
27565         if (this.tags.cutting) return -1;
27566         if (this.tags.tunnel) return -1;
27567         if (this.tags.waterway) return -1;
27568         if (this.tags.man_made === 'pipeline') return -10;
27569         if (this.tags.boundary) return -10;
27570         return 0;
27571     },
27572
27573     isOneWay: function() {
27574         // explicit oneway tag..
27575         if (['yes', '1', '-1'].indexOf(this.tags.oneway) !== -1) { return true; }
27576         if (['no', '0'].indexOf(this.tags.oneway) !== -1) { return false; }
27577
27578         // implied oneway tag..
27579         for (var key in this.tags) {
27580             if (key in iD.oneWayTags && (this.tags[key] in iD.oneWayTags[key]))
27581                 return true;
27582         }
27583         return false;
27584     },
27585
27586     isClosed: function() {
27587         return this.nodes.length > 0 && this.first() === this.last();
27588     },
27589
27590     isConvex: function(resolver) {
27591         if (!this.isClosed() || this.isDegenerate()) return null;
27592
27593         var nodes = _.uniq(resolver.childNodes(this)),
27594             coords = _.pluck(nodes, 'loc'),
27595             curr = 0, prev = 0;
27596
27597         for (var i = 0; i < coords.length; i++) {
27598             var o = coords[(i+1) % coords.length],
27599                 a = coords[i],
27600                 b = coords[(i+2) % coords.length],
27601                 res = iD.geo.cross(o, a, b);
27602
27603             curr = (res > 0) ? 1 : (res < 0) ? -1 : 0;
27604             if (curr === 0) {
27605                 continue;
27606             } else if (prev && curr !== prev) {
27607                 return false;
27608             }
27609             prev = curr;
27610         }
27611         return true;
27612     },
27613
27614     isArea: function() {
27615         if (this.tags.area === 'yes')
27616             return true;
27617         if (!this.isClosed() || this.tags.area === 'no')
27618             return false;
27619         for (var key in this.tags)
27620             if (key in iD.areaKeys && !(this.tags[key] in iD.areaKeys[key]))
27621                 return true;
27622         return false;
27623     },
27624
27625     isDegenerate: function() {
27626         return _.uniq(this.nodes).length < (this.isArea() ? 3 : 2);
27627     },
27628
27629     areAdjacent: function(n1, n2) {
27630         for (var i = 0; i < this.nodes.length; i++) {
27631             if (this.nodes[i] === n1) {
27632                 if (this.nodes[i - 1] === n2) return true;
27633                 if (this.nodes[i + 1] === n2) return true;
27634             }
27635         }
27636         return false;
27637     },
27638
27639     geometry: function(graph) {
27640         return graph.transient(this, 'geometry', function() {
27641             return this.isArea() ? 'area' : 'line';
27642         });
27643     },
27644
27645     addNode: function(id, index) {
27646         var nodes = this.nodes.slice();
27647         nodes.splice(index === undefined ? nodes.length : index, 0, id);
27648         return this.update({nodes: nodes});
27649     },
27650
27651     updateNode: function(id, index) {
27652         var nodes = this.nodes.slice();
27653         nodes.splice(index, 1, id);
27654         return this.update({nodes: nodes});
27655     },
27656
27657     replaceNode: function(needle, replacement) {
27658         if (this.nodes.indexOf(needle) < 0)
27659             return this;
27660
27661         var nodes = this.nodes.slice();
27662         for (var i = 0; i < nodes.length; i++) {
27663             if (nodes[i] === needle) {
27664                 nodes[i] = replacement;
27665             }
27666         }
27667         return this.update({nodes: nodes});
27668     },
27669
27670     removeNode: function(id) {
27671         var nodes = [];
27672
27673         for (var i = 0; i < this.nodes.length; i++) {
27674             var node = this.nodes[i];
27675             if (node !== id && nodes[nodes.length - 1] !== node) {
27676                 nodes.push(node);
27677             }
27678         }
27679
27680         // Preserve circularity
27681         if (this.nodes.length > 1 && this.first() === id && this.last() === id && nodes[nodes.length - 1] !== nodes[0]) {
27682             nodes.push(nodes[0]);
27683         }
27684
27685         return this.update({nodes: nodes});
27686     },
27687
27688     asJXON: function(changeset_id) {
27689         var r = {
27690             way: {
27691                 '@id': this.osmId(),
27692                 '@version': this.version || 0,
27693                 nd: _.map(this.nodes, function(id) {
27694                     return { keyAttributes: { ref: iD.Entity.id.toOSM(id) } };
27695                 }),
27696                 tag: _.map(this.tags, function(v, k) {
27697                     return { keyAttributes: { k: k, v: v } };
27698                 })
27699             }
27700         };
27701         if (changeset_id) r.way['@changeset'] = changeset_id;
27702         return r;
27703     },
27704
27705     asGeoJSON: function(resolver) {
27706         return resolver.transient(this, 'GeoJSON', function() {
27707             var coordinates = _.pluck(resolver.childNodes(this), 'loc');
27708             if (this.isArea() && this.isClosed()) {
27709                 return {
27710                     type: 'Polygon',
27711                     coordinates: [coordinates]
27712                 };
27713             } else {
27714                 return {
27715                     type: 'LineString',
27716                     coordinates: coordinates
27717                 };
27718             }
27719         });
27720     },
27721
27722     area: function(resolver) {
27723         return resolver.transient(this, 'area', function() {
27724             var nodes = resolver.childNodes(this);
27725
27726             var json = {
27727                 type: 'Polygon',
27728                 coordinates: [_.pluck(nodes, 'loc')]
27729             };
27730
27731             if (!this.isClosed() && nodes.length) {
27732                 json.coordinates[0].push(nodes[0].loc);
27733             }
27734
27735             var area = d3.geo.area(json);
27736
27737             // Heuristic for detecting counterclockwise winding order. Assumes
27738             // that OpenStreetMap polygons are not hemisphere-spanning.
27739             if (area > 2 * Math.PI) {
27740                 json.coordinates[0] = json.coordinates[0].reverse();
27741                 area = d3.geo.area(json);
27742             }
27743
27744             return isNaN(area) ? 0 : area;
27745         });
27746     }
27747 });
27748 iD.Background = function(context) {
27749     var dispatch = d3.dispatch('change'),
27750         baseLayer = iD.TileLayer()
27751             .projection(context.projection),
27752         gpxLayer = iD.GpxLayer(context, dispatch)
27753             .projection(context.projection),
27754         mapillaryLayer = iD.MapillaryLayer(context),
27755         overlayLayers = [];
27756
27757     var backgroundSources;
27758
27759     function findSource(id) {
27760         return _.find(backgroundSources, function(d) {
27761             return d.id && d.id === id;
27762         });
27763     }
27764
27765     function updateImagery() {
27766         var b = background.baseLayerSource(),
27767             o = overlayLayers.map(function (d) { return d.source().id; }).join(','),
27768             q = iD.util.stringQs(location.hash.substring(1));
27769
27770         var id = b.id;
27771         if (id === 'custom') {
27772             id = 'custom:' + b.template;
27773         }
27774
27775         if (id) {
27776             q.background = id;
27777         } else {
27778             delete q.background;
27779         }
27780
27781         if (o) {
27782             q.overlays = o;
27783         } else {
27784             delete q.overlays;
27785         }
27786
27787         location.replace('#' + iD.util.qsString(q, true));
27788
27789         var imageryUsed = [b.imageryUsed()];
27790
27791         overlayLayers.forEach(function (d) {
27792             var source = d.source();
27793             if (!source.isLocatorOverlay()) {
27794                 imageryUsed.push(source.imageryUsed());
27795             }
27796         });
27797
27798         if (background.showsGpxLayer()) {
27799             imageryUsed.push('Local GPX');
27800         }
27801
27802         context.history().imageryUsed(imageryUsed);
27803     }
27804
27805     function background(selection) {
27806         var base = selection.selectAll('.background-layer')
27807             .data([0]);
27808
27809         base.enter().insert('div', '.layer-data')
27810             .attr('class', 'layer-layer background-layer');
27811
27812         base.call(baseLayer);
27813
27814         var overlays = selection.selectAll('.layer-overlay')
27815             .data(overlayLayers, function(d) { return d.source().name(); });
27816
27817         overlays.enter().insert('div', '.layer-data')
27818             .attr('class', 'layer-layer layer-overlay');
27819
27820         overlays.each(function(layer) {
27821             d3.select(this).call(layer);
27822         });
27823
27824         overlays.exit()
27825             .remove();
27826
27827         var gpx = selection.selectAll('.layer-gpx')
27828             .data([0]);
27829
27830         gpx.enter().insert('div')
27831             .attr('class', 'layer-layer layer-gpx');
27832
27833         gpx.call(gpxLayer);
27834
27835         var mapillary = selection.selectAll('.layer-mapillary')
27836             .data([0]);
27837
27838         mapillary.enter().insert('div')
27839             .attr('class', 'layer-layer layer-mapillary');
27840
27841         mapillary.call(mapillaryLayer);
27842     }
27843
27844     background.sources = function(extent) {
27845         return backgroundSources.filter(function(source) {
27846             return source.intersects(extent);
27847         });
27848     };
27849
27850     background.dimensions = function(_) {
27851         baseLayer.dimensions(_);
27852         gpxLayer.dimensions(_);
27853         mapillaryLayer.dimensions(_);
27854
27855         overlayLayers.forEach(function(layer) {
27856             layer.dimensions(_);
27857         });
27858     };
27859
27860     background.baseLayerSource = function(d) {
27861         if (!arguments.length) return baseLayer.source();
27862
27863         baseLayer.source(d);
27864         dispatch.change();
27865         updateImagery();
27866
27867         return background;
27868     };
27869
27870     background.bing = function() {
27871         background.baseLayerSource(findSource('Bing'));
27872     };
27873
27874     background.hasGpxLayer = function() {
27875         return !_.isEmpty(gpxLayer.geojson());
27876     };
27877
27878     background.showsGpxLayer = function() {
27879         return background.hasGpxLayer() && gpxLayer.enable();
27880     };
27881
27882     function toDom(x) {
27883         return (new DOMParser()).parseFromString(x, 'text/xml');
27884     }
27885
27886     background.gpxLayerFiles = function(fileList) {
27887         var f = fileList[0],
27888             reader = new FileReader();
27889
27890         reader.onload = function(e) {
27891             gpxLayer.geojson(toGeoJSON.gpx(toDom(e.target.result)));
27892             background.zoomToGpxLayer();
27893             dispatch.change();
27894         };
27895
27896         reader.readAsText(f);
27897     };
27898
27899     background.zoomToGpxLayer = function() {
27900         if (background.hasGpxLayer()) {
27901             var map = context.map(),
27902                 viewport = map.trimmedExtent().polygon(),
27903                 coords = _.reduce(gpxLayer.geojson().features, function(coords, feature) {
27904                     var c = feature.geometry.coordinates;
27905                     return _.union(coords, feature.geometry.type === 'Point' ? [c] : c);
27906                 }, []);
27907
27908             if (!iD.geo.polygonIntersectsPolygon(viewport, coords)) {
27909                 var extent = iD.geo.Extent(d3.geo.bounds(gpxLayer.geojson()));
27910                 map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
27911             }
27912         }
27913     };
27914
27915     background.toggleGpxLayer = function() {
27916         gpxLayer.enable(!gpxLayer.enable());
27917         dispatch.change();
27918     };
27919
27920     background.showsMapillaryLayer = function() {
27921         return mapillaryLayer.enable();
27922     };
27923
27924     background.toggleMapillaryLayer = function() {
27925         mapillaryLayer.enable(!mapillaryLayer.enable());
27926         dispatch.change();
27927     };
27928
27929     background.showsLayer = function(d) {
27930         return d === baseLayer.source() ||
27931             (d.id === 'custom' && baseLayer.source().id === 'custom') ||
27932             overlayLayers.some(function(l) { return l.source() === d; });
27933     };
27934
27935     background.overlayLayerSources = function() {
27936         return overlayLayers.map(function (l) { return l.source(); });
27937     };
27938
27939     background.toggleOverlayLayer = function(d) {
27940         var layer;
27941
27942         for (var i = 0; i < overlayLayers.length; i++) {
27943             layer = overlayLayers[i];
27944             if (layer.source() === d) {
27945                 overlayLayers.splice(i, 1);
27946                 dispatch.change();
27947                 updateImagery();
27948                 return;
27949             }
27950         }
27951
27952         layer = iD.TileLayer()
27953             .source(d)
27954             .projection(context.projection)
27955             .dimensions(baseLayer.dimensions());
27956
27957         overlayLayers.push(layer);
27958         dispatch.change();
27959         updateImagery();
27960     };
27961
27962     background.nudge = function(d, zoom) {
27963         baseLayer.source().nudge(d, zoom);
27964         dispatch.change();
27965         return background;
27966     };
27967
27968     background.offset = function(d) {
27969         if (!arguments.length) return baseLayer.source().offset();
27970         baseLayer.source().offset(d);
27971         dispatch.change();
27972         return background;
27973     };
27974
27975     background.load = function(imagery) {
27976         backgroundSources = imagery.map(function(source) {
27977             if (source.type === 'bing') {
27978                 return iD.BackgroundSource.Bing(source, dispatch);
27979             } else {
27980                 return iD.BackgroundSource(source);
27981             }
27982         });
27983
27984         backgroundSources.unshift(iD.BackgroundSource.None());
27985
27986         var q = iD.util.stringQs(location.hash.substring(1)),
27987             chosen = q.background || q.layer;
27988
27989         if (chosen && chosen.indexOf('custom:') === 0) {
27990             background.baseLayerSource(iD.BackgroundSource.Custom(chosen.replace(/^custom:/, '')));
27991         } else {
27992             background.baseLayerSource(findSource(chosen) || findSource('Bing') || backgroundSources[1]);
27993         }
27994
27995         var locator = _.find(backgroundSources, function(d) {
27996             return d.overlay && d.default;
27997         });
27998
27999         if (locator) {
28000             background.toggleOverlayLayer(locator);
28001         }
28002
28003         var overlays = (q.overlays || '').split(',');
28004         overlays.forEach(function(overlay) {
28005             overlay = findSource(overlay);
28006             if (overlay) background.toggleOverlayLayer(overlay);
28007         });
28008
28009         var gpx = q.gpx;
28010         if (gpx) {
28011             d3.text(gpx, function(err, gpxTxt) {
28012                 gpxLayer.geojson(toGeoJSON.gpx(toDom(gpxTxt)));
28013                 dispatch.change();
28014             });
28015         }
28016     };
28017
28018     return d3.rebind(background, dispatch, 'on');
28019 };
28020 iD.BackgroundSource = function(data) {
28021     var source = _.clone(data),
28022         offset = [0, 0],
28023         name = source.name;
28024
28025     source.scaleExtent = data.scaleExtent || [0, 20];
28026     source.overzoom = data.overzoom !== false;
28027
28028     source.offset = function(_) {
28029         if (!arguments.length) return offset;
28030         offset = _;
28031         return source;
28032     };
28033
28034     source.nudge = function(_, zoomlevel) {
28035         offset[0] += _[0] / Math.pow(2, zoomlevel);
28036         offset[1] += _[1] / Math.pow(2, zoomlevel);
28037         return source;
28038     };
28039
28040     source.name = function() {
28041         return name;
28042     };
28043
28044     source.imageryUsed = function() {
28045         return source.id || name;
28046     };
28047
28048     source.url = function(coord) {
28049         return data.template
28050             .replace('{x}', coord[0])
28051             .replace('{y}', coord[1])
28052             // TMS-flipped y coordinate
28053             .replace(/\{[t-]y\}/, Math.pow(2, coord[2]) - coord[1] - 1)
28054             .replace(/\{z(oom)?\}/, coord[2])
28055             .replace(/\{switch:([^}]+)\}/, function(s, r) {
28056                 var subdomains = r.split(',');
28057                 return subdomains[(coord[0] + coord[1]) % subdomains.length];
28058             })
28059             .replace('{u}', function() {
28060                 var u = '';
28061                 for (var zoom = coord[2]; zoom > 0; zoom--) {
28062                     var b = 0;
28063                     var mask = 1 << (zoom - 1);
28064                     if ((coord[0] & mask) !== 0) b++;
28065                     if ((coord[1] & mask) !== 0) b += 2;
28066                     u += b.toString();
28067                 }
28068                 return u;
28069             });
28070     };
28071
28072     source.intersects = function(extent) {
28073         extent = extent.polygon();
28074         return !data.polygon || data.polygon.some(function(polygon) {
28075             return iD.geo.polygonIntersectsPolygon(polygon, extent);
28076         });
28077     };
28078
28079     source.validZoom = function(z) {
28080         return source.scaleExtent[0] <= z &&
28081             (source.overzoom || source.scaleExtent[1] > z);
28082     };
28083
28084     source.isLocatorOverlay = function() {
28085         return name === 'Locator Overlay';
28086     };
28087
28088     source.copyrightNotices = function() {};
28089
28090     return source;
28091 };
28092
28093 iD.BackgroundSource.Bing = function(data, dispatch) {
28094     // http://msdn.microsoft.com/en-us/library/ff701716.aspx
28095     // http://msdn.microsoft.com/en-us/library/ff701701.aspx
28096
28097     data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z';
28098
28099     var bing = iD.BackgroundSource(data),
28100         key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU', // Same as P2 and JOSM
28101         url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?include=ImageryProviders&key=' +
28102             key + '&jsonp={callback}',
28103         providers = [];
28104
28105     d3.jsonp(url, function(json) {
28106         providers = json.resourceSets[0].resources[0].imageryProviders.map(function(provider) {
28107             return {
28108                 attribution: provider.attribution,
28109                 areas: provider.coverageAreas.map(function(area) {
28110                     return {
28111                         zoom: [area.zoomMin, area.zoomMax],
28112                         extent: iD.geo.Extent([area.bbox[1], area.bbox[0]], [area.bbox[3], area.bbox[2]])
28113                     };
28114                 })
28115             };
28116         });
28117         dispatch.change();
28118     });
28119
28120     bing.copyrightNotices = function(zoom, extent) {
28121         zoom = Math.min(zoom, 21);
28122         return providers.filter(function(provider) {
28123             return _.any(provider.areas, function(area) {
28124                 return extent.intersects(area.extent) &&
28125                     area.zoom[0] <= zoom &&
28126                     area.zoom[1] >= zoom;
28127             });
28128         }).map(function(provider) {
28129             return provider.attribution;
28130         }).join(', ');
28131     };
28132
28133     bing.logo = 'bing_maps.png';
28134     bing.terms_url = 'http://opengeodata.org/microsoft-imagery-details';
28135
28136     return bing;
28137 };
28138
28139 iD.BackgroundSource.None = function() {
28140     var source = iD.BackgroundSource({id: 'none', template: ''});
28141
28142     source.name = function() {
28143         return t('background.none');
28144     };
28145
28146     source.imageryUsed = function() {
28147         return 'None';
28148     };
28149
28150     return source;
28151 };
28152
28153 iD.BackgroundSource.Custom = function(template) {
28154     var source = iD.BackgroundSource({id: 'custom', template: template});
28155
28156     source.name = function() {
28157         return t('background.custom');
28158     };
28159
28160     source.imageryUsed = function() {
28161         return 'Custom (' + template + ')';
28162     };
28163
28164     return source;
28165 };
28166 iD.Features = function(context) {
28167     var major_roads = {
28168         'motorway': true,
28169         'motorway_link': true,
28170         'trunk': true,
28171         'trunk_link': true,
28172         'primary': true,
28173         'primary_link': true,
28174         'secondary': true,
28175         'secondary_link': true,
28176         'tertiary': true,
28177         'tertiary_link': true,
28178         'residential': true
28179     };
28180
28181     var minor_roads = {
28182         'service': true,
28183         'living_street': true,
28184         'road': true,
28185         'unclassified': true,
28186         'track': true
28187     };
28188
28189     var paths = {
28190         'path': true,
28191         'footway': true,
28192         'cycleway': true,
28193         'bridleway': true,
28194         'steps': true,
28195         'pedestrian': true
28196     };
28197
28198     var past_futures = {
28199         'proposed': true,
28200         'construction': true,
28201         'abandoned': true,
28202         'dismantled': true,
28203         'disused': true,
28204         'razed': true,
28205         'demolished': true,
28206         'obliterated': true
28207     };
28208
28209     var dispatch = d3.dispatch('change', 'redraw'),
28210         _cullFactor = 1,
28211         _cache = {},
28212         _features = {},
28213         _stats = {},
28214         _keys = [],
28215         _hidden = [];
28216
28217     function update() {
28218         _hidden = features.hidden();
28219         dispatch.change();
28220         dispatch.redraw();
28221     }
28222
28223     function defineFeature(k, filter, max) {
28224         _keys.push(k);
28225         _features[k] = {
28226             filter: filter,
28227             enabled: true,   // whether the user wants it enabled..
28228             count: 0,
28229             currentMax: (max || Infinity),
28230             defaultMax: (max || Infinity),
28231             enable: function() { this.enabled = true; this.currentMax = this.defaultMax; },
28232             disable: function() { this.enabled = false; this.currentMax = 0; },
28233             hidden: function() { return !context.editable() || this.count > this.currentMax * _cullFactor; },
28234             autoHidden: function() { return this.hidden() && this.currentMax > 0; }
28235         };
28236     }
28237
28238
28239     defineFeature('points', function isPoint(entity, resolver, geometry) {
28240         return geometry === 'point';
28241     }, 200);
28242
28243     defineFeature('major_roads', function isMajorRoad(entity) {
28244         return major_roads[entity.tags.highway];
28245     });
28246
28247     defineFeature('minor_roads', function isMinorRoad(entity) {
28248         return minor_roads[entity.tags.highway];
28249     });
28250
28251     defineFeature('paths', function isPath(entity) {
28252         return paths[entity.tags.highway];
28253     });
28254
28255     defineFeature('buildings', function isBuilding(entity) {
28256         return (
28257             !!entity.tags['building:part'] ||
28258             (!!entity.tags.building && entity.tags.building !== 'no') ||
28259             entity.tags.amenity === 'shelter' ||
28260             entity.tags.parking === 'multi-storey' ||
28261             entity.tags.parking === 'sheds' ||
28262             entity.tags.parking === 'carports' ||
28263             entity.tags.parking === 'garage_boxes'
28264         );
28265     }, 250);
28266
28267     defineFeature('landuse', function isLanduse(entity, resolver, geometry) {
28268         return geometry === 'area' &&
28269             !_features.buildings.filter(entity) &&
28270             !_features.water.filter(entity);
28271     });
28272
28273     defineFeature('boundaries', function isBoundary(entity) {
28274         return !!entity.tags.boundary;
28275     });
28276
28277     defineFeature('water', function isWater(entity) {
28278         return (
28279             !!entity.tags.waterway ||
28280             entity.tags.natural === 'water' ||
28281             entity.tags.natural === 'coastline' ||
28282             entity.tags.natural === 'bay' ||
28283             entity.tags.landuse === 'pond' ||
28284             entity.tags.landuse === 'basin' ||
28285             entity.tags.landuse === 'reservoir' ||
28286             entity.tags.landuse === 'salt_pond'
28287         );
28288     });
28289
28290     defineFeature('rail', function isRail(entity) {
28291         return (
28292             !!entity.tags.railway ||
28293             entity.tags.landuse === 'railway'
28294         ) && !(
28295             major_roads[entity.tags.highway] ||
28296             minor_roads[entity.tags.highway] ||
28297             paths[entity.tags.highway]
28298         );
28299     });
28300
28301     defineFeature('power', function isPower(entity) {
28302         return !!entity.tags.power;
28303     });
28304
28305     // contains a past/future tag, but not in active use as a road/path/cycleway/etc..
28306     defineFeature('past_future', function isPastFuture(entity) {
28307         if (
28308             major_roads[entity.tags.highway] ||
28309             minor_roads[entity.tags.highway] ||
28310             paths[entity.tags.highway]
28311         ) { return false; }
28312
28313         var strings = Object.keys(entity.tags);
28314
28315         for (var i = 0; i < strings.length; i++) {
28316             var s = strings[i];
28317             if (past_futures[s] || past_futures[entity.tags[s]]) { return true; }
28318         }
28319         return false;
28320     });
28321
28322     // Lines or areas that don't match another feature filter.
28323     // IMPORTANT: The 'others' feature must be the last one defined,
28324     //   so that code in getMatches can skip this test if `hasMatch = true`
28325     defineFeature('others', function isOther(entity, resolver, geometry) {
28326         return (geometry === 'line' || geometry === 'area');
28327     });
28328
28329
28330     function features() {}
28331
28332     features.features = function() {
28333         return _features;
28334     };
28335
28336     features.keys = function() {
28337         return _keys;
28338     };
28339
28340     features.enabled = function(k) {
28341         if (!arguments.length) {
28342             return _.filter(_keys, function(k) { return _features[k].enabled; });
28343         }
28344         return _features[k] && _features[k].enabled;
28345     };
28346
28347     features.disabled = function(k) {
28348         if (!arguments.length) {
28349             return _.reject(_keys, function(k) { return _features[k].enabled; });
28350         }
28351         return _features[k] && !_features[k].enabled;
28352     };
28353
28354     features.hidden = function(k) {
28355         if (!arguments.length) {
28356             return _.filter(_keys, function(k) { return _features[k].hidden(); });
28357         }
28358         return _features[k] && _features[k].hidden();
28359     };
28360
28361     features.autoHidden = function(k) {
28362         if (!arguments.length) {
28363             return _.filter(_keys, function(k) { return _features[k].autoHidden(); });
28364         }
28365         return _features[k] && _features[k].autoHidden();
28366     };
28367
28368     features.enable = function(k) {
28369         if (_features[k] && !_features[k].enabled) {
28370             _features[k].enable();
28371             update();
28372         }
28373     };
28374
28375     features.disable = function(k) {
28376         if (_features[k] && _features[k].enabled) {
28377             _features[k].disable();
28378             update();
28379         }
28380     };
28381
28382     features.toggle = function(k) {
28383         if (_features[k]) {
28384             (function(f) { return f.enabled ? f.disable() : f.enable(); }(_features[k]));
28385             update();
28386         }
28387     };
28388
28389     features.resetStats = function() {
28390         _.each(_features, function(f) { f.count = 0; });
28391         dispatch.change();
28392     };
28393
28394     features.gatherStats = function(d, resolver, dimensions) {
28395         var needsRedraw = false,
28396             type = _.groupBy(d, function(ent) { return ent.type; }),
28397             entities = [].concat(type.relation || [], type.way || [], type.node || []),
28398             currHidden, geometry, matches;
28399
28400         _.each(_features, function(f) { f.count = 0; });
28401
28402         // adjust the threshold for point/building culling based on viewport size..
28403         // a _cullFactor of 1 corresponds to a 1000x1000px viewport..
28404         _cullFactor = dimensions[0] * dimensions[1] / 1000000;
28405
28406         for (var i = 0; i < entities.length; i++) {
28407             geometry = entities[i].geometry(resolver);
28408             if (!(geometry === 'vertex' || geometry === 'relation')) {
28409                 matches = Object.keys(features.getMatches(entities[i], resolver, geometry));
28410                 for (var j = 0; j < matches.length; j++) {
28411                     _features[matches[j]].count++;
28412                 }
28413             }
28414         }
28415
28416         currHidden = features.hidden();
28417         if (currHidden !== _hidden) {
28418             _hidden = currHidden;
28419             needsRedraw = true;
28420             dispatch.change();
28421         }
28422
28423         return needsRedraw;
28424     };
28425
28426     features.stats = function() {
28427         _.each(_keys, function(k) { _stats[k] = _features[k].count; });
28428         return _stats;
28429     };
28430
28431     features.clear = function(d) {
28432         for (var i = 0; i < d.length; i++) {
28433             features.clearEntity(d[i]);
28434         }
28435     };
28436
28437     features.clearEntity = function(entity) {
28438         delete _cache[iD.Entity.key(entity)];
28439     };
28440
28441     features.reset = function() {
28442         _cache = {};
28443     };
28444
28445     features.getMatches = function(entity, resolver, geometry) {
28446         var ent = iD.Entity.key(entity);
28447
28448         if (!_cache[ent]) {
28449             _cache[ent] = {};
28450         }
28451         if (!_cache[ent].matches) {
28452             var matches = {},
28453                 hasMatch = false;
28454
28455             if (!(geometry === 'vertex' || geometry === 'relation')) {
28456                 for (var i = 0; i < _keys.length; i++) {
28457
28458                     if (_keys[i] === 'others') {
28459                         if (hasMatch) continue;
28460
28461                         // If the entity is a way that has not matched any other
28462                         // feature type, see if it has a parent relation, and if so,
28463                         // match whatever feature types the parent has matched.
28464                         // (The way is a member of a multipolygon.)
28465                         //
28466                         // IMPORTANT:
28467                         // For this to work, getMatches must be called on relations before ways.
28468                         //
28469                         if (entity.type === 'way') {
28470                             var parents = features.getParents(entity, resolver, geometry);
28471                             if (parents.length === 1) {
28472                                 var pkey = iD.Entity.key(parents[0]);
28473                                 if (_cache[pkey] && _cache[pkey].matches) {
28474                                     matches = _.clone(_cache[pkey].matches);
28475                                     continue;
28476                                 }
28477                             }
28478                         }
28479                     }
28480
28481                     if (_features[_keys[i]].filter(entity, resolver, geometry)) {
28482                         matches[_keys[i]] = hasMatch = true;
28483                     }
28484                 }
28485             }
28486             _cache[ent].matches = matches;
28487         }
28488         return _cache[ent].matches;
28489     };
28490
28491     features.getParents = function(entity, resolver, geometry) {
28492         var ent = iD.Entity.key(entity);
28493
28494         if (!_cache[ent]) {
28495             _cache[ent] = {};
28496         }
28497         if (!_cache[ent].parents) {
28498             var parents = [];
28499
28500             if (geometry !== 'point') {
28501                 if (geometry === 'vertex') {
28502                     parents = resolver.parentWays(entity);
28503                 } else {   // 'line', 'area', 'relation'
28504                     parents = resolver.parentRelations(entity);
28505                 }
28506             }
28507             _cache[ent].parents = parents;
28508         }
28509         return _cache[ent].parents;
28510     };
28511
28512     features.isHiddenFeature = function(entity, resolver, geometry) {
28513         if (!entity.version) return false;
28514
28515         var matches = features.getMatches(entity, resolver, geometry);
28516
28517         for (var i = 0; i < _hidden.length; i++) {
28518             if (matches[_hidden[i]]) { return true; }
28519         }
28520         return false;
28521     };
28522
28523     features.isHiddenChild = function(entity, resolver, geometry) {
28524         if (!entity.version || geometry === 'point') { return false; }
28525
28526         var parents = features.getParents(entity, resolver, geometry);
28527
28528         if (!parents.length) { return false; }
28529
28530         for (var i = 0; i < parents.length; i++) {
28531             if (!features.isHidden(parents[i], resolver, parents[i].geometry(resolver))) {
28532                 return false;
28533             }
28534         }
28535         return true;
28536     };
28537
28538     features.hasHiddenConnections = function(entity, resolver) {
28539         var childNodes, connections;
28540
28541         if (entity.type === 'midpoint') {
28542             childNodes = [resolver.entity(entity.edge[0]), resolver.entity(entity.edge[1])];
28543             connections = [];
28544         } else {
28545             childNodes = resolver.childNodes(entity);
28546             connections = features.getParents(entity, resolver, entity.geometry(resolver));
28547         }
28548
28549         // gather ways connected to child nodes..
28550         connections = _.reduce(childNodes, function(result, e) {
28551             return resolver.isShared(e) ? _.union(result, resolver.parentWays(e)) : result;
28552         }, connections);
28553
28554         return connections.length ? _.any(connections, function(e) {
28555             return features.isHidden(e, resolver, e.geometry(resolver));
28556         }) : false;
28557     };
28558
28559     features.isHidden = function(entity, resolver, geometry) {
28560         if (!entity.version) return false;
28561
28562         if (geometry === 'vertex')
28563             return features.isHiddenChild(entity, resolver, geometry);
28564         if (geometry === 'point')
28565             return features.isHiddenFeature(entity, resolver, geometry);
28566
28567         return features.isHiddenFeature(entity, resolver, geometry) ||
28568                features.isHiddenChild(entity, resolver, geometry);
28569     };
28570
28571     features.filter = function(d, resolver) {
28572         if (!_hidden.length)
28573             return d;
28574
28575         var result = [];
28576         for (var i = 0; i < d.length; i++) {
28577             var entity = d[i];
28578             if (!features.isHidden(entity, resolver, entity.geometry(resolver))) {
28579                 result.push(entity);
28580             }
28581         }
28582         return result;
28583     };
28584
28585     return d3.rebind(features, dispatch, 'on');
28586 };
28587 iD.GpxLayer = function(context) {
28588     var projection,
28589         gj = {},
28590         enable = true,
28591         svg;
28592
28593     function render(selection) {
28594         svg = selection.selectAll('svg')
28595             .data([render]);
28596
28597         svg.enter()
28598             .append('svg');
28599
28600         svg.style('display', enable ? 'block' : 'none');
28601
28602         var paths = svg
28603             .selectAll('path')
28604             .data([gj]);
28605
28606         paths
28607             .enter()
28608             .append('path')
28609             .attr('class', 'gpx');
28610
28611         var path = d3.geo.path()
28612             .projection(projection);
28613
28614         paths
28615             .attr('d', path);
28616
28617         if (typeof gj.features !== 'undefined') {
28618             svg
28619                 .selectAll('text')
28620                 .remove();
28621
28622             svg
28623                 .selectAll('path')
28624                 .data(gj.features)
28625                 .enter()
28626                 .append('text')
28627                 .attr('class', 'gpx')
28628                 .text(function(d) {
28629                     return d.properties.desc || d.properties.name;
28630                 })
28631                 .attr('x', function(d) {
28632                     var centroid = path.centroid(d);
28633                     return centroid[0] + 5;
28634                 })
28635                 .attr('y', function(d) {
28636                     var centroid = path.centroid(d);
28637                     return centroid[1];
28638                 });
28639         }
28640     }
28641
28642     render.projection = function(_) {
28643         if (!arguments.length) return projection;
28644         projection = _;
28645         return render;
28646     };
28647
28648     render.enable = function(_) {
28649         if (!arguments.length) return enable;
28650         enable = _;
28651         return render;
28652     };
28653
28654     render.geojson = function(_) {
28655         if (!arguments.length) return gj;
28656         gj = _;
28657         return render;
28658     };
28659
28660     render.dimensions = function(_) {
28661         if (!arguments.length) return svg.dimensions();
28662         svg.dimensions(_);
28663         return render;
28664     };
28665
28666     render.id = 'layer-gpx';
28667
28668     function over() {
28669         d3.event.stopPropagation();
28670         d3.event.preventDefault();
28671         d3.event.dataTransfer.dropEffect = 'copy';
28672     }
28673
28674     d3.select('body')
28675         .attr('dropzone', 'copy')
28676         .on('drop.localgpx', function() {
28677             d3.event.stopPropagation();
28678             d3.event.preventDefault();
28679             if (!iD.detect().filedrop) return;
28680             context.background().gpxLayerFiles(d3.event.dataTransfer.files);
28681         })
28682         .on('dragenter.localgpx', over)
28683         .on('dragexit.localgpx', over)
28684         .on('dragover.localgpx', over);
28685
28686     return render;
28687 };
28688 iD.Map = function(context) {
28689     var dimensions = [1, 1],
28690         dispatch = d3.dispatch('move', 'drawn'),
28691         projection = context.projection,
28692         roundedProjection = iD.svg.RoundProjection(projection),
28693         zoom = d3.behavior.zoom()
28694             .translate(projection.translate())
28695             .scale(projection.scale() * 2 * Math.PI)
28696             .scaleExtent([1024, 256 * Math.pow(2, 24)])
28697             .on('zoom', zoomPan),
28698         dblclickEnabled = true,
28699         transformStart,
28700         transformed = false,
28701         minzoom = 0,
28702         points = iD.svg.Points(roundedProjection, context),
28703         vertices = iD.svg.Vertices(roundedProjection, context),
28704         lines = iD.svg.Lines(projection),
28705         areas = iD.svg.Areas(projection),
28706         midpoints = iD.svg.Midpoints(roundedProjection, context),
28707         labels = iD.svg.Labels(projection, context),
28708         supersurface, surface,
28709         mouse,
28710         mousemove;
28711
28712     function map(selection) {
28713         context.history()
28714             .on('change.map', redraw);
28715         context.background()
28716             .on('change.map', redraw);
28717         context.features()
28718             .on('redraw.map', redraw);
28719
28720         selection
28721             .on('dblclick.map', dblClick)
28722             .call(zoom);
28723
28724         supersurface = selection.append('div')
28725             .attr('id', 'supersurface');
28726
28727         // Need a wrapper div because Opera can't cope with an absolutely positioned
28728         // SVG element: http://bl.ocks.org/jfirebaugh/6fbfbd922552bf776c16
28729         var dataLayer = supersurface.append('div')
28730             .attr('class', 'layer-layer layer-data');
28731
28732         map.surface = surface = dataLayer.append('svg')
28733             .on('mousedown.zoom', function() {
28734                 if (d3.event.button === 2) {
28735                     d3.event.stopPropagation();
28736                 }
28737             }, true)
28738             .on('mouseup.zoom', function() {
28739                 if (resetTransform()) redraw();
28740             })
28741             .attr('id', 'surface')
28742             .call(iD.svg.Surface(context));
28743
28744         supersurface.call(context.background());
28745
28746         surface.on('mousemove.map', function() {
28747             mousemove = d3.event;
28748         });
28749
28750         surface.on('mouseover.vertices', function() {
28751             if (map.editable() && !transformed) {
28752                 var hover = d3.event.target.__data__;
28753                 surface.call(vertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
28754                 dispatch.drawn({full: false});
28755             }
28756         });
28757
28758         surface.on('mouseout.vertices', function() {
28759             if (map.editable() && !transformed) {
28760                 var hover = d3.event.relatedTarget && d3.event.relatedTarget.__data__;
28761                 surface.call(vertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
28762                 dispatch.drawn({full: false});
28763             }
28764         });
28765
28766         context.on('enter.map', function() {
28767             if (map.editable() && !transformed) {
28768                 var all = context.intersects(map.extent()),
28769                     filter = d3.functor(true),
28770                     graph = context.graph();
28771
28772                 all = context.features().filter(all, graph);
28773                 surface.call(vertices, graph, all, filter, map.extent(), map.zoom());
28774                 surface.call(midpoints, graph, all, filter, map.trimmedExtent());
28775                 dispatch.drawn({full: false});
28776             }
28777         });
28778
28779         map.dimensions(selection.dimensions());
28780
28781         labels.supersurface(supersurface);
28782     }
28783
28784     function pxCenter() { return [dimensions[0] / 2, dimensions[1] / 2]; }
28785
28786     function drawVector(difference, extent) {
28787         var graph = context.graph(),
28788             features = context.features(),
28789             all = context.intersects(map.extent()),
28790             data, filter;
28791
28792         if (difference) {
28793             var complete = difference.complete(map.extent());
28794             data = _.compact(_.values(complete));
28795             filter = function(d) { return d.id in complete; };
28796             features.clear(data);
28797
28798         } else {
28799             // force a full redraw if gatherStats detects that a feature
28800             // should be auto-hidden (e.g. points or buildings)..
28801             if (features.gatherStats(all, graph, dimensions)) {
28802                 extent = undefined;
28803             }
28804
28805             if (extent) {
28806                 data = context.intersects(map.extent().intersection(extent));
28807                 var set = d3.set(_.pluck(data, 'id'));
28808                 filter = function(d) { return set.has(d.id); };
28809
28810             } else {
28811                 data = all;
28812                 filter = d3.functor(true);
28813             }
28814         }
28815
28816         data = features.filter(data, graph);
28817
28818         surface
28819             .call(vertices, graph, data, filter, map.extent(), map.zoom())
28820             .call(lines, graph, data, filter)
28821             .call(areas, graph, data, filter)
28822             .call(midpoints, graph, data, filter, map.trimmedExtent())
28823             .call(labels, graph, data, filter, dimensions, !difference && !extent)
28824             .call(points, data, filter);
28825
28826         dispatch.drawn({full: true});
28827     }
28828
28829     function editOff() {
28830         context.features().resetStats();
28831         surface.selectAll('.layer *').remove();
28832         dispatch.drawn({full: true});
28833     }
28834
28835     function dblClick() {
28836         if (!dblclickEnabled) {
28837             d3.event.preventDefault();
28838             d3.event.stopImmediatePropagation();
28839         }
28840     }
28841
28842     function zoomPan() {
28843         if (Math.log(d3.event.scale) / Math.LN2 - 8 < minzoom) {
28844             surface.interrupt();
28845             iD.ui.flash(context.container())
28846                 .select('.content')
28847                 .text(t('cannot_zoom'));
28848             setZoom(context.minEditableZoom(), true);
28849             queueRedraw();
28850             dispatch.move(map);
28851             return;
28852         }
28853
28854         projection
28855             .translate(d3.event.translate)
28856             .scale(d3.event.scale / (2 * Math.PI));
28857
28858         var scale = d3.event.scale / transformStart[0],
28859             tX = Math.round((d3.event.translate[0] / scale - transformStart[1][0]) * scale),
28860             tY = Math.round((d3.event.translate[1] / scale - transformStart[1][1]) * scale);
28861
28862         transformed = true;
28863         iD.util.setTransform(supersurface, tX, tY, scale);
28864         queueRedraw();
28865
28866         dispatch.move(map);
28867     }
28868
28869     function resetTransform() {
28870         if (!transformed) return false;
28871         iD.util.setTransform(supersurface, 0, 0);
28872         transformed = false;
28873         return true;
28874     }
28875
28876     function redraw(difference, extent) {
28877
28878         if (!surface) return;
28879
28880         clearTimeout(timeoutId);
28881
28882         // If we are in the middle of a zoom/pan, we can't do differenced redraws.
28883         // It would result in artifacts where differenced entities are redrawn with
28884         // one transform and unchanged entities with another.
28885         if (resetTransform()) {
28886             difference = extent = undefined;
28887         }
28888
28889         var zoom = String(~~map.zoom());
28890         if (surface.attr('data-zoom') !== zoom) {
28891             surface.attr('data-zoom', zoom)
28892                 .classed('low-zoom', zoom <= 16);
28893         }
28894
28895         if (!difference) {
28896             supersurface.call(context.background());
28897         }
28898
28899         if (map.editable()) {
28900             context.loadTiles(projection, dimensions);
28901             drawVector(difference, extent);
28902         } else {
28903             editOff();
28904         }
28905
28906         transformStart = [
28907             projection.scale() * 2 * Math.PI,
28908             projection.translate().slice()];
28909
28910         return map;
28911     }
28912
28913     var timeoutId;
28914     function queueRedraw() {
28915         clearTimeout(timeoutId);
28916         timeoutId = setTimeout(function() { redraw(); }, 300);
28917     }
28918
28919     function pointLocation(p) {
28920         var translate = projection.translate(),
28921             scale = projection.scale() * 2 * Math.PI;
28922         return [(p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale];
28923     }
28924
28925     function locationPoint(l) {
28926         var translate = projection.translate(),
28927             scale = projection.scale() * 2 * Math.PI;
28928         return [l[0] * scale + translate[0], l[1] * scale + translate[1]];
28929     }
28930
28931     map.mouse = function() {
28932         var e = mousemove || d3.event, s;
28933         while ((s = e.sourceEvent)) e = s;
28934         return mouse(e);
28935     };
28936
28937     map.mouseCoordinates = function() {
28938         return projection.invert(map.mouse());
28939     };
28940
28941     map.dblclickEnable = function(_) {
28942         if (!arguments.length) return dblclickEnabled;
28943         dblclickEnabled = _;
28944         return map;
28945     };
28946
28947     function interpolateZoom(_) {
28948         var k = projection.scale(),
28949             t = projection.translate();
28950
28951         surface.node().__chart__ = {
28952             x: t[0],
28953             y: t[1],
28954             k: k * 2 * Math.PI
28955         };
28956
28957         setZoom(_);
28958         projection.scale(k).translate(t);  // undo setZoom projection changes
28959
28960         zoom.event(surface.transition());
28961     }
28962
28963     function setZoom(_, force) {
28964         if (_ === map.zoom() && !force)
28965             return false;
28966         var scale = 256 * Math.pow(2, _),
28967             center = pxCenter(),
28968             l = pointLocation(center);
28969         scale = Math.max(1024, Math.min(256 * Math.pow(2, 24), scale));
28970         projection.scale(scale / (2 * Math.PI));
28971         zoom.scale(scale);
28972         var t = projection.translate();
28973         l = locationPoint(l);
28974         t[0] += center[0] - l[0];
28975         t[1] += center[1] - l[1];
28976         projection.translate(t);
28977         zoom.translate(projection.translate());
28978         return true;
28979     }
28980
28981     function setCenter(_) {
28982         var c = map.center();
28983         if (_[0] === c[0] && _[1] === c[1])
28984             return false;
28985         var t = projection.translate(),
28986             pxC = pxCenter(),
28987             ll = projection(_);
28988         projection.translate([
28989             t[0] - ll[0] + pxC[0],
28990             t[1] - ll[1] + pxC[1]]);
28991         zoom.translate(projection.translate());
28992         return true;
28993     }
28994
28995     map.pan = function(d) {
28996         var t = projection.translate();
28997         t[0] += d[0];
28998         t[1] += d[1];
28999         projection.translate(t);
29000         zoom.translate(projection.translate());
29001         dispatch.move(map);
29002         return redraw();
29003     };
29004
29005     map.dimensions = function(_) {
29006         if (!arguments.length) return dimensions;
29007         var center = map.center();
29008         dimensions = _;
29009         surface.dimensions(dimensions);
29010         context.background().dimensions(dimensions);
29011         projection.clipExtent([[0, 0], dimensions]);
29012         mouse = iD.util.fastMouse(supersurface.node());
29013         setCenter(center);
29014         return redraw();
29015     };
29016
29017     map.zoomIn = function() { interpolateZoom(~~map.zoom() + 1); };
29018     map.zoomOut = function() { interpolateZoom(~~map.zoom() - 1); };
29019
29020     map.center = function(loc) {
29021         if (!arguments.length) {
29022             return projection.invert(pxCenter());
29023         }
29024
29025         if (setCenter(loc)) {
29026             dispatch.move(map);
29027         }
29028
29029         return redraw();
29030     };
29031
29032     map.zoom = function(z) {
29033         if (!arguments.length) {
29034             return Math.max(Math.log(projection.scale() * 2 * Math.PI) / Math.LN2 - 8, 0);
29035         }
29036
29037         if (z < minzoom) {
29038             surface.interrupt();
29039             iD.ui.flash(context.container())
29040                 .select('.content')
29041                 .text(t('cannot_zoom'));
29042             z = context.minEditableZoom();
29043         }
29044
29045         if (setZoom(z)) {
29046             dispatch.move(map);
29047         }
29048
29049         return redraw();
29050     };
29051
29052     map.zoomTo = function(entity, zoomLimits) {
29053         var extent = entity.extent(context.graph());
29054         if (!isFinite(extent.area())) return;
29055
29056         var zoom = map.trimmedExtentZoom(extent);
29057         zoomLimits = zoomLimits || [context.minEditableZoom(), 20];
29058         map.centerZoom(extent.center(), Math.min(Math.max(zoom, zoomLimits[0]), zoomLimits[1]));
29059     };
29060
29061     map.centerZoom = function(loc, z) {
29062         var centered = setCenter(loc),
29063             zoomed   = setZoom(z);
29064
29065         if (centered || zoomed) {
29066             dispatch.move(map);
29067         }
29068
29069         return redraw();
29070     };
29071
29072     map.centerEase = function(loc) {
29073         var from = map.center().slice(),
29074             t = 0,
29075             stop;
29076
29077         surface.one('mousedown.ease', function() {
29078             stop = true;
29079         });
29080
29081         d3.timer(function() {
29082             if (stop) return true;
29083             map.center(iD.geo.interp(from, loc, (t += 1) / 10));
29084             return t === 10;
29085         }, 20);
29086         return map;
29087     };
29088
29089     map.extent = function(_) {
29090         if (!arguments.length) {
29091             return new iD.geo.Extent(projection.invert([0, dimensions[1]]),
29092                                  projection.invert([dimensions[0], 0]));
29093         } else {
29094             var extent = iD.geo.Extent(_);
29095             map.centerZoom(extent.center(), map.extentZoom(extent));
29096         }
29097     };
29098
29099     map.trimmedExtent = function(_) {
29100         if (!arguments.length) {
29101             var headerY = 60, footerY = 30, pad = 10;
29102             return new iD.geo.Extent(projection.invert([pad, dimensions[1] - footerY - pad]),
29103                     projection.invert([dimensions[0] - pad, headerY + pad]));
29104         } else {
29105             var extent = iD.geo.Extent(_);
29106             map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
29107         }
29108     };
29109
29110     function calcZoom(extent, dim) {
29111         var tl = projection([extent[0][0], extent[1][1]]),
29112             br = projection([extent[1][0], extent[0][1]]);
29113
29114         // Calculate maximum zoom that fits extent
29115         var hFactor = (br[0] - tl[0]) / dim[0],
29116             vFactor = (br[1] - tl[1]) / dim[1],
29117             hZoomDiff = Math.log(Math.abs(hFactor)) / Math.LN2,
29118             vZoomDiff = Math.log(Math.abs(vFactor)) / Math.LN2,
29119             newZoom = map.zoom() - Math.max(hZoomDiff, vZoomDiff);
29120
29121         return newZoom;
29122     }
29123
29124     map.extentZoom = function(_) {
29125         return calcZoom(iD.geo.Extent(_), dimensions);
29126     };
29127
29128     map.trimmedExtentZoom = function(_) {
29129         var trimY = 120, trimX = 40,
29130             trimmed = [dimensions[0] - trimX, dimensions[1] - trimY];
29131         return calcZoom(iD.geo.Extent(_), trimmed);
29132     };
29133
29134     map.editable = function() {
29135         return map.zoom() >= context.minEditableZoom();
29136     };
29137
29138     map.minzoom = function(_) {
29139         if (!arguments.length) return minzoom;
29140         minzoom = _;
29141         return map;
29142     };
29143
29144     return d3.rebind(map, dispatch, 'on');
29145 };
29146 iD.MapillaryLayer = function (context) {
29147     var enable = false,
29148         currentImage,
29149         svg, div, request;
29150
29151     function show(image) {
29152         svg.selectAll('g')
29153             .classed('selected', function(d) {
29154                 return currentImage && d.key === currentImage.key;
29155             });
29156
29157         div.classed('hidden', false)
29158             .classed('temp', image !== currentImage);
29159
29160         div.selectAll('img')
29161             .attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg');
29162
29163         div.selectAll('a')
29164             .attr('href', 'http://mapillary.com/map/im/' + image.key);
29165     }
29166
29167     function hide() {
29168         currentImage = undefined;
29169
29170         svg.selectAll('g')
29171             .classed('selected', false);
29172
29173         div.classed('hidden', true);
29174     }
29175
29176     function transform(image) {
29177         var t = 'translate(' + context.projection(image.loc) + ')';
29178         if (image.ca) t += 'rotate(' + image.ca + ',0,0)';
29179         return t;
29180     }
29181
29182     function render(selection) {
29183         svg = selection.selectAll('svg')
29184             .data([0]);
29185
29186         svg.enter().append('svg')
29187             .on('click', function() {
29188                 var image = d3.event.target.__data__;
29189                 if (currentImage === image) {
29190                     hide();
29191                 } else {
29192                     currentImage = image;
29193                     show(image);
29194                 }
29195             })
29196             .on('mouseover', function() {
29197                 show(d3.event.target.__data__);
29198             })
29199             .on('mouseout', function() {
29200                 if (currentImage) {
29201                     show(currentImage);
29202                 } else {
29203                     hide();
29204                 }
29205             });
29206
29207         svg.style('display', enable ? 'block' : 'none');
29208
29209         div = context.container().selectAll('.mapillary-image')
29210             .data([0]);
29211
29212         var enter = div.enter().append('div')
29213             .attr('class', 'mapillary-image');
29214
29215         enter.append('button')
29216             .on('click', hide)
29217             .append('div')
29218             .attr('class', 'icon close');
29219
29220         enter.append('img');
29221
29222         var link = enter.append('a')
29223             .attr('class', 'link')
29224             .attr('target', '_blank');
29225
29226         link.append('span')
29227             .attr('class', 'icon icon-pre-text out-link');
29228
29229         link.append('span')
29230             .text(t('mapillary.view_on_mapillary'));
29231
29232         if (!enable) {
29233             hide();
29234
29235             svg.selectAll('g')
29236                 .remove();
29237
29238             return;
29239         }
29240
29241         // Update existing images while waiting for new ones to load.
29242         svg.selectAll('g')
29243             .attr('transform', transform);
29244
29245         var extent = context.map().extent();
29246
29247         if (request)
29248             request.abort();
29249
29250         request = d3.json('https://a.mapillary.com/v2/search/s/geojson?client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' +
29251             extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' +
29252             extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true',
29253             function (error, data) {
29254                 if (error) return;
29255
29256                 var images = [];
29257
29258                 for (var i = 0; i < data.features.length; i++) {
29259                     var sequence = data.features[i];
29260                     for (var j = 0; j < sequence.geometry.coordinates.length; j++) {
29261                         images.push({
29262                             key: sequence.properties.keys[j],
29263                             ca: sequence.properties.cas[j],
29264                             loc: sequence.geometry.coordinates[j]
29265                         });
29266                         if (images.length >= 1000) break;
29267                     }
29268                 }
29269
29270                 var g = svg.selectAll('g')
29271                     .data(images, function(d) { return d.key; });
29272
29273                 var enter = g.enter().append('g')
29274                     .attr('class', 'image');
29275
29276                 enter.append('path')
29277                     .attr('d', 'M 0,-5 l 0,-20 l -5,30 l 10,0 l -5,-30');
29278
29279                 enter.append('circle')
29280                     .attr('dx', '0')
29281                     .attr('dy', '0')
29282                     .attr('r', '8');
29283
29284                 g.attr('transform', transform);
29285
29286                 g.exit()
29287                     .remove();
29288             });
29289     }
29290
29291     render.enable = function(_) {
29292         if (!arguments.length) return enable;
29293         enable = _;
29294         return render;
29295     };
29296
29297     render.dimensions = function(_) {
29298         if (!arguments.length) return svg.dimensions();
29299         svg.dimensions(_);
29300         return render;
29301     };
29302
29303     return render;
29304 };
29305 iD.TileLayer = function() {
29306     var tileSize = 256,
29307         tile = d3.geo.tile(),
29308         projection,
29309         cache = {},
29310         tileOrigin,
29311         z,
29312         transformProp = iD.util.prefixCSSProperty('Transform'),
29313         source = d3.functor('');
29314
29315     function tileSizeAtZoom(d, z) {
29316         return Math.ceil(tileSize * Math.pow(2, z - d[2])) / tileSize;
29317     }
29318
29319     function atZoom(t, distance) {
29320         var power = Math.pow(2, distance);
29321         return [
29322             Math.floor(t[0] * power),
29323             Math.floor(t[1] * power),
29324             t[2] + distance];
29325     }
29326
29327     function lookUp(d) {
29328         for (var up = -1; up > -d[2]; up--) {
29329             var tile = atZoom(d, up);
29330             if (cache[source.url(tile)] !== false) {
29331                 return tile;
29332             }
29333         }
29334     }
29335
29336     function uniqueBy(a, n) {
29337         var o = [], seen = {};
29338         for (var i = 0; i < a.length; i++) {
29339             if (seen[a[i][n]] === undefined) {
29340                 o.push(a[i]);
29341                 seen[a[i][n]] = true;
29342             }
29343         }
29344         return o;
29345     }
29346
29347     function addSource(d) {
29348         d.push(source.url(d));
29349         return d;
29350     }
29351
29352     // Update tiles based on current state of `projection`.
29353     function background(selection) {
29354         tile.scale(projection.scale() * 2 * Math.PI)
29355             .translate(projection.translate());
29356
29357         tileOrigin = [
29358             projection.scale() * Math.PI - projection.translate()[0],
29359             projection.scale() * Math.PI - projection.translate()[1]];
29360
29361         z = Math.max(Math.log(projection.scale() * 2 * Math.PI) / Math.log(2) - 8, 0);
29362
29363         render(selection);
29364     }
29365
29366     // Derive the tiles onscreen, remove those offscreen and position them.
29367     // Important that this part not depend on `projection` because it's
29368     // rentered when tiles load/error (see #644).
29369     function render(selection) {
29370         var requests = [];
29371
29372         if (source.validZoom(z)) {
29373             tile().forEach(function(d) {
29374                 addSource(d);
29375                 if (d[3] === '') return;
29376                 if (typeof d[3] !== 'string') return; // Workaround for chrome crash https://github.com/openstreetmap/iD/issues/2295
29377                 requests.push(d);
29378                 if (cache[d[3]] === false && lookUp(d)) {
29379                     requests.push(addSource(lookUp(d)));
29380                 }
29381             });
29382
29383             requests = uniqueBy(requests, 3).filter(function(r) {
29384                 // don't re-request tiles which have failed in the past
29385                 return cache[r[3]] !== false;
29386             });
29387         }
29388
29389         var pixelOffset = [
29390             Math.round(source.offset()[0] * Math.pow(2, z)),
29391             Math.round(source.offset()[1] * Math.pow(2, z))
29392         ];
29393
29394         function load(d) {
29395             cache[d[3]] = true;
29396             d3.select(this)
29397                 .on('error', null)
29398                 .on('load', null)
29399                 .classed('tile-loaded', true);
29400             render(selection);
29401         }
29402
29403         function error(d) {
29404             cache[d[3]] = false;
29405             d3.select(this)
29406                 .on('error', null)
29407                 .on('load', null)
29408                 .remove();
29409             render(selection);
29410         }
29411
29412         function imageTransform(d) {
29413             var _ts = tileSize * Math.pow(2, z - d[2]);
29414             var scale = tileSizeAtZoom(d, z);
29415             return 'translate(' +
29416                 (Math.round((d[0] * _ts) - tileOrigin[0]) + pixelOffset[0]) + 'px,' +
29417                 (Math.round((d[1] * _ts) - tileOrigin[1]) + pixelOffset[1]) + 'px)' +
29418                 'scale(' + scale + ',' + scale + ')';
29419         }
29420
29421         var image = selection
29422             .selectAll('img')
29423             .data(requests, function(d) { return d[3]; });
29424
29425         image.exit()
29426             .style(transformProp, imageTransform)
29427             .classed('tile-removing', true)
29428             .each(function() {
29429                 var tile = d3.select(this);
29430                 window.setTimeout(function() {
29431                     if (tile.classed('tile-removing')) {
29432                         tile.remove();
29433                     }
29434                 }, 300);
29435             });
29436
29437         image.enter().append('img')
29438             .attr('class', 'tile')
29439             .attr('src', function(d) { return d[3]; })
29440             .on('error', error)
29441             .on('load', load);
29442
29443         image
29444             .style(transformProp, imageTransform)
29445             .classed('tile-removing', false);
29446     }
29447
29448     background.projection = function(_) {
29449         if (!arguments.length) return projection;
29450         projection = _;
29451         return background;
29452     };
29453
29454     background.dimensions = function(_) {
29455         if (!arguments.length) return tile.size();
29456         tile.size(_);
29457         return background;
29458     };
29459
29460     background.source = function(_) {
29461         if (!arguments.length) return source;
29462         source = _;
29463         cache = {};
29464         tile.scaleExtent(source.scaleExtent);
29465         return background;
29466     };
29467
29468     return background;
29469 };
29470 iD.svg = {
29471     RoundProjection: function(projection) {
29472         return function(d) {
29473             return iD.geo.roundCoords(projection(d));
29474         };
29475     },
29476
29477     PointTransform: function(projection) {
29478         return function(entity) {
29479             // http://jsperf.com/short-array-join
29480             var pt = projection(entity.loc);
29481             return 'translate(' + pt[0] + ',' + pt[1] + ')';
29482         };
29483     },
29484
29485     Round: function () {
29486         return d3.geo.transform({
29487             point: function(x, y) { return this.stream.point(Math.floor(x), Math.floor(y)); }
29488         });
29489     },
29490
29491     Path: function(projection, graph, polygon) {
29492         var cache = {},
29493             round = iD.svg.Round().stream,
29494             clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
29495             project = projection.stream,
29496             path = d3.geo.path()
29497                 .projection({stream: function(output) { return polygon ? project(round(output)) : project(clip(round(output))); }});
29498
29499         return function(entity) {
29500             if (entity.id in cache) {
29501                 return cache[entity.id];
29502             } else {
29503                 return cache[entity.id] = path(entity.asGeoJSON(graph)); // jshint ignore:line
29504             }
29505         };
29506     },
29507
29508     OneWaySegments: function(projection, graph, dt) {
29509         return function(entity) {
29510             var a,
29511                 b,
29512                 i = 0,
29513                 offset = dt,
29514                 segments = [],
29515                 clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
29516                 coordinates = graph.childNodes(entity).map(function(n) {
29517                     return n.loc;
29518                 });
29519
29520             if (entity.tags.oneway === '-1') coordinates.reverse();
29521
29522             d3.geo.stream({
29523                 type: 'LineString',
29524                 coordinates: coordinates
29525             }, projection.stream(clip({
29526                 lineStart: function() {},
29527                 lineEnd: function() {
29528                     a = null;
29529                 },
29530                 point: function(x, y) {
29531                     b = [x, y];
29532
29533                     if (a) {
29534                         var span = iD.geo.euclideanDistance(a, b) - offset;
29535
29536                         if (span >= 0) {
29537                             var angle = Math.atan2(b[1] - a[1], b[0] - a[0]),
29538                                 dx = dt * Math.cos(angle),
29539                                 dy = dt * Math.sin(angle),
29540                                 p = [a[0] + offset * Math.cos(angle),
29541                                      a[1] + offset * Math.sin(angle)];
29542
29543                             var segment = 'M' + a[0] + ',' + a[1] +
29544                                           'L' + p[0] + ',' + p[1];
29545
29546                             for (span -= dt; span >= 0; span -= dt) {
29547                                 p[0] += dx;
29548                                 p[1] += dy;
29549                                 segment += 'L' + p[0] + ',' + p[1];
29550                             }
29551
29552                             segment += 'L' + b[0] + ',' + b[1];
29553                             segments.push({id: entity.id, index: i, d: segment});
29554                         }
29555
29556                         offset = -span;
29557                         i++;
29558                     }
29559
29560                     a = b;
29561                 }
29562             })));
29563
29564             return segments;
29565         };
29566     },
29567
29568     MultipolygonMemberTags: function(graph) {
29569         return function(entity) {
29570             var tags = entity.tags;
29571             graph.parentRelations(entity).forEach(function(relation) {
29572                 if (relation.isMultipolygon()) {
29573                     tags = _.extend({}, relation.tags, tags);
29574                 }
29575             });
29576             return tags;
29577         };
29578     }
29579 };
29580 iD.svg.Areas = function(projection) {
29581     // Patterns only work in Firefox when set directly on element.
29582     // (This is not a bug: https://bugzilla.mozilla.org/show_bug.cgi?id=750632)
29583     var patterns = {
29584         wetland: 'wetland',
29585         beach: 'beach',
29586         scrub: 'scrub',
29587         construction: 'construction',
29588         military: 'construction',
29589         cemetery: 'cemetery',
29590         grave_yard: 'cemetery',
29591         meadow: 'meadow',
29592         farm: 'farmland',
29593         farmland: 'farmland',
29594         orchard: 'orchard'
29595     };
29596
29597     var patternKeys = ['landuse', 'natural', 'amenity'];
29598
29599     function setPattern(d) {
29600         for (var i = 0; i < patternKeys.length; i++) {
29601             if (patterns.hasOwnProperty(d.tags[patternKeys[i]])) {
29602                 this.style.fill = this.style.stroke = 'url("#pattern-' + patterns[d.tags[patternKeys[i]]] + '")';
29603                 return;
29604             }
29605         }
29606         this.style.fill = this.style.stroke = '';
29607     }
29608
29609     return function drawAreas(surface, graph, entities, filter) {
29610         var path = iD.svg.Path(projection, graph, true),
29611             areas = {},
29612             multipolygon;
29613
29614         for (var i = 0; i < entities.length; i++) {
29615             var entity = entities[i];
29616             if (entity.geometry(graph) !== 'area') continue;
29617
29618             multipolygon = iD.geo.isSimpleMultipolygonOuterMember(entity, graph);
29619             if (multipolygon) {
29620                 areas[multipolygon.id] = {
29621                     entity: multipolygon.mergeTags(entity.tags),
29622                     area: Math.abs(entity.area(graph))
29623                 };
29624             } else if (!areas[entity.id]) {
29625                 areas[entity.id] = {
29626                     entity: entity,
29627                     area: Math.abs(entity.area(graph))
29628                 };
29629             }
29630         }
29631
29632         areas = d3.values(areas).filter(function hasPath(a) { return path(a.entity); });
29633         areas.sort(function areaSort(a, b) { return b.area - a.area; });
29634         areas = _.pluck(areas, 'entity');
29635
29636         var strokes = areas.filter(function(area) {
29637             return area.type === 'way';
29638         });
29639
29640         var data = {
29641             clip: areas,
29642             shadow: strokes,
29643             stroke: strokes,
29644             fill: areas
29645         };
29646
29647         var clipPaths = surface.selectAll('defs').selectAll('.clipPath')
29648            .filter(filter)
29649            .data(data.clip, iD.Entity.key);
29650
29651         clipPaths.enter()
29652            .append('clipPath')
29653            .attr('class', 'clipPath')
29654            .attr('id', function(entity) { return entity.id + '-clippath'; })
29655            .append('path');
29656
29657         clipPaths.selectAll('path')
29658            .attr('d', path);
29659
29660         clipPaths.exit()
29661            .remove();
29662
29663         var areagroup = surface
29664             .select('.layer-areas')
29665             .selectAll('g.areagroup')
29666             .data(['fill', 'shadow', 'stroke']);
29667
29668         areagroup.enter()
29669             .append('g')
29670             .attr('class', function(d) { return 'layer areagroup area-' + d; });
29671
29672         var paths = areagroup
29673             .selectAll('path')
29674             .filter(filter)
29675             .data(function(layer) { return data[layer]; }, iD.Entity.key);
29676
29677         // Remove exiting areas first, so they aren't included in the `fills`
29678         // array used for sorting below (https://github.com/openstreetmap/iD/issues/1903).
29679         paths.exit()
29680             .remove();
29681
29682         var fills = surface.selectAll('.area-fill path.area')[0];
29683
29684         var bisect = d3.bisector(function(node) {
29685             return -node.__data__.area(graph);
29686         }).left;
29687
29688         function sortedByArea(entity) {
29689             if (this.__data__ === 'fill') {
29690                 return fills[bisect(fills, -entity.area(graph))];
29691             }
29692         }
29693
29694         paths.enter()
29695             .insert('path', sortedByArea)
29696             .each(function(entity) {
29697                 var layer = this.parentNode.__data__;
29698
29699                 this.setAttribute('class', entity.type + ' area ' + layer + ' ' + entity.id);
29700
29701                 if (layer === 'fill') {
29702                     this.setAttribute('clip-path', 'url(#' + entity.id + '-clippath)');
29703                     setPattern.apply(this, arguments);
29704                 }
29705             })
29706             .call(iD.svg.TagClasses());
29707
29708         paths
29709             .attr('d', path);
29710     };
29711 };
29712 /*
29713     A standalone SVG element that contains only a `defs` sub-element. To be
29714     used once globally, since defs IDs must be unique within a document.
29715 */
29716 iD.svg.Defs = function(context) {
29717     function autosize(image) {
29718         var img = document.createElement('img');
29719         img.src = image.attr('xlink:href');
29720         img.onload = function() {
29721             image.attr({
29722                 width: img.width,
29723                 height: img.height
29724             });
29725         };
29726     }
29727
29728     function SpriteDefinition(id, href, data) {
29729         return function(defs) {
29730             defs.append('image')
29731                 .attr('id', id)
29732                 .attr('xlink:href', href)
29733                 .call(autosize);
29734
29735             defs.selectAll()
29736                 .data(data)
29737                 .enter().append('use')
29738                 .attr('id', function(d) { return d.key; })
29739                 .attr('transform', function(d) { return 'translate(-' + d.value[0] + ',-' + d.value[1] + ')'; })
29740                 .attr('xlink:href', '#' + id);
29741         };
29742     }
29743
29744     return function (selection) {
29745         var defs = selection.append('defs');
29746
29747         defs.append('marker')
29748             .attr({
29749                 id: 'oneway-marker',
29750                 viewBox: '0 0 10 10',
29751                 refY: 2.5,
29752                 refX: 5,
29753                 markerWidth: 2,
29754                 markerHeight: 2,
29755                 orient: 'auto'
29756             })
29757             .append('path')
29758             .attr('d', 'M 5 3 L 0 3 L 0 2 L 5 2 L 5 0 L 10 2.5 L 5 5 z');
29759
29760         var patterns = defs.selectAll('pattern')
29761             .data([
29762                 // pattern name, pattern image name
29763                 ['wetland', 'wetland'],
29764                 ['construction', 'construction'],
29765                 ['cemetery', 'cemetery'],
29766                 ['orchard', 'orchard'],
29767                 ['farmland', 'farmland'],
29768                 ['beach', 'dots'],
29769                 ['scrub', 'dots'],
29770                 ['meadow', 'dots']
29771             ])
29772             .enter()
29773             .append('pattern')
29774             .attr({
29775                 id: function (d) {
29776                     return 'pattern-' + d[0];
29777                 },
29778                 width: 32,
29779                 height: 32,
29780                 patternUnits: 'userSpaceOnUse'
29781             });
29782
29783         patterns.append('rect')
29784             .attr({
29785                 x: 0,
29786                 y: 0,
29787                 width: 32,
29788                 height: 32,
29789                 'class': function (d) {
29790                     return 'pattern-color-' + d[0];
29791                 }
29792             });
29793
29794         patterns.append('image')
29795             .attr({
29796                 x: 0,
29797                 y: 0,
29798                 width: 32,
29799                 height: 32
29800             })
29801             .attr('xlink:href', function (d) {
29802                 return context.imagePath('pattern/' + d[1] + '.png');
29803             });
29804
29805         defs.selectAll()
29806             .data([12, 18, 20, 32, 45])
29807             .enter().append('clipPath')
29808             .attr('id', function (d) {
29809                 return 'clip-square-' + d;
29810             })
29811             .append('rect')
29812             .attr('x', 0)
29813             .attr('y', 0)
29814             .attr('width', function (d) {
29815                 return d;
29816             })
29817             .attr('height', function (d) {
29818                 return d;
29819             });
29820
29821         var maki = [];
29822         _.forEach(iD.data.featureIcons, function (dimensions, name) {
29823             if (dimensions['12'] && dimensions['18'] && dimensions['24']) {
29824                 maki.push({key: 'maki-' + name + '-12', value: dimensions['12']});
29825                 maki.push({key: 'maki-' + name + '-18', value: dimensions['18']});
29826                 maki.push({key: 'maki-' + name + '-24', value: dimensions['24']});
29827             }
29828         });
29829
29830         defs.call(SpriteDefinition(
29831             'sprite',
29832             context.imagePath('sprite.svg'),
29833             d3.entries(iD.data.operations)));
29834
29835         defs.call(SpriteDefinition(
29836             'maki-sprite',
29837             context.imagePath('maki-sprite.png'),
29838             maki));
29839     };
29840 };
29841 iD.svg.Labels = function(projection, context) {
29842     var path = d3.geo.path().projection(projection);
29843
29844     // Replace with dict and iterate over entities tags instead?
29845     var label_stack = [
29846         ['line', 'aeroway'],
29847         ['line', 'highway'],
29848         ['line', 'railway'],
29849         ['line', 'waterway'],
29850         ['area', 'aeroway'],
29851         ['area', 'amenity'],
29852         ['area', 'building'],
29853         ['area', 'historic'],
29854         ['area', 'leisure'],
29855         ['area', 'man_made'],
29856         ['area', 'natural'],
29857         ['area', 'shop'],
29858         ['area', 'tourism'],
29859         ['point', 'aeroway'],
29860         ['point', 'amenity'],
29861         ['point', 'building'],
29862         ['point', 'historic'],
29863         ['point', 'leisure'],
29864         ['point', 'man_made'],
29865         ['point', 'natural'],
29866         ['point', 'shop'],
29867         ['point', 'tourism'],
29868         ['line', 'name'],
29869         ['area', 'name'],
29870         ['point', 'name']
29871     ];
29872
29873     var default_size = 12;
29874
29875     var font_sizes = label_stack.map(function(d) {
29876         var style = iD.util.getStyle('text.' + d[0] + '.tag-' + d[1]),
29877             m = style && style.cssText.match('font-size: ([0-9]{1,2})px;');
29878         if (m) return parseInt(m[1], 10);
29879
29880         style = iD.util.getStyle('text.' + d[0]);
29881         m = style && style.cssText.match('font-size: ([0-9]{1,2})px;');
29882         if (m) return parseInt(m[1], 10);
29883
29884         return default_size;
29885     });
29886
29887     var iconSize = 18;
29888
29889     var pointOffsets = [
29890         [15, -11, 'start'], // right
29891         [10, -11, 'start'], // unused right now
29892         [-15, -11, 'end']
29893     ];
29894
29895     var lineOffsets = [50, 45, 55, 40, 60, 35, 65, 30, 70, 25,
29896         75, 20, 80, 15, 95, 10, 90, 5, 95];
29897
29898
29899     var noIcons = ['building', 'landuse', 'natural'];
29900     function blacklisted(preset) {
29901         return _.any(noIcons, function(s) {
29902             return preset.id.indexOf(s) >= 0;
29903         });
29904     }
29905
29906     function get(array, prop) {
29907         return function(d, i) { return array[i][prop]; };
29908     }
29909
29910     var textWidthCache = {};
29911
29912     function textWidth(text, size, elem) {
29913         var c = textWidthCache[size];
29914         if (!c) c = textWidthCache[size] = {};
29915
29916         if (c[text]) {
29917             return c[text];
29918
29919         } else if (elem) {
29920             c[text] = elem.getComputedTextLength();
29921             return c[text];
29922
29923         } else {
29924             var str = encodeURIComponent(text).match(/%[CDEFcdef]/g);
29925             if (str === null) {
29926                 return size / 3 * 2 * text.length;
29927             } else {
29928                 return size / 3 * (2 * text.length + str.length);
29929             }
29930         }
29931     }
29932
29933     function drawLineLabels(group, entities, filter, classes, labels) {
29934         var texts = group.selectAll('text.' + classes)
29935             .filter(filter)
29936             .data(entities, iD.Entity.key);
29937
29938         texts.enter()
29939             .append('text')
29940             .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; })
29941             .append('textPath')
29942             .attr('class', 'textpath');
29943
29944
29945         texts.selectAll('.textpath')
29946             .filter(filter)
29947             .data(entities, iD.Entity.key)
29948             .attr({
29949                 'startOffset': '50%',
29950                 'xlink:href': function(d) { return '#labelpath-' + d.id; }
29951             })
29952             .text(iD.util.displayName);
29953
29954         texts.exit().remove();
29955     }
29956
29957     function drawLinePaths(group, entities, filter, classes, labels) {
29958         var halos = group.selectAll('path')
29959             .filter(filter)
29960             .data(entities, iD.Entity.key);
29961
29962         halos.enter()
29963             .append('path')
29964             .style('stroke-width', get(labels, 'font-size'))
29965             .attr('id', function(d) { return 'labelpath-' + d.id; })
29966             .attr('class', classes);
29967
29968         halos.attr('d', get(labels, 'lineString'));
29969
29970         halos.exit().remove();
29971     }
29972
29973     function drawPointLabels(group, entities, filter, classes, labels) {
29974
29975         var texts = group.selectAll('text.' + classes)
29976             .filter(filter)
29977             .data(entities, iD.Entity.key);
29978
29979         texts.enter()
29980             .append('text')
29981             .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; });
29982
29983         texts.attr('x', get(labels, 'x'))
29984             .attr('y', get(labels, 'y'))
29985             .style('text-anchor', get(labels, 'textAnchor'))
29986             .text(iD.util.displayName)
29987             .each(function(d, i) { textWidth(iD.util.displayName(d), labels[i].height, this); });
29988
29989         texts.exit().remove();
29990         return texts;
29991     }
29992
29993     function drawAreaLabels(group, entities, filter, classes, labels) {
29994         entities = entities.filter(hasText);
29995         labels = labels.filter(hasText);
29996         return drawPointLabels(group, entities, filter, classes, labels);
29997
29998         function hasText(d, i) {
29999             return labels[i].hasOwnProperty('x') && labels[i].hasOwnProperty('y');
30000         }
30001     }
30002
30003     function drawAreaIcons(group, entities, filter, classes, labels) {
30004
30005         var icons = group.selectAll('use')
30006             .filter(filter)
30007             .data(entities, iD.Entity.key);
30008
30009         icons.enter()
30010             .append('use')
30011             .attr('clip-path', 'url(#clip-square-18)')
30012             .attr('class', 'icon');
30013
30014         icons.attr('transform', get(labels, 'transform'))
30015             .attr('xlink:href', function(d) {
30016                 return '#maki-' + context.presets().match(d, context.graph()).icon + '-18';
30017             });
30018
30019
30020         icons.exit().remove();
30021     }
30022
30023     function reverse(p) {
30024         var angle = Math.atan2(p[1][1] - p[0][1], p[1][0] - p[0][0]);
30025         return !(p[0][0] < p[p.length - 1][0] && angle < Math.PI/2 && angle > - Math.PI/2);
30026     }
30027
30028     function lineString(nodes) {
30029         return 'M' + nodes.join('L');
30030     }
30031
30032     function subpath(nodes, from, to) {
30033         function segmentLength(i) {
30034             var dx = nodes[i][0] - nodes[i + 1][0];
30035             var dy = nodes[i][1] - nodes[i + 1][1];
30036             return Math.sqrt(dx * dx + dy * dy);
30037         }
30038
30039         var sofar = 0,
30040             start, end, i0, i1;
30041         for (var i = 0; i < nodes.length - 1; i++) {
30042             var current = segmentLength(i);
30043             var portion;
30044             if (!start && sofar + current >= from) {
30045                 portion = (from - sofar) / current;
30046                 start = [
30047                     nodes[i][0] + portion * (nodes[i + 1][0] - nodes[i][0]),
30048                     nodes[i][1] + portion * (nodes[i + 1][1] - nodes[i][1])
30049                 ];
30050                 i0 = i + 1;
30051             }
30052             if (!end && sofar + current >= to) {
30053                 portion = (to - sofar) / current;
30054                 end = [
30055                     nodes[i][0] + portion * (nodes[i + 1][0] - nodes[i][0]),
30056                     nodes[i][1] + portion * (nodes[i + 1][1] - nodes[i][1])
30057                 ];
30058                 i1 = i + 1;
30059             }
30060             sofar += current;
30061
30062         }
30063         var ret = nodes.slice(i0, i1);
30064         ret.unshift(start);
30065         ret.push(end);
30066         return ret;
30067
30068     }
30069
30070     function hideOnMouseover() {
30071         var layers = d3.select(this)
30072             .selectAll('.layer-label, .layer-halo');
30073
30074         layers.selectAll('.proximate')
30075             .classed('proximate', false);
30076
30077         var mouse = context.mouse(),
30078             pad = 50,
30079             rect = [mouse[0] - pad, mouse[1] - pad, mouse[0] + pad, mouse[1] + pad],
30080             ids = _.pluck(rtree.search(rect), 'id');
30081
30082         if (!ids.length) return;
30083         layers.selectAll('.' + ids.join(', .'))
30084             .classed('proximate', true);
30085     }
30086
30087     var rtree = rbush(),
30088         rectangles = {};
30089
30090     function labels(surface, graph, entities, filter, dimensions, fullRedraw) {
30091
30092         var hidePoints = !surface.select('.node.point').node();
30093
30094         var labelable = [], i, k, entity;
30095         for (i = 0; i < label_stack.length; i++) labelable.push([]);
30096
30097         if (fullRedraw) {
30098             rtree.clear();
30099             rectangles = {};
30100         } else {
30101             for (i = 0; i < entities.length; i++) {
30102                 rtree.remove(rectangles[entities[i].id]);
30103             }
30104         }
30105
30106         // Split entities into groups specified by label_stack
30107         for (i = 0; i < entities.length; i++) {
30108             entity = entities[i];
30109             var geometry = entity.geometry(graph);
30110
30111             if (geometry === 'vertex')
30112                 continue;
30113             if (hidePoints && geometry === 'point')
30114                 continue;
30115
30116             var preset = geometry === 'area' && context.presets().match(entity, graph),
30117                 icon = preset && !blacklisted(preset) && preset.icon;
30118
30119             if (!icon && !iD.util.displayName(entity))
30120                 continue;
30121
30122             for (k = 0; k < label_stack.length; k ++) {
30123                 if (geometry === label_stack[k][0] && entity.tags[label_stack[k][1]]) {
30124                     labelable[k].push(entity);
30125                     break;
30126                 }
30127             }
30128         }
30129
30130         var positions = {
30131             point: [],
30132             line: [],
30133             area: []
30134         };
30135
30136         var labelled = {
30137             point: [],
30138             line: [],
30139             area: []
30140         };
30141
30142         // Try and find a valid label for labellable entities
30143         for (k = 0; k < labelable.length; k++) {
30144             var font_size = font_sizes[k];
30145             for (i = 0; i < labelable[k].length; i ++) {
30146                 entity = labelable[k][i];
30147                 var name = iD.util.displayName(entity),
30148                     width = name && textWidth(name, font_size),
30149                     p;
30150                 if (entity.geometry(graph) === 'point') {
30151                     p = getPointLabel(entity, width, font_size);
30152                 } else if (entity.geometry(graph) === 'line') {
30153                     p = getLineLabel(entity, width, font_size);
30154                 } else if (entity.geometry(graph) === 'area') {
30155                     p = getAreaLabel(entity, width, font_size);
30156                 }
30157                 if (p) {
30158                     p.classes = entity.geometry(graph) + ' tag-' + label_stack[k][1];
30159                     positions[entity.geometry(graph)].push(p);
30160                     labelled[entity.geometry(graph)].push(entity);
30161                 }
30162             }
30163         }
30164
30165         function getPointLabel(entity, width, height) {
30166             var coord = projection(entity.loc),
30167                 m = 5,  // margin
30168                 offset = pointOffsets[0],
30169                 p = {
30170                     height: height,
30171                     width: width,
30172                     x: coord[0] + offset[0],
30173                     y: coord[1] + offset[1],
30174                     textAnchor: offset[2]
30175                 };
30176             var rect = [p.x - m, p.y - m, p.x + width + m, p.y + height + m];
30177             if (tryInsert(rect, entity.id)) return p;
30178         }
30179
30180
30181         function getLineLabel(entity, width, height) {
30182             var nodes = _.pluck(graph.childNodes(entity), 'loc').map(projection),
30183                 length = iD.geo.pathLength(nodes);
30184             if (length < width + 20) return;
30185
30186             for (var i = 0; i < lineOffsets.length; i ++) {
30187                 var offset = lineOffsets[i],
30188                     middle = offset / 100 * length,
30189                     start = middle - width/2;
30190                 if (start < 0 || start + width > length) continue;
30191                 var sub = subpath(nodes, start, start + width),
30192                     rev = reverse(sub),
30193                     rect = [
30194                         Math.min(sub[0][0], sub[sub.length - 1][0]) - 10,
30195                         Math.min(sub[0][1], sub[sub.length - 1][1]) - 10,
30196                         Math.max(sub[0][0], sub[sub.length - 1][0]) + 20,
30197                         Math.max(sub[0][1], sub[sub.length - 1][1]) + 30
30198                     ];
30199                 if (rev) sub = sub.reverse();
30200                 if (tryInsert(rect, entity.id)) return {
30201                     'font-size': height + 2,
30202                     lineString: lineString(sub),
30203                     startOffset: offset + '%'
30204                 };
30205             }
30206         }
30207
30208         function getAreaLabel(entity, width, height) {
30209             var centroid = path.centroid(entity.asGeoJSON(graph, true)),
30210                 extent = entity.extent(graph),
30211                 entitywidth = projection(extent[1])[0] - projection(extent[0])[0],
30212                 rect;
30213
30214             if (!centroid || entitywidth < 20) return;
30215
30216             var iconX = centroid[0] - (iconSize/2),
30217                 iconY = centroid[1] - (iconSize/2),
30218                 textOffset = iconSize + 5;
30219
30220             var p = {
30221                 transform: 'translate(' + iconX + ',' + iconY + ')'
30222             };
30223
30224             if (width && entitywidth >= width + 20) {
30225                 p.x = centroid[0];
30226                 p.y = centroid[1] + textOffset;
30227                 p.textAnchor = 'middle';
30228                 p.height = height;
30229                 rect = [p.x - width/2, p.y, p.x + width/2, p.y + height + textOffset];
30230             } else {
30231                 rect = [iconX, iconY, iconX + iconSize, iconY + iconSize];
30232             }
30233
30234             if (tryInsert(rect, entity.id)) return p;
30235
30236         }
30237
30238         function tryInsert(rect, id) {
30239             // Check that label is visible
30240             if (rect[0] < 0 || rect[1] < 0 || rect[2] > dimensions[0] ||
30241                 rect[3] > dimensions[1]) return false;
30242             var v = rtree.search(rect).length === 0;
30243             if (v) {
30244                 rect.id = id;
30245                 rtree.insert(rect);
30246                 rectangles[id] = rect;
30247             }
30248             return v;
30249         }
30250
30251         var label = surface.select('.layer-label'),
30252             halo = surface.select('.layer-halo');
30253
30254         // points
30255         drawPointLabels(label, labelled.point, filter, 'pointlabel', positions.point);
30256         drawPointLabels(halo, labelled.point, filter, 'pointlabel-halo', positions.point);
30257
30258         // lines
30259         drawLinePaths(halo, labelled.line, filter, '', positions.line);
30260         drawLineLabels(label, labelled.line, filter, 'linelabel', positions.line);
30261         drawLineLabels(halo, labelled.line, filter, 'linelabel-halo', positions.line);
30262
30263         // areas
30264         drawAreaLabels(label, labelled.area, filter, 'arealabel', positions.area);
30265         drawAreaLabels(halo, labelled.area, filter, 'arealabel-halo', positions.area);
30266         drawAreaIcons(label, labelled.area, filter, 'arealabel-icon', positions.area);
30267     }
30268
30269     labels.supersurface = function(supersurface) {
30270         supersurface
30271             .on('mousemove.hidelabels', hideOnMouseover)
30272             .on('mousedown.hidelabels', function () {
30273                 supersurface.on('mousemove.hidelabels', null);
30274             })
30275             .on('mouseup.hidelabels', function () {
30276                 supersurface.on('mousemove.hidelabels', hideOnMouseover);
30277             });
30278     };
30279
30280     return labels;
30281 };
30282 iD.svg.Lines = function(projection) {
30283
30284     var highway_stack = {
30285         motorway: 0,
30286         motorway_link: 1,
30287         trunk: 2,
30288         trunk_link: 3,
30289         primary: 4,
30290         primary_link: 5,
30291         secondary: 6,
30292         tertiary: 7,
30293         unclassified: 8,
30294         residential: 9,
30295         service: 10,
30296         footway: 11
30297     };
30298
30299     function waystack(a, b) {
30300         var as = 0, bs = 0;
30301
30302         if (a.tags.highway) { as -= highway_stack[a.tags.highway]; }
30303         if (b.tags.highway) { bs -= highway_stack[b.tags.highway]; }
30304         return as - bs;
30305     }
30306
30307     return function drawLines(surface, graph, entities, filter) {
30308         var ways = [], pathdata = {}, onewaydata = {},
30309             getPath = iD.svg.Path(projection, graph);
30310
30311         for (var i = 0; i < entities.length; i++) {
30312             var entity = entities[i],
30313                 outer = iD.geo.simpleMultipolygonOuterMember(entity, graph);
30314             if (outer) {
30315                 ways.push(entity.mergeTags(outer.tags));
30316             } else if (entity.geometry(graph) === 'line') {
30317                 ways.push(entity);
30318             }
30319         }
30320
30321         ways = ways.filter(getPath);
30322
30323         pathdata = _.groupBy(ways, function(way) { return way.layer(); });
30324
30325         _.forOwn(pathdata, function(v, k) {
30326             onewaydata[k] = _(v)
30327                 .filter(function(d) { return d.isOneWay(); })
30328                 .map(iD.svg.OneWaySegments(projection, graph, 35))
30329                 .flatten()
30330                 .valueOf();
30331         });
30332
30333         var layergroup = surface
30334             .select('.layer-lines')
30335             .selectAll('g.layergroup')
30336             .data(d3.range(-10, 11));
30337
30338         layergroup.enter()
30339             .append('g')
30340             .attr('class', function(d) { return 'layer layergroup layer' + String(d); });
30341
30342
30343         var linegroup = layergroup
30344             .selectAll('g.linegroup')
30345             .data(['shadow', 'casing', 'stroke']);
30346
30347         linegroup.enter()
30348             .append('g')
30349             .attr('class', function(d) { return 'layer linegroup line-' + d; });
30350
30351
30352         var lines = linegroup
30353             .selectAll('path')
30354             .filter(filter)
30355             .data(
30356                 function() { return pathdata[this.parentNode.parentNode.__data__] || []; },
30357                 iD.Entity.key
30358             );
30359
30360         // Optimization: call simple TagClasses only on enter selection. This
30361         // works because iD.Entity.key is defined to include the entity v attribute.
30362         lines.enter()
30363             .append('path')
30364             .attr('class', function(d) { return 'way line ' + this.parentNode.__data__ + ' ' + d.id; })
30365             .call(iD.svg.TagClasses());
30366
30367         lines
30368             .sort(waystack)
30369             .attr('d', getPath)
30370             .call(iD.svg.TagClasses().tags(iD.svg.MultipolygonMemberTags(graph)));
30371
30372         lines.exit()
30373             .remove();
30374
30375
30376         var onewaygroup = layergroup
30377             .selectAll('g.onewaygroup')
30378             .data(['oneway']);
30379
30380         onewaygroup.enter()
30381             .append('g')
30382             .attr('class', 'layer onewaygroup');
30383
30384
30385         var oneways = onewaygroup
30386             .selectAll('path')
30387             .filter(filter)
30388             .data(
30389                 function() { return onewaydata[this.parentNode.parentNode.__data__] || []; },
30390                 function(d) { return [d.id, d.index]; }
30391             );
30392
30393         oneways.enter()
30394             .append('path')
30395             .attr('class', 'oneway')
30396             .attr('marker-mid', 'url(#oneway-marker)');
30397
30398         oneways
30399             .attr('d', function(d) { return d.d; });
30400
30401         oneways.exit()
30402             .remove();
30403
30404     };
30405 };
30406 iD.svg.Midpoints = function(projection, context) {
30407     return function drawMidpoints(surface, graph, entities, filter, extent) {
30408         var poly = extent.polygon(),
30409             midpoints = {};
30410
30411         for (var i = 0; i < entities.length; i++) {
30412             var entity = entities[i];
30413
30414             if (entity.type !== 'way')
30415                 continue;
30416             if (!filter(entity))
30417                 continue;
30418             if (context.selectedIDs().indexOf(entity.id) < 0)
30419                 continue;
30420
30421             var nodes = graph.childNodes(entity);
30422             for (var j = 0; j < nodes.length - 1; j++) {
30423
30424                 var a = nodes[j],
30425                     b = nodes[j + 1],
30426                     id = [a.id, b.id].sort().join('-');
30427
30428                 if (midpoints[id]) {
30429                     midpoints[id].parents.push(entity);
30430                 } else {
30431                     if (iD.geo.euclideanDistance(projection(a.loc), projection(b.loc)) > 40) {
30432                         var point = iD.geo.interp(a.loc, b.loc, 0.5),
30433                             loc = null;
30434
30435                         if (extent.intersects(point)) {
30436                             loc = point;
30437                         } else {
30438                             for (var k = 0; k < 4; k++) {
30439                                 point = iD.geo.lineIntersection([a.loc, b.loc], [poly[k], poly[k+1]]);
30440                                 if (point &&
30441                                     iD.geo.euclideanDistance(projection(a.loc), projection(point)) > 20 &&
30442                                     iD.geo.euclideanDistance(projection(b.loc), projection(point)) > 20)
30443                                 {
30444                                     loc = point;
30445                                     break;
30446                                 }
30447                             }
30448                         }
30449
30450                         if (loc) {
30451                             midpoints[id] = {
30452                                 type: 'midpoint',
30453                                 id: id,
30454                                 loc: loc,
30455                                 edge: [a.id, b.id],
30456                                 parents: [entity]
30457                             };
30458                         }
30459                     }
30460                 }
30461             }
30462         }
30463
30464         function midpointFilter(d) {
30465             if (midpoints[d.id])
30466                 return true;
30467
30468             for (var i = 0; i < d.parents.length; i++)
30469                 if (filter(d.parents[i]))
30470                     return true;
30471
30472             return false;
30473         }
30474
30475         var groups = surface.select('.layer-hit').selectAll('g.midpoint')
30476             .filter(midpointFilter)
30477             .data(_.values(midpoints), function(d) { return d.id; });
30478
30479         var enter = groups.enter()
30480             .insert('g', ':first-child')
30481             .attr('class', 'midpoint');
30482
30483         enter.append('polygon')
30484             .attr('points', '-6,8 10,0 -6,-8')
30485             .attr('class', 'shadow');
30486
30487         enter.append('polygon')
30488             .attr('points', '-3,4 5,0 -3,-4')
30489             .attr('class', 'fill');
30490
30491         groups
30492             .attr('transform', function(d) {
30493                 var translate = iD.svg.PointTransform(projection),
30494                     a = context.entity(d.edge[0]),
30495                     b = context.entity(d.edge[1]),
30496                     angle = Math.round(iD.geo.angle(a, b, projection) * (180 / Math.PI));
30497                 return translate(d) + ' rotate(' + angle + ')';
30498             })
30499             .call(iD.svg.TagClasses().tags(
30500                 function(d) { return d.parents[0].tags; }
30501             ));
30502
30503         // Propagate data bindings.
30504         groups.select('polygon.shadow');
30505         groups.select('polygon.fill');
30506
30507         groups.exit()
30508             .remove();
30509     };
30510 };
30511 iD.svg.Points = function(projection, context) {
30512     function markerPath(selection, klass) {
30513         selection
30514             .attr('class', klass)
30515             .attr('transform', 'translate(-8, -23)')
30516             .attr('d', 'M 17,8 C 17,13 11,21 8.5,23.5 C 6,21 0,13 0,8 C 0,4 4,-0.5 8.5,-0.5 C 13,-0.5 17,4 17,8 z');
30517     }
30518
30519     function sortY(a, b) {
30520         return b.loc[1] - a.loc[1];
30521     }
30522
30523     return function drawPoints(surface, entities, filter) {
30524         var graph = context.graph(),
30525             wireframe = surface.classed('fill-wireframe'),
30526             points = wireframe ? [] : _.filter(entities, function(e) {
30527                 return e.geometry(graph) === 'point';
30528             });
30529
30530         points.sort(sortY);
30531
30532         var groups = surface.select('.layer-hit').selectAll('g.point')
30533             .filter(filter)
30534             .data(points, iD.Entity.key);
30535
30536         var group = groups.enter()
30537             .append('g')
30538             .attr('class', function(d) { return 'node point ' + d.id; })
30539             .order();
30540
30541         group.append('path')
30542             .call(markerPath, 'shadow');
30543
30544         group.append('path')
30545             .call(markerPath, 'stroke');
30546
30547         group.append('use')
30548             .attr('class', 'icon')
30549             .attr('transform', 'translate(-6, -20)')
30550             .attr('clip-path', 'url(#clip-square-12)');
30551
30552         groups.attr('transform', iD.svg.PointTransform(projection))
30553             .call(iD.svg.TagClasses());
30554
30555         // Selecting the following implicitly
30556         // sets the data (point entity) on the element
30557         groups.select('.shadow');
30558         groups.select('.stroke');
30559         groups.select('.icon')
30560             .attr('xlink:href', function(entity) {
30561                 var preset = context.presets().match(entity, context.graph());
30562                 return preset.icon ? '#maki-' + preset.icon + '-12' : '';
30563             });
30564
30565         groups.exit()
30566             .remove();
30567     };
30568 };
30569 iD.svg.Surface = function() {
30570     return function (selection) {
30571         selection.selectAll('defs')
30572             .data([0])
30573             .enter()
30574             .append('defs');
30575
30576         var layers = selection.selectAll('.layer')
30577             .data(['areas', 'lines', 'hit', 'halo', 'label']);
30578
30579         layers.enter().append('g')
30580             .attr('class', function(d) { return 'layer layer-' + d; });
30581     };
30582 };
30583 iD.svg.TagClasses = function() {
30584     var primary = [
30585             'building', 'highway', 'railway', 'waterway', 'aeroway',
30586             'motorway', 'boundary', 'power', 'amenity', 'natural', 'landuse',
30587             'leisure', 'place'
30588         ],
30589         secondary = [
30590             'oneway', 'bridge', 'tunnel', 'construction', 'embankment', 'cutting', 'barrier'
30591         ],
30592         tagClassRe = /^tag-/,
30593         tags = function(entity) { return entity.tags; };
30594
30595     var tagClasses = function(selection) {
30596         selection.each(function tagClassesEach(entity) {
30597             var classes, value = this.className;
30598
30599             if (value.baseVal !== undefined) value = value.baseVal;
30600
30601             classes = value.trim().split(/\s+/).filter(function(name) {
30602                 return name.length && !tagClassRe.test(name);
30603             }).join(' ');
30604
30605             var t = tags(entity), i, k, v;
30606
30607             for (i = 0; i < primary.length; i++) {
30608                 k = primary[i];
30609                 v = t[k];
30610                 if (!v || v === 'no') continue;
30611                 classes += ' tag-' + k + ' tag-' + k + '-' + v;
30612                 break;
30613             }
30614
30615             for (i = 0; i < secondary.length; i++) {
30616                 k = secondary[i];
30617                 v = t[k];
30618                 if (!v || v === 'no') continue;
30619                 classes += ' tag-' + k + ' tag-' + k + '-' + v;
30620             }
30621
30622             classes = classes.trim();
30623
30624             if (classes !== value) {
30625                 d3.select(this).attr('class', classes);
30626             }
30627         });
30628     };
30629
30630     tagClasses.tags = function(_) {
30631         if (!arguments.length) return tags;
30632         tags = _;
30633         return tagClasses;
30634     };
30635
30636     return tagClasses;
30637 };
30638 iD.svg.Turns = function(projection) {
30639     return function(surface, graph, turns) {
30640         function key(turn) {
30641             return [turn.from.node + turn.via.node + turn.to.node].join('-');
30642         }
30643
30644         function icon(turn) {
30645             var u = turn.u ? '-u' : '';
30646             if (!turn.restriction)
30647                 return '#icon-restriction-yes' + u;
30648             var restriction = graph.entity(turn.restriction).tags.restriction;
30649             return '#icon-restriction-' +
30650                 (!turn.indirect_restriction && /^only_/.test(restriction) ? 'only' : 'no') + u;
30651         }
30652
30653         var groups = surface.select('.layer-hit').selectAll('g.turn')
30654             .data(turns, key);
30655
30656         // Enter
30657
30658         var enter = groups.enter().append('g')
30659             .attr('class', 'turn');
30660
30661         var nEnter = enter.filter(function (turn) { return !turn.u; });
30662
30663         nEnter.append('rect')
30664             .attr('transform', 'translate(-12, -12)')
30665             .attr('width', '45')
30666             .attr('height', '25');
30667
30668         nEnter.append('use')
30669             .attr('transform', 'translate(-12, -12)')
30670             .attr('clip-path', 'url(#clip-square-45)');
30671
30672         var uEnter = enter.filter(function (turn) { return turn.u; });
30673
30674         uEnter.append('circle')
30675             .attr('r', '16');
30676
30677         uEnter.append('use')
30678             .attr('transform', 'translate(-16, -16)')
30679             .attr('clip-path', 'url(#clip-square-32)');
30680
30681         // Update
30682
30683         groups
30684             .attr('transform', function (turn) {
30685                 var v = graph.entity(turn.via.node),
30686                     t = graph.entity(turn.to.node),
30687                     a = iD.geo.angle(v, t, projection),
30688                     p = projection(v.loc),
30689                     r = turn.u ? 0 : 60;
30690
30691                 return 'translate(' + (r * Math.cos(a) + p[0]) + ',' + (r * Math.sin(a) + p[1]) + ')' +
30692                     'rotate(' + a * 180 / Math.PI + ')';
30693             });
30694
30695         groups.select('use')
30696             .attr('xlink:href', icon);
30697
30698         groups.select('rect');
30699         groups.select('circle');
30700
30701         // Exit
30702
30703         groups.exit()
30704             .remove();
30705
30706         return this;
30707     };
30708 };
30709 iD.svg.Vertices = function(projection, context) {
30710     var radiuses = {
30711         //       z16-, z17, z18+, tagged
30712         shadow: [6,    7.5,   7.5,  11.5],
30713         stroke: [2.5,  3.5,   3.5,  7],
30714         fill:   [1,    1.5,   1.5,  1.5]
30715     };
30716
30717     var hover;
30718
30719     function siblingAndChildVertices(ids, graph, extent) {
30720         var vertices = {};
30721
30722         function addChildVertices(entity) {
30723             if (!context.features().isHiddenFeature(entity, graph, entity.geometry(graph))) {
30724                 var i;
30725                 if (entity.type === 'way') {
30726                     for (i = 0; i < entity.nodes.length; i++) {
30727                         addChildVertices(graph.entity(entity.nodes[i]));
30728                     }
30729                 } else if (entity.type === 'relation') {
30730                     for (i = 0; i < entity.members.length; i++) {
30731                         var member = context.hasEntity(entity.members[i].id);
30732                         if (member) {
30733                             addChildVertices(member);
30734                         }
30735                     }
30736                 } else if (entity.intersects(extent, graph)) {
30737                     vertices[entity.id] = entity;
30738                 }
30739             }
30740         }
30741
30742         ids.forEach(function(id) {
30743             var entity = context.hasEntity(id);
30744             if (entity && entity.type === 'node') {
30745                 vertices[entity.id] = entity;
30746                 context.graph().parentWays(entity).forEach(function(entity) {
30747                     addChildVertices(entity);
30748                 });
30749             } else if (entity) {
30750                 addChildVertices(entity);
30751             }
30752         });
30753
30754         return vertices;
30755     }
30756
30757     function draw(selection, vertices, klass, graph, zoom) {
30758         var icons = {},
30759             z;
30760
30761         if (zoom < 17) {
30762             z = 0;
30763         } else if (zoom < 18) {
30764             z = 1;
30765         } else {
30766             z = 2;
30767         }
30768
30769         var groups = selection.data(vertices, function(entity) {
30770             return iD.Entity.key(entity);
30771         });
30772
30773         function icon(entity) {
30774             if (entity.id in icons) return icons[entity.id];
30775             icons[entity.id] =
30776                 entity.hasInterestingTags() &&
30777                 context.presets().match(entity, graph).icon;
30778             return icons[entity.id];
30779         }
30780
30781         function classCircle(klass) {
30782             return function(entity) {
30783                 this.setAttribute('class', 'node vertex ' + klass + ' ' + entity.id);
30784             };
30785         }
30786
30787         function setAttributes(selection) {
30788             ['shadow','stroke','fill'].forEach(function(klass) {
30789                 var rads = radiuses[klass];
30790                 selection.selectAll('.' + klass)
30791                     .each(function(entity) {
30792                         var i = z && icon(entity),
30793                             c = i ? 0.5 : 0,
30794                             r = rads[i ? 3 : z];
30795                         this.setAttribute('cx', c);
30796                         this.setAttribute('cy', -c);
30797                         this.setAttribute('r', r);
30798                         if (i && klass === 'fill') {
30799                             this.setAttribute('visibility', 'hidden');
30800                         } else {
30801                             this.removeAttribute('visibility');
30802                         }
30803                     });
30804             });
30805
30806             selection.selectAll('use')
30807                 .each(function() {
30808                     if (z) {
30809                         this.removeAttribute('visibility');
30810                     } else {
30811                         this.setAttribute('visibility', 'hidden');
30812                     }
30813                 });
30814         }
30815
30816         var enter = groups.enter()
30817             .append('g')
30818             .attr('class', function(d) { return 'node vertex ' + klass + ' ' + d.id; });
30819
30820         enter.append('circle')
30821             .each(classCircle('shadow'));
30822
30823         enter.append('circle')
30824             .each(classCircle('stroke'));
30825
30826         // Vertices with icons get a `use`.
30827         enter.filter(function(d) { return icon(d); })
30828             .append('use')
30829             .attr('transform', 'translate(-6, -6)')
30830             .attr('clip-path', 'url(#clip-square-12)')
30831             .attr('xlink:href', function(d) { return '#maki-' + icon(d) + '-12'; });
30832
30833         // Vertices with tags get a fill.
30834         enter.filter(function(d) { return d.hasInterestingTags(); })
30835             .append('circle')
30836             .each(classCircle('fill'));
30837
30838         groups
30839             .attr('transform', iD.svg.PointTransform(projection))
30840             .classed('shared', function(entity) { return graph.isShared(entity); })
30841             .call(setAttributes);
30842
30843         groups.exit()
30844             .remove();
30845     }
30846
30847     function drawVertices(surface, graph, entities, filter, extent, zoom) {
30848         var selected = siblingAndChildVertices(context.selectedIDs(), graph, extent),
30849             wireframe = surface.classed('fill-wireframe'),
30850             vertices = [];
30851
30852         for (var i = 0; i < entities.length; i++) {
30853             var entity = entities[i],
30854                 geometry = entity.geometry(graph);
30855
30856             if (wireframe && geometry === 'point') {
30857                 vertices.push(entity);
30858                 continue;
30859             }
30860
30861             if (geometry !== 'vertex')
30862                 continue;
30863
30864             if (entity.id in selected ||
30865                 entity.hasInterestingTags() ||
30866                 entity.isIntersection(graph)) {
30867                 vertices.push(entity);
30868             }
30869         }
30870
30871         surface.select('.layer-hit').selectAll('g.vertex.vertex-persistent')
30872             .filter(filter)
30873             .call(draw, vertices, 'vertex-persistent', graph, zoom);
30874
30875         drawHover(surface, graph, extent, zoom);
30876     }
30877
30878     function drawHover(surface, graph, extent, zoom) {
30879         var hovered = hover ? siblingAndChildVertices([hover.id], graph, extent) : {};
30880
30881         surface.select('.layer-hit').selectAll('g.vertex.vertex-hover')
30882             .call(draw, d3.values(hovered), 'vertex-hover', graph, zoom);
30883     }
30884
30885     drawVertices.drawHover = function(surface, graph, _, extent, zoom) {
30886         if (hover !== _) {
30887             hover = _;
30888             drawHover(surface, graph, extent, zoom);
30889         }
30890     };
30891
30892     return drawVertices;
30893 };
30894 iD.ui = function(context) {
30895     function render(container) {
30896         var map = context.map();
30897
30898         if (iD.detect().opera) container.classed('opera', true);
30899
30900         var hash = iD.behavior.Hash(context);
30901
30902         hash();
30903
30904         if (!hash.hadHash) {
30905             map.centerZoom([-77.02271, 38.90085], 20);
30906         }
30907
30908         container.append('svg')
30909             .attr('id', 'defs')
30910             .call(iD.svg.Defs(context));
30911
30912         container.append('div')
30913             .attr('id', 'sidebar')
30914             .attr('class', 'col4')
30915             .call(ui.sidebar);
30916
30917         var content = container.append('div')
30918             .attr('id', 'content');
30919
30920         var bar = content.append('div')
30921             .attr('id', 'bar')
30922             .attr('class', 'fillD');
30923
30924         var m = content.append('div')
30925             .attr('id', 'map')
30926             .call(map);
30927
30928         content.append('div')
30929             .attr('class', 'map-in-map')
30930             .style('display', 'none')
30931             .call(iD.ui.MapInMap(context));
30932
30933         content.append('div')
30934             .attr('class', 'infobox fillD2')
30935             .style('display', 'none')
30936             .call(iD.ui.Info(context));
30937
30938         bar.append('div')
30939             .attr('class', 'spacer col4');
30940
30941         var limiter = bar.append('div')
30942             .attr('class', 'limiter');
30943
30944         limiter.append('div')
30945             .attr('class', 'button-wrap joined col3')
30946             .call(iD.ui.Modes(context), limiter);
30947
30948         limiter.append('div')
30949             .attr('class', 'button-wrap joined col1')
30950             .call(iD.ui.UndoRedo(context));
30951
30952         limiter.append('div')
30953             .attr('class', 'button-wrap col1')
30954             .call(iD.ui.Save(context));
30955
30956         bar.append('div')
30957             .attr('class', 'spinner')
30958             .call(iD.ui.Spinner(context));
30959
30960         var controls = bar.append('div')
30961             .attr('class', 'map-controls');
30962
30963         controls.append('div')
30964             .attr('class', 'map-control zoombuttons')
30965             .call(iD.ui.Zoom(context));
30966
30967         controls.append('div')
30968             .attr('class', 'map-control geolocate-control')
30969             .call(iD.ui.Geolocate(map));
30970
30971         controls.append('div')
30972             .attr('class', 'map-control background-control')
30973             .call(iD.ui.Background(context));
30974
30975         controls.append('div')
30976             .attr('class', 'map-control map-data-control')
30977             .call(iD.ui.MapData(context));
30978
30979         controls.append('div')
30980             .attr('class', 'map-control help-control')
30981             .call(iD.ui.Help(context));
30982
30983         var about = content.append('div')
30984             .attr('id', 'about');
30985
30986         about.append('div')
30987             .attr('id', 'attrib')
30988             .call(iD.ui.Attribution(context));
30989
30990         var footer = about.append('div')
30991             .attr('id', 'footer')
30992             .attr('class', 'fillD');
30993
30994         footer.append('div')
30995             .attr('class', 'api-status')
30996             .call(iD.ui.Status(context));
30997
30998         footer.append('div')
30999             .attr('id', 'scale-block')
31000             .call(iD.ui.Scale(context));
31001
31002         var aboutList = footer.append('div')
31003             .attr('id', 'info-block')
31004             .append('ul')
31005             .attr('id', 'about-list');
31006
31007         if (!context.embed()) {
31008             aboutList.call(iD.ui.Account(context));
31009         }
31010
31011         aboutList.append('li')
31012             .append('a')
31013             .attr('target', '_blank')
31014             .attr('tabindex', -1)
31015             .attr('href', 'http://github.com/openstreetmap/iD')
31016             .text(iD.version);
31017
31018         var bugReport = aboutList.append('li')
31019             .append('a')
31020             .attr('target', '_blank')
31021             .attr('tabindex', -1)
31022             .attr('href', 'https://github.com/openstreetmap/iD/issues');
31023
31024         bugReport.append('span')
31025             .attr('class','icon bug light');
31026
31027         bugReport.call(bootstrap.tooltip()
31028                 .title(t('report_a_bug'))
31029                 .placement('top')
31030             );
31031
31032         aboutList.append('li')
31033             .attr('class', 'feature-warning')
31034             .attr('tabindex', -1)
31035             .call(iD.ui.FeatureInfo(context));
31036
31037         aboutList.append('li')
31038             .attr('class', 'user-list')
31039             .attr('tabindex', -1)
31040             .call(iD.ui.Contributors(context));
31041
31042         window.onbeforeunload = function() {
31043             return context.save();
31044         };
31045
31046         window.onunload = function() {
31047             context.history().unlock();
31048         };
31049
31050         d3.select(window).on('resize.editor', function() {
31051             map.dimensions(m.dimensions());
31052         });
31053
31054         function pan(d) {
31055             return function() {
31056                 context.pan(d);
31057             };
31058         }
31059
31060         // pan amount
31061         var pa = 5;
31062
31063         var keybinding = d3.keybinding('main')
31064             .on('⌫', function() { d3.event.preventDefault(); })
31065             .on('←', pan([pa, 0]))
31066             .on('↑', pan([0, pa]))
31067             .on('→', pan([-pa, 0]))
31068             .on('↓', pan([0, -pa]));
31069
31070         d3.select(document)
31071             .call(keybinding);
31072
31073         context.enter(iD.modes.Browse(context));
31074
31075         context.container()
31076             .call(iD.ui.Splash(context))
31077             .call(iD.ui.Restore(context));
31078
31079         var authenticating = iD.ui.Loading(context)
31080             .message(t('loading_auth'));
31081
31082         context.connection()
31083             .on('authenticating.ui', function() {
31084                 context.container()
31085                     .call(authenticating);
31086             })
31087             .on('authenticated.ui', function() {
31088                 authenticating.close();
31089             });
31090     }
31091
31092     function ui(container) {
31093         context.container(container);
31094         context.loadLocale(function() {
31095             render(container);
31096         });
31097     }
31098
31099     ui.sidebar = iD.ui.Sidebar(context);
31100
31101     return ui;
31102 };
31103
31104 iD.ui.tooltipHtml = function(text, key) {
31105     var s = '<span>' + text + '</span>';
31106     if (key) {
31107         s += '<div class="keyhint-wrap">' +
31108             '<span> ' + (t('tooltip_keyhint')) + ' </span>' +
31109             '<span class="keyhint"> ' + key + '</span></div>';
31110     }
31111     return s;
31112 };
31113 iD.ui.Account = function(context) {
31114     var connection = context.connection();
31115
31116     function update(selection) {
31117         if (!connection.authenticated()) {
31118             selection.selectAll('#userLink, #logoutLink')
31119                 .classed('hide', true);
31120             return;
31121         }
31122
31123         connection.userDetails(function(err, details) {
31124             var userLink = selection.select('#userLink'),
31125                 logoutLink = selection.select('#logoutLink');
31126
31127             userLink.html('');
31128             logoutLink.html('');
31129
31130             if (err) return;
31131
31132             selection.selectAll('#userLink, #logoutLink')
31133                 .classed('hide', false);
31134
31135             // Link
31136             userLink.append('a')
31137                 .attr('href', connection.userURL(details.display_name))
31138                 .attr('target', '_blank');
31139
31140             // Add thumbnail or dont
31141             if (details.image_url) {
31142                 userLink.append('img')
31143                     .attr('class', 'icon icon-pre-text user-icon')
31144                     .attr('src', details.image_url);
31145             } else {
31146                 userLink.append('span')
31147                     .attr('class', 'icon avatar light icon-pre-text');
31148             }
31149
31150             // Add user name
31151             userLink.append('span')
31152                 .attr('class', 'label')
31153                 .text(details.display_name);
31154
31155             logoutLink.append('a')
31156                 .attr('class', 'logout')
31157                 .attr('href', '#')
31158                 .text(t('logout'))
31159                 .on('click.logout', function() {
31160                     d3.event.preventDefault();
31161                     connection.logout();
31162                 });
31163         });
31164     }
31165
31166     return function(selection) {
31167         selection.append('li')
31168             .attr('id', 'logoutLink')
31169             .classed('hide', true);
31170
31171         selection.append('li')
31172             .attr('id', 'userLink')
31173             .classed('hide', true);
31174
31175         connection.on('auth.account', function() { update(selection); });
31176         update(selection);
31177     };
31178 };
31179 iD.ui.Attribution = function(context) {
31180     var selection;
31181
31182     function attribution(data, klass) {
31183         var div = selection.selectAll('.' + klass)
31184             .data([0]);
31185
31186         div.enter()
31187             .append('div')
31188             .attr('class', klass);
31189
31190         var background = div.selectAll('.attribution')
31191             .data(data, function(d) { return d.name(); });
31192
31193         background.enter()
31194             .append('span')
31195             .attr('class', 'attribution')
31196             .each(function(d) {
31197                 if (d.terms_html) {
31198                     d3.select(this)
31199                         .html(d.terms_html);
31200                     return;
31201                 }
31202
31203                 var source = d.terms_text || d.id || d.name();
31204
31205                 if (d.logo) {
31206                     source = '<img class="source-image" src="' + context.imagePath(d.logo) + '">';
31207                 }
31208
31209                 if (d.terms_url) {
31210                     d3.select(this)
31211                         .append('a')
31212                         .attr('href', d.terms_url)
31213                         .attr('target', '_blank')
31214                         .html(source);
31215                 } else {
31216                     d3.select(this)
31217                         .text(source);
31218                 }
31219             });
31220
31221         background.exit()
31222             .remove();
31223
31224         var copyright = background.selectAll('.copyright-notice')
31225             .data(function(d) {
31226                 var notice = d.copyrightNotices(context.map().zoom(), context.map().extent());
31227                 return notice ? [notice] : [];
31228             });
31229
31230         copyright.enter()
31231             .append('span')
31232             .attr('class', 'copyright-notice');
31233
31234         copyright.text(String);
31235
31236         copyright.exit()
31237             .remove();
31238     }
31239
31240     function update() {
31241         attribution([context.background().baseLayerSource()], 'base-layer-attribution');
31242         attribution(context.background().overlayLayerSources().filter(function (s) {
31243             return s.validZoom(context.map().zoom());
31244         }), 'overlay-layer-attribution');
31245     }
31246
31247     return function(select) {
31248         selection = select;
31249
31250         context.background()
31251             .on('change.attribution', update);
31252
31253         context.map()
31254             .on('move.attribution', _.throttle(update, 400, {leading: false}));
31255
31256         update();
31257     };
31258 };
31259 iD.ui.Background = function(context) {
31260     var key = 'B',
31261         opacities = [1, 0.75, 0.5, 0.25],
31262         directions = [
31263             ['left', [1, 0]],
31264             ['top', [0, -1]],
31265             ['right', [-1, 0]],
31266             ['bottom', [0, 1]]],
31267         opacityDefault = (context.storage('background-opacity') !== null) ?
31268             (+context.storage('background-opacity')) : 0.5,
31269         customTemplate = context.storage('background-custom-template') || '';
31270
31271     // Can be 0 from <1.3.0 use or due to issue #1923.
31272     if (opacityDefault === 0) opacityDefault = 0.5;
31273
31274     function background(selection) {
31275
31276         function setOpacity(d) {
31277             var bg = context.container().selectAll('.background-layer')
31278                 .transition()
31279                 .style('opacity', d)
31280                 .attr('data-opacity', d);
31281
31282             if (!iD.detect().opera) {
31283                 iD.util.setTransform(bg, 0, 0);
31284             }
31285
31286             opacityList.selectAll('li')
31287                 .classed('active', function(_) { return _ === d; });
31288
31289             context.storage('background-opacity', d);
31290         }
31291
31292         function selectLayer() {
31293             function active(d) {
31294                 return context.background().showsLayer(d);
31295             }
31296
31297             content.selectAll('.layer, .custom_layer')
31298                 .classed('active', active)
31299                 .selectAll('input')
31300                 .property('checked', active);
31301         }
31302
31303         function clickSetSource(d) {
31304             d3.event.preventDefault();
31305             context.background().baseLayerSource(d);
31306             selectLayer();
31307         }
31308
31309         function editCustom() {
31310             d3.event.preventDefault();
31311             var template = window.prompt(t('background.custom_prompt'), customTemplate);
31312             if (!template ||
31313                 template.indexOf('google.com') !== -1 ||
31314                 template.indexOf('googleapis.com') !== -1 ||
31315                 template.indexOf('google.ru') !== -1) {
31316                 selectLayer();
31317                 return;
31318             }
31319             setCustom(template);
31320         }
31321
31322         function setCustom(template) {
31323             context.background().baseLayerSource(iD.BackgroundSource.Custom(template));
31324             selectLayer();
31325             context.storage('background-custom-template', template);
31326         }
31327
31328         function clickSetOverlay(d) {
31329             d3.event.preventDefault();
31330             context.background().toggleOverlayLayer(d);
31331             selectLayer();
31332         }
31333
31334         function drawList(layerList, type, change, filter) {
31335             var sources = context.background()
31336                 .sources(context.map().extent())
31337                 .filter(filter);
31338
31339             var layerLinks = layerList.selectAll('li.layer')
31340                 .data(sources, function(d) { return d.name(); });
31341
31342             var enter = layerLinks.enter()
31343                 .insert('li', '.custom_layer')
31344                 .attr('class', 'layer');
31345
31346             // only set tooltips for layers with tooltips
31347             enter.filter(function(d) { return d.description; })
31348                 .call(bootstrap.tooltip()
31349                     .title(function(d) { return d.description; })
31350                     .placement('top'));
31351
31352             var label = enter.append('label');
31353
31354             label.append('input')
31355                 .attr('type', type)
31356                 .attr('name', 'layers')
31357                 .on('change', change);
31358
31359             label.append('span')
31360                 .text(function(d) { return d.name(); });
31361
31362             layerLinks.exit()
31363                 .remove();
31364
31365             layerList.style('display', layerList.selectAll('li.layer').data().length > 0 ? 'block' : 'none');
31366         }
31367
31368         function update() {
31369             backgroundList.call(drawList, 'radio', clickSetSource, function(d) { return !d.overlay; });
31370             overlayList.call(drawList, 'checkbox', clickSetOverlay, function(d) { return d.overlay; });
31371
31372             selectLayer();
31373
31374             var source = context.background().baseLayerSource();
31375             if (source.id === 'custom') {
31376                 customTemplate = source.template;
31377             }
31378         }
31379
31380         function clickNudge(d) {
31381
31382             var timeout = window.setTimeout(function() {
31383                     interval = window.setInterval(nudge, 100);
31384                 }, 500),
31385                 interval;
31386
31387             d3.select(this).on('mouseup', function() {
31388                 window.clearInterval(interval);
31389                 window.clearTimeout(timeout);
31390                 nudge();
31391             });
31392
31393             function nudge() {
31394                 var offset = context.background()
31395                     .nudge(d[1], context.map().zoom())
31396                     .offset();
31397                 resetButton.classed('disabled', offset[0] === 0 && offset[1] === 0);
31398             }
31399         }
31400
31401         function hide() { setVisible(false); }
31402
31403         function toggle() {
31404             if (d3.event) d3.event.preventDefault();
31405             tooltip.hide(button);
31406             setVisible(!button.classed('active'));
31407         }
31408
31409         function setVisible(show) {
31410             if (show !== shown) {
31411                 button.classed('active', show);
31412                 shown = show;
31413
31414                 if (show) {
31415                     selection.on('mousedown.background-inside', function() {
31416                         return d3.event.stopPropagation();
31417                     });
31418                     content.style('display', 'block')
31419                         .style('right', '-300px')
31420                         .transition()
31421                         .duration(200)
31422                         .style('right', '0px');
31423                 } else {
31424                     content.style('display', 'block')
31425                         .style('right', '0px')
31426                         .transition()
31427                         .duration(200)
31428                         .style('right', '-300px')
31429                         .each('end', function() {
31430                             d3.select(this).style('display', 'none');
31431                         });
31432                     selection.on('mousedown.background-inside', null);
31433                 }
31434             }
31435         }
31436
31437
31438         var content = selection.append('div')
31439                 .attr('class', 'fillL map-overlay col3 content hide'),
31440             tooltip = bootstrap.tooltip()
31441                 .placement('left')
31442                 .html(true)
31443                 .title(iD.ui.tooltipHtml(t('background.description'), key)),
31444             button = selection.append('button')
31445                 .attr('tabindex', -1)
31446                 .on('click', toggle)
31447                 .call(tooltip),
31448             shown = false;
31449
31450         button.append('span')
31451             .attr('class', 'icon layers light');
31452
31453
31454         var opa = content.append('div')
31455                 .attr('class', 'opacity-options-wrapper');
31456
31457         opa.append('h4')
31458             .text(t('background.title'));
31459
31460         var opacityList = opa.append('ul')
31461             .attr('class', 'opacity-options');
31462
31463         opacityList.selectAll('div.opacity')
31464             .data(opacities)
31465             .enter()
31466             .append('li')
31467             .attr('data-original-title', function(d) {
31468                 return t('background.percent_brightness', { opacity: (d * 100) });
31469             })
31470             .on('click.set-opacity', setOpacity)
31471             .html('<div class="select-box"></div>')
31472             .call(bootstrap.tooltip()
31473                 .placement('left'))
31474             .append('div')
31475             .attr('class', 'opacity')
31476             .style('opacity', function(d) { return 1.25 - d; });
31477
31478         var backgroundList = content.append('ul')
31479             .attr('class', 'layer-list');
31480
31481         var custom = backgroundList.append('li')
31482             .attr('class', 'custom_layer')
31483             .datum(iD.BackgroundSource.Custom());
31484
31485         custom.append('button')
31486             .attr('class', 'layer-browse')
31487             .call(bootstrap.tooltip()
31488                 .title(t('background.custom_button'))
31489                 .placement('left'))
31490             .on('click', editCustom)
31491             .append('span')
31492             .attr('class', 'icon geocode');
31493
31494         var label = custom.append('label');
31495
31496         label.append('input')
31497             .attr('type', 'radio')
31498             .attr('name', 'layers')
31499             .on('change', function () {
31500                 if (customTemplate) {
31501                     setCustom(customTemplate);
31502                 } else {
31503                     editCustom();
31504                 }
31505             });
31506
31507         label.append('span')
31508             .text(t('background.custom'));
31509
31510         var overlayList = content.append('ul')
31511             .attr('class', 'layer-list');
31512
31513         var adjustments = content.append('div')
31514             .attr('class', 'adjustments');
31515
31516         adjustments.append('a')
31517             .text(t('background.fix_misalignment'))
31518             .attr('href', '#')
31519             .classed('hide-toggle', true)
31520             .classed('expanded', false)
31521             .on('click', function() {
31522                 var exp = d3.select(this).classed('expanded');
31523                 nudgeContainer.style('display', exp ? 'none' : 'block');
31524                 d3.select(this).classed('expanded', !exp);
31525                 d3.event.preventDefault();
31526             });
31527
31528         var nudgeContainer = adjustments.append('div')
31529             .attr('class', 'nudge-container cf')
31530             .style('display', 'none');
31531
31532         nudgeContainer.selectAll('button')
31533             .data(directions).enter()
31534             .append('button')
31535             .attr('class', function(d) { return d[0] + ' nudge'; })
31536             .on('mousedown', clickNudge);
31537
31538         var resetButton = nudgeContainer.append('button')
31539             .attr('class', 'reset disabled')
31540             .on('click', function () {
31541                 context.background().offset([0, 0]);
31542                 resetButton.classed('disabled', true);
31543             });
31544
31545         resetButton.append('div')
31546             .attr('class', 'icon undo');
31547
31548         context.map()
31549             .on('move.background-update', _.debounce(update, 1000));
31550
31551         context.background()
31552             .on('change.background-update', update);
31553
31554         update();
31555         setOpacity(opacityDefault);
31556
31557         var keybinding = d3.keybinding('background')
31558             .on(key, toggle)
31559             .on('F', hide)
31560             .on('H', hide);
31561
31562         d3.select(document)
31563             .call(keybinding);
31564
31565         context.surface().on('mousedown.background-outside', hide);
31566         context.container().on('mousedown.background-outside', hide);
31567     }
31568
31569     return background;
31570 };
31571 // Translate a MacOS key command into the appropriate Windows/Linux equivalent.
31572 // For example, ⌘Z -> Ctrl+Z
31573 iD.ui.cmd = function(code) {
31574     if (iD.detect().os === 'mac')
31575         return code;
31576
31577     var replacements = {
31578         '⌘': 'Ctrl',
31579         '⇧': 'Shift',
31580         '⌥': 'Alt',
31581         '⌫': 'Backspace',
31582         '⌦': 'Delete'
31583     }, keys = [];
31584
31585     if (iD.detect().os === 'win') {
31586         if (code === '⌘⇧Z') return 'Ctrl+Y';
31587     }
31588
31589     for (var i = 0; i < code.length; i++) {
31590         if (code[i] in replacements) {
31591             keys.push(replacements[code[i]]);
31592         } else {
31593             keys.push(code[i]);
31594         }
31595     }
31596
31597     return keys.join('+');
31598 };
31599 iD.ui.Commit = function(context) {
31600     var event = d3.dispatch('cancel', 'save');
31601
31602     function commit(selection) {
31603         var changes = context.history().changes(),
31604             summary = context.history().difference().summary();
31605
31606         function zoomToEntity(change) {
31607
31608             var entity = change.entity;
31609             if (change.changeType !== 'deleted' &&
31610                 context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') {
31611                 context.map().zoomTo(entity);
31612                 context.surface().selectAll(
31613                     iD.util.entityOrMemberSelector([entity.id], context.graph()))
31614                     .classed('hover', true);
31615             }
31616         }
31617
31618         var header = selection.append('div')
31619             .attr('class', 'header fillL');
31620
31621         header.append('button')
31622             .attr('class', 'fr')
31623             .on('click', event.cancel)
31624             .append('span')
31625             .attr('class', 'icon close');
31626
31627         header.append('h3')
31628             .text(t('commit.title'));
31629
31630         var body = selection.append('div')
31631             .attr('class', 'body');
31632
31633         // Comment Section
31634         var commentSection = body.append('div')
31635             .attr('class', 'modal-section form-field commit-form');
31636
31637         commentSection.append('label')
31638             .attr('class', 'form-label')
31639             .text(t('commit.message_label'));
31640
31641         var commentField = commentSection.append('textarea')
31642             .attr('placeholder', t('commit.description_placeholder'))
31643             .attr('maxlength', 255)
31644             .property('value', context.storage('comment') || '')
31645             .on('blur.save', function () {
31646                 context.storage('comment', this.value);
31647             });
31648
31649         commentField.node().select();
31650
31651         // Warnings
31652         var warnings = body.selectAll('div.warning-section')
31653             .data([iD.validate(changes, context.graph())])
31654             .enter()
31655             .append('div')
31656             .attr('class', 'modal-section warning-section fillL2')
31657             .style('display', function(d) { return _.isEmpty(d) ? 'none' : null; })
31658             .style('background', '#ffb');
31659
31660         warnings.append('h3')
31661             .text(t('commit.warnings'));
31662
31663         var warningLi = warnings.append('ul')
31664             .attr('class', 'changeset-list')
31665             .selectAll('li')
31666             .data(function(d) { return d; })
31667             .enter()
31668             .append('li')
31669             .style()
31670             .on('mouseover', mouseover)
31671             .on('mouseout', mouseout)
31672             .on('click', warningClick);
31673
31674         warningLi.append('span')
31675             .attr('class', 'alert icon icon-pre-text');
31676
31677         warningLi.append('strong').text(function(d) {
31678             return d.message;
31679         });
31680
31681         warningLi.filter(function(d) { return d.tooltip; })
31682             .call(bootstrap.tooltip()
31683                 .title(function(d) { return d.tooltip; })
31684                 .placement('top')
31685             );
31686
31687         // Save Section
31688         var saveSection = body.append('div')
31689             .attr('class','modal-section fillL cf');
31690
31691         var prose = saveSection.append('p')
31692             .attr('class', 'commit-info')
31693             .html(t('commit.upload_explanation'));
31694
31695         context.connection().userDetails(function(err, user) {
31696             if (err) return;
31697
31698             var userLink = d3.select(document.createElement('div'));
31699
31700             if (user.image_url) {
31701                 userLink.append('img')
31702                     .attr('src', user.image_url)
31703                     .attr('class', 'icon icon-pre-text user-icon');
31704             }
31705
31706             userLink.append('a')
31707                 .attr('class','user-info')
31708                 .text(user.display_name)
31709                 .attr('href', context.connection().userURL(user.display_name))
31710                 .attr('tabindex', -1)
31711                 .attr('target', '_blank');
31712
31713             prose.html(t('commit.upload_explanation_with_user', {user: userLink.html()}));
31714         });
31715
31716         // Confirm Button
31717         var saveButton = saveSection.append('button')
31718             .attr('class', 'action col6 button')
31719             .on('click.save', function() {
31720                 event.save({
31721                     comment: commentField.node().value
31722                 });
31723             });
31724
31725         saveButton.append('span')
31726             .attr('class', 'label')
31727             .text(t('commit.save'));
31728
31729         var changeSection = body.selectAll('div.commit-section')
31730             .data([0])
31731             .enter()
31732             .append('div')
31733             .attr('class', 'commit-section modal-section fillL2');
31734
31735         changeSection.append('h3')
31736             .text(t('commit.changes', {count: summary.length}));
31737
31738         var li = changeSection.append('ul')
31739             .attr('class', 'changeset-list')
31740             .selectAll('li')
31741             .data(summary)
31742             .enter()
31743             .append('li')
31744             .on('mouseover', mouseover)
31745             .on('mouseout', mouseout)
31746             .on('click', zoomToEntity);
31747
31748         li.append('span')
31749             .attr('class', function(d) {
31750                 return d.entity.geometry(d.graph) + ' ' + d.changeType + ' icon icon-pre-text';
31751             });
31752
31753         li.append('span')
31754             .attr('class', 'change-type')
31755             .text(function(d) {
31756                 return t('commit.' + d.changeType) + ' ';
31757             });
31758
31759         li.append('strong')
31760             .attr('class', 'entity-type')
31761             .text(function(d) {
31762                 return context.presets().match(d.entity, d.graph).name();
31763             });
31764
31765         li.append('span')
31766             .attr('class', 'entity-name')
31767             .text(function(d) {
31768                 var name = iD.util.displayName(d.entity) || '',
31769                     string = '';
31770                 if (name !== '') string += ':';
31771                 return string += ' ' + name;
31772             });
31773
31774         li.style('opacity', 0)
31775             .transition()
31776             .style('opacity', 1);
31777
31778         li.style('opacity', 0)
31779             .transition()
31780             .style('opacity', 1);
31781
31782         function mouseover(d) {
31783             if (d.entity) {
31784                 context.surface().selectAll(
31785                     iD.util.entityOrMemberSelector([d.entity.id], context.graph())
31786                 ).classed('hover', true);
31787             }
31788         }
31789
31790         function mouseout() {
31791             context.surface().selectAll('.hover')
31792                 .classed('hover', false);
31793         }
31794
31795         function warningClick(d) {
31796             if (d.entity) {
31797                 context.map().zoomTo(d.entity);
31798                 context.enter(
31799                     iD.modes.Select(context, [d.entity.id])
31800                         .suppressMenu(true));
31801             }
31802         }
31803     }
31804
31805     return d3.rebind(commit, event, 'on');
31806 };
31807 iD.ui.confirm = function(selection) {
31808     var modal = iD.ui.modal(selection);
31809
31810     modal.select('.modal')
31811         .classed('modal-alert', true);
31812
31813     var section = modal.select('.content');
31814
31815     section.append('div')
31816         .attr('class', 'modal-section header');
31817
31818     section.append('div')
31819         .attr('class', 'modal-section message-text');
31820
31821     var buttons = section.append('div')
31822         .attr('class', 'modal-section buttons cf');
31823
31824     modal.okButton = function() {
31825         buttons
31826             .append('button')
31827             .attr('class', 'action col4')
31828             .on('click.confirm', function() {
31829                 modal.remove();
31830             })
31831             .text(t('confirm.okay'));
31832
31833         return modal;
31834     };
31835
31836     return modal;
31837 };
31838 iD.ui.Conflicts = function(context) {
31839     var dispatch = d3.dispatch('download', 'cancel', 'save'),
31840         list;
31841
31842     function conflicts(selection) {
31843         var header = selection
31844             .append('div')
31845             .attr('class', 'header fillL');
31846
31847         header
31848             .append('button')
31849             .attr('class', 'fr')
31850             .on('click', function() { dispatch.cancel(); })
31851             .append('span')
31852             .attr('class', 'icon close');
31853
31854         header
31855             .append('h3')
31856             .text(t('save.conflict.header'));
31857
31858         var body = selection
31859             .append('div')
31860             .attr('class', 'body fillL');
31861
31862         body
31863             .append('div')
31864             .attr('class', 'conflicts-help')
31865             .text(t('save.conflict.help'))
31866             .append('a')
31867             .attr('class', 'conflicts-download')
31868             .text(t('save.conflict.download_changes'))
31869             .on('click.download', function() { dispatch.download(); });
31870
31871         body
31872             .append('div')
31873             .attr('class', 'conflict-container fillL3')
31874             .call(showConflict, 0);
31875
31876         body
31877             .append('div')
31878             .attr('class', 'conflicts-done')
31879             .attr('opacity', 0)
31880             .style('display', 'none')
31881             .text(t('save.conflict.done'));
31882
31883         var buttons = body
31884             .append('div')
31885             .attr('class','buttons col12 joined conflicts-buttons');
31886
31887         buttons
31888             .append('button')
31889             .attr('disabled', list.length > 1)
31890             .attr('class', 'action conflicts-button col6')
31891             .text(t('save.title'))
31892             .on('click.try_again', function() { dispatch.save(); });
31893
31894         buttons
31895             .append('button')
31896             .attr('class', 'secondary-action conflicts-button col6')
31897             .text(t('confirm.cancel'))
31898             .on('click.cancel', function() { dispatch.cancel(); });
31899     }
31900
31901
31902     function showConflict(selection, index) {
31903         if (index < 0 || index >= list.length) return;
31904
31905         var parent = d3.select(selection.node().parentElement);
31906
31907         // enable save button if this is the last conflict being reviewed..
31908         if (index === list.length - 1) {
31909             window.setTimeout(function() {
31910                 parent.select('.conflicts-button')
31911                     .attr('disabled', null);
31912
31913                 parent.select('.conflicts-done')
31914                     .transition()
31915                     .attr('opacity', 1)
31916                     .style('display', 'block');
31917             }, 250);
31918         }
31919
31920         var item = selection
31921             .selectAll('.conflict')
31922             .data([list[index]]);
31923
31924         var enter = item.enter()
31925             .append('div')
31926             .attr('class', 'conflict');
31927
31928         enter
31929             .append('h4')
31930             .attr('class', 'conflict-count')
31931             .text(t('save.conflict.count', { num: index + 1, total: list.length }));
31932
31933         enter
31934             .append('a')
31935             .attr('class', 'conflict-description')
31936             .attr('href', '#')
31937             .text(function(d) { return d.name; })
31938             .on('click', function(d) {
31939                 zoomToEntity(d.id);
31940                 d3.event.preventDefault();
31941             });
31942
31943         var details = enter
31944             .append('div')
31945             .attr('class', 'conflict-detail-container');
31946
31947         details
31948             .append('ul')
31949             .attr('class', 'conflict-detail-list')
31950             .selectAll('li')
31951             .data(function(d) { return d.details || []; })
31952             .enter()
31953             .append('li')
31954             .attr('class', 'conflict-detail-item')
31955             .html(function(d) { return d; });
31956
31957         details
31958             .append('div')
31959             .attr('class', 'conflict-choices')
31960             .call(addChoices);
31961
31962         details
31963             .append('div')
31964             .attr('class', 'conflict-nav-buttons joined cf')
31965             .selectAll('button')
31966             .data(['previous', 'next'])
31967             .enter()
31968             .append('button')
31969             .text(function(d) { return t('save.conflict.' + d); })
31970             .attr('class', 'conflict-nav-button action col6')
31971             .attr('disabled', function(d, i) {
31972                 return (i === 0 && index === 0) ||
31973                     (i === 1 && index === list.length - 1) || null;
31974             })
31975             .on('click', function(d, i) {
31976                 var container = parent.select('.conflict-container'),
31977                 sign = (i === 0 ? -1 : 1);
31978
31979                 container
31980                     .selectAll('.conflict')
31981                     .remove();
31982
31983                 container
31984                     .call(showConflict, index + sign);
31985
31986                 d3.event.preventDefault();
31987             });
31988
31989         item.exit()
31990             .remove();
31991
31992     }
31993
31994     function addChoices(selection) {
31995         var choices = selection
31996             .append('ul')
31997             .attr('class', 'layer-list')
31998             .selectAll('li')
31999             .data(function(d) { return d.choices || []; });
32000
32001         var enter = choices.enter()
32002             .append('li')
32003             .attr('class', 'layer');
32004
32005         var label = enter
32006             .append('label');
32007
32008         label
32009             .append('input')
32010             .attr('type', 'radio')
32011             .attr('name', function(d) { return d.id; })
32012             .on('change', function(d, i) {
32013                 var ul = this.parentElement.parentElement.parentElement;
32014                 ul.__data__.chosen = i;
32015                 choose(ul, d);
32016             });
32017
32018         label
32019             .append('span')
32020             .text(function(d) { return d.text; });
32021
32022         choices
32023             .each(function(d, i) {
32024                 var ul = this.parentElement;
32025                 if (ul.__data__.chosen === i) choose(ul, d);
32026             });
32027     }
32028
32029     function choose(ul, datum) {
32030         if (d3.event) d3.event.preventDefault();
32031
32032         d3.select(ul)
32033             .selectAll('li')
32034             .classed('active', function(d) { return d === datum; })
32035             .selectAll('input')
32036             .property('checked', function(d) { return d === datum; });
32037
32038         var extent = iD.geo.Extent(),
32039             entity;
32040
32041         entity = context.graph().hasEntity(datum.id);
32042         if (entity) extent._extend(entity.extent(context.graph()));
32043
32044         datum.action();
32045
32046         entity = context.graph().hasEntity(datum.id);
32047         if (entity) extent._extend(entity.extent(context.graph()));
32048
32049         zoomToEntity(datum.id, extent);
32050     }
32051
32052     function zoomToEntity(id, extent) {
32053         context.surface().selectAll('.hover')
32054             .classed('hover', false);
32055
32056         var entity = context.graph().hasEntity(id);
32057         if (entity) {
32058             if (extent) {
32059                 context.map().trimmedExtent(extent);
32060             } else {
32061                 context.map().zoomTo(entity);
32062             }
32063             context.surface().selectAll(
32064                 iD.util.entityOrMemberSelector([entity.id], context.graph()))
32065                 .classed('hover', true);
32066         }
32067     }
32068
32069
32070     // The conflict list should be an array of objects like:
32071     // {
32072     //     id: id,
32073     //     name: entityName(local),
32074     //     details: merge.conflicts(),
32075     //     chosen: 1,
32076     //     choices: [
32077     //         choice(id, keepMine, forceLocal),
32078     //         choice(id, keepTheirs, forceRemote)
32079     //     ]
32080     // }
32081     conflicts.list = function(_) {
32082         if (!arguments.length) return list;
32083         list = _;
32084         return conflicts;
32085     };
32086
32087     return d3.rebind(conflicts, dispatch, 'on');
32088 };
32089 iD.ui.Contributors = function(context) {
32090     function update(selection) {
32091         var users = {},
32092             limit = 4,
32093             entities = context.intersects(context.map().extent());
32094
32095         entities.forEach(function(entity) {
32096             if (entity && entity.user) users[entity.user] = true;
32097         });
32098
32099         var u = Object.keys(users),
32100             subset = u.slice(0, u.length > limit ? limit - 1 : limit);
32101
32102         selection.html('')
32103             .append('span')
32104             .attr('class', 'icon nearby light icon-pre-text');
32105
32106         var userList = d3.select(document.createElement('span'));
32107
32108         userList.selectAll()
32109             .data(subset)
32110             .enter()
32111             .append('a')
32112             .attr('class', 'user-link')
32113             .attr('href', function(d) { return context.connection().userURL(d); })
32114             .attr('target', '_blank')
32115             .attr('tabindex', -1)
32116             .text(String);
32117
32118         if (u.length > limit) {
32119             var count = d3.select(document.createElement('span'));
32120
32121             count.append('a')
32122                 .attr('target', '_blank')
32123                 .attr('tabindex', -1)
32124                 .attr('href', function() {
32125                     return context.connection().changesetsURL(context.map().center(), context.map().zoom());
32126                 })
32127                 .text(u.length - limit + 1);
32128
32129             selection.append('span')
32130                 .html(t('contributors.truncated_list', {users: userList.html(), count: count.html()}));
32131         } else {
32132             selection.append('span')
32133                 .html(t('contributors.list', {users: userList.html()}));
32134         }
32135
32136         if (!u.length) {
32137             selection.transition().style('opacity', 0);
32138         } else if (selection.style('opacity') === '0') {
32139             selection.transition().style('opacity', 1);
32140         }
32141     }
32142
32143     return function(selection) {
32144         update(selection);
32145
32146         context.connection().on('loaded.contributors', function() {
32147             update(selection);
32148         });
32149
32150         context.map().on('move.contributors', _.debounce(function() {
32151             update(selection);
32152         }, 500));
32153     };
32154 };
32155 iD.ui.Disclosure = function() {
32156     var dispatch = d3.dispatch('toggled'),
32157         title,
32158         expanded = false,
32159         content = function () {};
32160
32161     var disclosure = function(selection) {
32162         var $link = selection.selectAll('.hide-toggle')
32163             .data([0]);
32164
32165         $link.enter().append('a')
32166             .attr('href', '#')
32167             .attr('class', 'hide-toggle');
32168
32169         $link.text(title)
32170             .on('click', toggle)
32171             .classed('expanded', expanded);
32172
32173         var $body = selection.selectAll('div')
32174             .data([0]);
32175
32176         $body.enter().append('div');
32177
32178         $body.classed('hide', !expanded)
32179             .call(content);
32180
32181         function toggle() {
32182             expanded = !expanded;
32183             $link.classed('expanded', expanded);
32184             $body.call(iD.ui.Toggle(expanded));
32185             dispatch.toggled(expanded);
32186         }
32187     };
32188
32189     disclosure.title = function(_) {
32190         if (!arguments.length) return title;
32191         title = _;
32192         return disclosure;
32193     };
32194
32195     disclosure.expanded = function(_) {
32196         if (!arguments.length) return expanded;
32197         expanded = _;
32198         return disclosure;
32199     };
32200
32201     disclosure.content = function(_) {
32202         if (!arguments.length) return content;
32203         content = _;
32204         return disclosure;
32205     };
32206
32207     return d3.rebind(disclosure, dispatch, 'on');
32208 };
32209 iD.ui.EntityEditor = function(context) {
32210     var event = d3.dispatch('choose'),
32211         state = 'select',
32212         id,
32213         preset,
32214         reference;
32215
32216     var presetEditor = iD.ui.preset(context)
32217         .on('change', changeTags);
32218     var rawTagEditor = iD.ui.RawTagEditor(context)
32219         .on('change', changeTags);
32220
32221     function entityEditor(selection) {
32222         var entity = context.entity(id),
32223             tags = _.clone(entity.tags);
32224
32225         var $header = selection.selectAll('.header')
32226             .data([0]);
32227
32228         // Enter
32229
32230         var $enter = $header.enter().append('div')
32231             .attr('class', 'header fillL cf');
32232
32233         $enter.append('button')
32234             .attr('class', 'fr preset-close')
32235             .append('span')
32236             .attr('class', 'icon close');
32237
32238         $enter.append('h3');
32239
32240         // Update
32241
32242         $header.select('h3')
32243             .text(t('inspector.edit'));
32244
32245         $header.select('.preset-close')
32246             .on('click', function() {
32247                 context.enter(iD.modes.Browse(context));
32248             });
32249
32250         var $body = selection.selectAll('.inspector-body')
32251             .data([0]);
32252
32253         // Enter
32254
32255         $enter = $body.enter().append('div')
32256             .attr('class', 'inspector-body');
32257
32258         $enter.append('div')
32259             .attr('class', 'preset-list-item inspector-inner')
32260             .append('div')
32261             .attr('class', 'preset-list-button-wrap')
32262             .append('button')
32263             .attr('class', 'preset-list-button preset-reset')
32264             .call(bootstrap.tooltip()
32265                 .title(t('inspector.back_tooltip'))
32266                 .placement('bottom'))
32267             .append('div')
32268             .attr('class', 'label');
32269
32270         $body.select('.preset-list-button-wrap')
32271             .call(reference.button);
32272
32273         $body.select('.preset-list-item')
32274             .call(reference.body);
32275
32276         $enter.append('div')
32277             .attr('class', 'inspector-border inspector-preset');
32278
32279         $enter.append('div')
32280             .attr('class', 'inspector-border raw-tag-editor inspector-inner');
32281
32282         $enter.append('div')
32283             .attr('class', 'inspector-border raw-member-editor inspector-inner');
32284
32285         $enter.append('div')
32286             .attr('class', 'raw-membership-editor inspector-inner');
32287
32288         selection.selectAll('.preset-reset')
32289             .on('click', function() {
32290                 event.choose(preset);
32291             });
32292
32293         // Update
32294
32295         $body.select('.preset-list-item button')
32296             .call(iD.ui.PresetIcon()
32297                 .geometry(context.geometry(id))
32298                 .preset(preset));
32299
32300         $body.select('.preset-list-item .label')
32301             .text(preset.name());
32302
32303         $body.select('.inspector-preset')
32304             .call(presetEditor
32305                 .preset(preset)
32306                 .entityID(id)
32307                 .tags(tags)
32308                 .state(state));
32309
32310         $body.select('.raw-tag-editor')
32311             .call(rawTagEditor
32312                 .preset(preset)
32313                 .entityID(id)
32314                 .tags(tags)
32315                 .state(state));
32316
32317         if (entity.type === 'relation') {
32318             $body.select('.raw-member-editor')
32319                 .style('display', 'block')
32320                 .call(iD.ui.RawMemberEditor(context)
32321                     .entityID(id));
32322         } else {
32323             $body.select('.raw-member-editor')
32324                 .style('display', 'none');
32325         }
32326
32327         $body.select('.raw-membership-editor')
32328             .call(iD.ui.RawMembershipEditor(context)
32329                 .entityID(id));
32330
32331         function historyChanged() {
32332             if (state === 'hide') return;
32333             var entity = context.hasEntity(id);
32334             if (!entity) return;
32335             entityEditor.preset(context.presets().match(entity, context.graph()));
32336             entityEditor(selection);
32337         }
32338
32339         context.history()
32340             .on('change.entity-editor', historyChanged);
32341     }
32342
32343     function clean(o) {
32344
32345         function cleanVal(k, v) {
32346             function keepSpaces(k) {
32347                 var whitelist = ['opening_hours', 'service_times', 'collection_times',
32348                     'operating_times', 'smoking_hours', 'happy_hours'];
32349                 return _.any(whitelist, function(s) { return k.indexOf(s) !== -1; });
32350             }
32351
32352             var blacklist = ['description', 'note', 'fixme'];
32353             if (_.any(blacklist, function(s) { return k.indexOf(s) !== -1; })) return v;
32354
32355             var cleaned = v.split(';')
32356                 .map(function(s) { return s.trim(); })
32357                 .join(keepSpaces(k) ? '; ' : ';');
32358
32359             // The code below is not intended to validate websites and emails.
32360             // It is only intended to prevent obvious copy-paste errors. (#2323)
32361
32362             // clean website-like tags
32363             if (k.indexOf('website') !== -1 || cleaned.indexOf('http') === 0) {
32364                 cleaned = cleaned
32365                     .replace(/[\u200B-\u200F\uFEFF]/g, '')  // strip LRM and other zero width chars
32366                     .replace(/[^\w\+\-\.\/\?\[\]\(\)~!@#$%&*',:;=]/g, encodeURIComponent);
32367
32368             // clean email-like tags
32369             } else if (k.indexOf('email') !== -1) {
32370                 cleaned = cleaned
32371                     .replace(/[\u200B-\u200F\uFEFF]/g, '')  // strip LRM and other zero width chars
32372                     .replace(/[^\w\+\-\.\/\?\|~!@#$%^&*'`{};=]/g, '');  // note: ';' allowed as OSM delimiter
32373             }
32374
32375             return cleaned;
32376         }
32377
32378         var out = {}, k, v;
32379         for (k in o) {
32380             if (k && (v = o[k]) !== undefined) {
32381                 out[k] = cleanVal(k, v);
32382             }
32383         }
32384         return out;
32385     }
32386
32387     function changeTags(changed) {
32388         var entity = context.entity(id),
32389             tags = clean(_.extend({}, entity.tags, changed));
32390
32391         if (!_.isEqual(entity.tags, tags)) {
32392             context.perform(
32393                 iD.actions.ChangeTags(id, tags),
32394                 t('operations.change_tags.annotation'));
32395         }
32396     }
32397
32398     entityEditor.state = function(_) {
32399         if (!arguments.length) return state;
32400         state = _;
32401         return entityEditor;
32402     };
32403
32404     entityEditor.entityID = function(_) {
32405         if (!arguments.length) return id;
32406         id = _;
32407         entityEditor.preset(context.presets().match(context.entity(id), context.graph()));
32408         return entityEditor;
32409     };
32410
32411     entityEditor.preset = function(_) {
32412         if (!arguments.length) return preset;
32413         if (_ !== preset) {
32414             preset = _;
32415             reference = iD.ui.TagReference(preset.reference(context.geometry(id)), context)
32416                 .showing(false);
32417         }
32418         return entityEditor;
32419     };
32420
32421     return d3.rebind(entityEditor, event, 'on');
32422 };
32423 iD.ui.FeatureInfo = function(context) {
32424     function update(selection) {
32425         var features = context.features(),
32426             stats = features.stats(),
32427             count = 0,
32428             hiddenList = _.compact(_.map(features.hidden(), function(k) {
32429                 if (stats[k]) {
32430                     count += stats[k];
32431                     return String(stats[k]) + ' ' + t('feature.' + k + '.description');
32432                 }
32433             }));
32434
32435         selection.html('');
32436
32437         if (hiddenList.length) {
32438             var tooltip = bootstrap.tooltip()
32439                     .placement('top')
32440                     .html(true)
32441                     .title(function() {
32442                         return iD.ui.tooltipHtml(hiddenList.join('<br/>'));
32443                     });
32444
32445             var warning = selection.append('a')
32446                 .attr('href', '#')
32447                 .attr('tabindex', -1)
32448                 .html(t('feature_info.hidden_warning', { count: count }))
32449                 .call(tooltip)
32450                 .on('click', function() {
32451                     tooltip.hide(warning);
32452                     // open map data panel?
32453                     d3.event.preventDefault();
32454                 });
32455         }
32456
32457         selection
32458             .classed('hide', !hiddenList.length);
32459     }
32460
32461     return function(selection) {
32462         update(selection);
32463
32464         context.features().on('change.feature_info', function() {
32465             update(selection);
32466         });
32467     };
32468 };
32469 iD.ui.FeatureList = function(context) {
32470     var geocodeResults;
32471
32472     function featureList(selection) {
32473         var header = selection.append('div')
32474             .attr('class', 'header fillL cf');
32475
32476         header.append('h3')
32477             .text(t('inspector.feature_list'));
32478
32479         function keypress() {
32480             var q = search.property('value'),
32481                 items = list.selectAll('.feature-list-item');
32482             if (d3.event.keyCode === 13 && q.length && items.size()) {
32483                 click(items.datum());
32484             }
32485         }
32486
32487         function inputevent() {
32488             geocodeResults = undefined;
32489             drawList();
32490         }
32491
32492         var searchWrap = selection.append('div')
32493             .attr('class', 'search-header');
32494
32495         var search = searchWrap.append('input')
32496             .attr('placeholder', t('inspector.search'))
32497             .attr('type', 'search')
32498             .on('keypress', keypress)
32499             .on('input', inputevent);
32500
32501         searchWrap.append('span')
32502             .attr('class', 'icon search');
32503
32504         var listWrap = selection.append('div')
32505             .attr('class', 'inspector-body');
32506
32507         var list = listWrap.append('div')
32508             .attr('class', 'feature-list cf');
32509
32510         context.map()
32511             .on('drawn.feature-list', mapDrawn);
32512
32513         function mapDrawn(e) {
32514             if (e.full) {
32515                 drawList();
32516             }
32517         }
32518
32519         function features() {
32520             var entities = {},
32521                 result = [],
32522                 graph = context.graph(),
32523                 q = search.property('value').toLowerCase();
32524
32525             if (!q) return result;
32526
32527             var idMatch = q.match(/^([nwr])([0-9]+)$/);
32528
32529             if (idMatch) {
32530                 result.push({
32531                     id: idMatch[0],
32532                     geometry: idMatch[1] === 'n' ? 'point' : idMatch[1] === 'w' ? 'line' : 'relation',
32533                     type: idMatch[1] === 'n' ? t('inspector.node') : idMatch[1] === 'w' ? t('inspector.way') : t('inspector.relation'),
32534                     name: idMatch[2]
32535                 });
32536             }
32537
32538             var locationMatch = sexagesimal.pair(q.toUpperCase()) || q.match(/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)$/);
32539
32540             if (locationMatch) {
32541                 var loc = [parseFloat(locationMatch[0]), parseFloat(locationMatch[1])];
32542                 result.push({
32543                     id: -1,
32544                     geometry: 'point',
32545                     type: t('inspector.location'),
32546                     name: loc[0].toFixed(6) + ', ' + loc[1].toFixed(6),
32547                     location: loc
32548                 });
32549             }
32550
32551             function addEntity(entity) {
32552                 if (entity.id in entities || result.length > 200)
32553                     return;
32554
32555                 entities[entity.id] = true;
32556
32557                 var name = iD.util.displayName(entity) || '';
32558                 if (name.toLowerCase().indexOf(q) >= 0) {
32559                     result.push({
32560                         id: entity.id,
32561                         entity: entity,
32562                         geometry: context.geometry(entity.id),
32563                         type: context.presets().match(entity, graph).name(),
32564                         name: name
32565                     });
32566                 }
32567
32568                 graph.parentRelations(entity).forEach(function(parent) {
32569                     addEntity(parent);
32570                 });
32571             }
32572
32573             var visible = context.surface().selectAll('.point, .line, .area')[0];
32574             for (var i = 0; i < visible.length && result.length <= 200; i++) {
32575                 addEntity(visible[i].__data__);
32576             }
32577
32578             (geocodeResults || []).forEach(function(d) {
32579                 // https://github.com/openstreetmap/iD/issues/1890
32580                 if (d.osm_type && d.osm_id) {
32581                     result.push({
32582                         id: iD.Entity.id.fromOSM(d.osm_type, d.osm_id),
32583                         geometry: d.osm_type === 'relation' ? 'relation' : d.osm_type === 'way' ? 'line' : 'point',
32584                         type: d.type !== 'yes' ? (d.type.charAt(0).toUpperCase() + d.type.slice(1)).replace('_', ' ')
32585                                                : (d.class.charAt(0).toUpperCase() + d.class.slice(1)).replace('_', ' '),
32586                         name: d.display_name,
32587                         extent: new iD.geo.Extent(
32588                             [parseFloat(d.boundingbox[3]), parseFloat(d.boundingbox[0])],
32589                             [parseFloat(d.boundingbox[2]), parseFloat(d.boundingbox[1])])
32590                     });
32591                 }
32592             });
32593
32594             return result;
32595         }
32596
32597         function drawList() {
32598             var value = search.property('value'),
32599                 results = features();
32600
32601             list.classed('filtered', value.length);
32602
32603             var noResultsWorldwide = geocodeResults && geocodeResults.length === 0;
32604
32605             var resultsIndicator = list.selectAll('.no-results-item')
32606                 .data([0])
32607                 .enter().append('button')
32608                 .property('disabled', true)
32609                 .attr('class', 'no-results-item');
32610
32611             resultsIndicator.append('span')
32612                 .attr('class', 'icon alert');
32613
32614             resultsIndicator.append('span')
32615                 .attr('class', 'entity-name');
32616
32617             list.selectAll('.no-results-item .entity-name')
32618                 .text(noResultsWorldwide ? t('geocoder.no_results_worldwide') : t('geocoder.no_results_visible'));
32619
32620             list.selectAll('.geocode-item')
32621                 .data([0])
32622                 .enter().append('button')
32623                 .attr('class', 'geocode-item')
32624                 .on('click', geocode)
32625                 .append('div')
32626                 .attr('class', 'label')
32627                 .append('span')
32628                 .attr('class', 'entity-name')
32629                 .text(t('geocoder.search'));
32630
32631             list.selectAll('.no-results-item')
32632                 .style('display', (value.length && !results.length) ? 'block' : 'none');
32633
32634             list.selectAll('.geocode-item')
32635                 .style('display', (value && geocodeResults === undefined) ? 'block' : 'none');
32636
32637             list.selectAll('.feature-list-item')
32638                 .data([-1])
32639                 .remove();
32640
32641             var items = list.selectAll('.feature-list-item')
32642                 .data(results, function(d) { return d.id; });
32643
32644             var enter = items.enter().insert('button', '.geocode-item')
32645                 .attr('class', 'feature-list-item')
32646                 .on('mouseover', mouseover)
32647                 .on('mouseout', mouseout)
32648                 .on('click', click);
32649
32650             var label = enter.append('div')
32651                 .attr('class', 'label');
32652
32653             label.append('span')
32654                 .attr('class', function(d) { return d.geometry + ' icon icon-pre-text'; });
32655
32656             label.append('span')
32657                 .attr('class', 'entity-type')
32658                 .text(function(d) { return d.type; });
32659
32660             label.append('span')
32661                 .attr('class', 'entity-name')
32662                 .text(function(d) { return d.name; });
32663
32664             enter.style('opacity', 0)
32665                 .transition()
32666                 .style('opacity', 1);
32667
32668             items.order();
32669
32670             items.exit()
32671                 .remove();
32672         }
32673
32674         function mouseover(d) {
32675             if (d.id === -1) return;
32676
32677             context.surface().selectAll(iD.util.entityOrMemberSelector([d.id], context.graph()))
32678                 .classed('hover', true);
32679         }
32680
32681         function mouseout() {
32682             context.surface().selectAll('.hover')
32683                 .classed('hover', false);
32684         }
32685
32686         function click(d) {
32687             d3.event.preventDefault();
32688             if (d.location) {
32689                 context.map().centerZoom([d.location[1], d.location[0]], 20);
32690             }
32691             else if (d.entity) {
32692                 context.enter(iD.modes.Select(context, [d.entity.id]));
32693             } else {
32694                 context.zoomToEntity(d.id);
32695             }
32696         }
32697
32698         function geocode() {
32699             var searchVal = encodeURIComponent(search.property('value'));
32700             d3.json('http://nominatim.openstreetmap.org/search/' + searchVal + '?limit=10&format=json', function(err, resp) {
32701                 geocodeResults = resp || [];
32702                 drawList();
32703             });
32704         }
32705     }
32706
32707     return featureList;
32708 };
32709 iD.ui.flash = function(selection) {
32710     var modal = iD.ui.modal(selection);
32711
32712     modal.select('.modal').classed('modal-flash', true);
32713
32714     modal.select('.content')
32715         .classed('modal-section', true)
32716         .append('div')
32717         .attr('class', 'description');
32718
32719     modal.on('click.flash', function() { modal.remove(); });
32720
32721     setTimeout(function() {
32722         modal.remove();
32723         return true;
32724     }, 1500);
32725
32726     return modal;
32727 };
32728 iD.ui.Geolocate = function(map) {
32729     function click() {
32730         navigator.geolocation.getCurrentPosition(
32731             success, error);
32732     }
32733
32734     function success(position) {
32735         var extent = iD.geo.Extent([position.coords.longitude, position.coords.latitude])
32736             .padByMeters(position.coords.accuracy);
32737
32738         map.centerZoom(extent.center(), Math.min(20, map.extentZoom(extent)));
32739     }
32740
32741     function error() { }
32742
32743     return function(selection) {
32744         if (!navigator.geolocation) return;
32745
32746         var button = selection.append('button')
32747             .attr('tabindex', -1)
32748             .attr('title', t('geolocate.title'))
32749             .on('click', click)
32750             .call(bootstrap.tooltip()
32751                 .placement('left'));
32752
32753          button.append('span')
32754              .attr('class', 'icon geolocate light');
32755     };
32756 };
32757 iD.ui.Help = function(context) {
32758     var key = 'H';
32759
32760     var docKeys = [
32761         'help.help',
32762         'help.editing_saving',
32763         'help.roads',
32764         'help.gps',
32765         'help.imagery',
32766         'help.addresses',
32767         'help.inspector',
32768         'help.buildings',
32769         'help.relations'];
32770
32771     var docs = docKeys.map(function(key) {
32772         var text = t(key);
32773         return {
32774             title: text.split('\n')[0].replace('#', '').trim(),
32775             html: marked(text.split('\n').slice(1).join('\n'))
32776         };
32777     });
32778
32779     function help(selection) {
32780
32781         function hide() {
32782             setVisible(false);
32783         }
32784
32785         function toggle() {
32786             if (d3.event) d3.event.preventDefault();
32787             tooltip.hide(button);
32788             setVisible(!button.classed('active'));
32789         }
32790
32791         function setVisible(show) {
32792             if (show !== shown) {
32793                 button.classed('active', show);
32794                 shown = show;
32795
32796                 if (show) {
32797                     selection.on('mousedown.help-inside', function() {
32798                         return d3.event.stopPropagation();
32799                     });
32800                     pane.style('display', 'block')
32801                         .style('right', '-500px')
32802                         .transition()
32803                         .duration(200)
32804                         .style('right', '0px');
32805                 } else {
32806                     pane.style('right', '0px')
32807                         .transition()
32808                         .duration(200)
32809                         .style('right', '-500px')
32810                         .each('end', function() {
32811                             d3.select(this).style('display', 'none');
32812                         });
32813                     selection.on('mousedown.help-inside', null);
32814                 }
32815             }
32816         }
32817
32818         function clickHelp(d, i) {
32819             pane.property('scrollTop', 0);
32820             doctitle.html(d.title);
32821             body.html(d.html);
32822             body.selectAll('a')
32823                 .attr('target', '_blank');
32824             menuItems.classed('selected', function(m) {
32825                 return m.title === d.title;
32826             });
32827
32828             nav.html('');
32829
32830             if (i > 0) {
32831                 var prevLink = nav.append('a')
32832                     .attr('class', 'previous')
32833                     .on('click', function() {
32834                         clickHelp(docs[i - 1], i - 1);
32835                     });
32836                 prevLink.append('span').attr('class', 'icon back blue');
32837                 prevLink.append('span').html(docs[i - 1].title);
32838             }
32839             if (i < docs.length - 1) {
32840                 var nextLink = nav.append('a')
32841                     .attr('class', 'next')
32842                     .on('click', function() {
32843                         clickHelp(docs[i + 1], i + 1);
32844                     });
32845                 nextLink.append('span').html(docs[i + 1].title);
32846                 nextLink.append('span').attr('class', 'icon forward blue');
32847             }
32848         }
32849
32850         function clickWalkthrough() {
32851             d3.select(document.body).call(iD.ui.intro(context));
32852             setVisible(false);
32853         }
32854
32855
32856         var pane = selection.append('div')
32857                 .attr('class', 'help-wrap map-overlay fillL col5 content hide'),
32858             tooltip = bootstrap.tooltip()
32859                 .placement('left')
32860                 .html(true)
32861                 .title(iD.ui.tooltipHtml(t('help.title'), key)),
32862             button = selection.append('button')
32863                 .attr('tabindex', -1)
32864                 .on('click', toggle)
32865                 .call(tooltip),
32866             shown = false;
32867
32868         button.append('span')
32869             .attr('class', 'icon help light');
32870
32871
32872         var toc = pane.append('ul')
32873             .attr('class', 'toc');
32874
32875         var menuItems = toc.selectAll('li')
32876             .data(docs)
32877             .enter()
32878             .append('li')
32879             .append('a')
32880             .html(function(d) { return d.title; })
32881             .on('click', clickHelp);
32882
32883         toc.append('li')
32884             .attr('class','walkthrough')
32885             .append('a')
32886             .text(t('splash.walkthrough'))
32887             .on('click', clickWalkthrough);
32888
32889         var content = pane.append('div')
32890             .attr('class', 'left-content');
32891
32892         var doctitle = content.append('h2')
32893             .text(t('help.title'));
32894
32895         var body = content.append('div')
32896             .attr('class', 'body');
32897
32898         var nav = content.append('div')
32899             .attr('class', 'nav');
32900
32901         clickHelp(docs[0], 0);
32902
32903         var keybinding = d3.keybinding('help')
32904             .on(key, toggle)
32905             .on('B', hide)
32906             .on('F', hide);
32907
32908         d3.select(document)
32909             .call(keybinding);
32910
32911         context.surface().on('mousedown.help-outside', hide);
32912         context.container().on('mousedown.help-outside', hide);
32913     }
32914
32915     return help;
32916 };
32917 iD.ui.Info = function(context) {
32918     var key = iD.ui.cmd('⌘I'),
32919         imperial = (iD.detect().locale.toLowerCase() === 'en-us');
32920
32921     function info(selection) {
32922         function radiansToMeters(r) {
32923             // using WGS84 authalic radius (6371007.1809 m)
32924             return r * 6371007.1809;
32925         }
32926
32927         function steradiansToSqmeters(r) {
32928             // http://gis.stackexchange.com/a/124857/40446
32929             return r / 12.56637 * 510065621724000;
32930         }
32931
32932         function displayLength(m) {
32933             var d = m * (imperial ? 3.28084 : 1),
32934                 p, unit;
32935
32936             if (imperial) {
32937                 if (d >= 5280) {
32938                     d /= 5280;
32939                     unit = 'mi';
32940                 } else {
32941                     unit = 'ft';
32942                 }
32943             } else {
32944                 if (d >= 1000) {
32945                     d /= 1000;
32946                     unit = 'km';
32947                 } else {
32948                     unit = 'm';
32949                 }
32950             }
32951
32952             // drop unnecessary precision
32953             p = d > 1000 ? 0 : d > 100 ? 1 : 2;
32954
32955             return String(d.toFixed(p)) + ' ' + unit;
32956         }
32957
32958         function displayArea(m2) {
32959             var d = m2 * (imperial ? 10.7639111056 : 1),
32960                 d1, d2, p1, p2, unit1, unit2;
32961
32962             if (imperial) {
32963                 if (d >= 6969600) {     // > 0.25mi² show mi²
32964                     d1 = d / 27878400;
32965                     unit1 = 'mi²';
32966                 } else {
32967                     d1 = d;
32968                     unit1 = 'ft²';
32969                 }
32970
32971                 if (d > 4356 && d < 43560000) {   // 0.1 - 1000 acres
32972                     d2 = d / 43560;
32973                     unit2 = 'ac';
32974                 }
32975
32976             } else {
32977                 if (d >= 250000) {    // > 0.25km² show km²
32978                     d1 = d / 1000000;
32979                     unit1 = 'km²';
32980                 } else {
32981                     d1 = d;
32982                     unit1 = 'm²';
32983                 }
32984
32985                 if (d > 1000 && d < 10000000) {   // 0.1 - 1000 hectares
32986                     d2 = d / 10000;
32987                     unit2 = 'ha';
32988                 }
32989             }
32990
32991             // drop unnecessary precision
32992             p1 = d1 > 1000 ? 0 : d1 > 100 ? 1 : 2;
32993             p2 = d2 > 1000 ? 0 : d2 > 100 ? 1 : 2;
32994
32995             return String(d1.toFixed(p1)) + ' ' + unit1 +
32996                 (d2 ? ' (' + String(d2.toFixed(p2)) + ' ' + unit2 + ')' : '');
32997         }
32998
32999
33000         function redraw() {
33001             if (hidden()) return;
33002
33003             var resolver = context.graph(),
33004                 selected = context.selectedIDs(),
33005                 singular = selected.length === 1 ? selected[0] : null,
33006                 extent = iD.geo.Extent(),
33007                 entity;
33008
33009             selection.html('');
33010             selection.append('h4')
33011                 .attr('class', 'selection-heading fillD')
33012                 .text(singular || t('infobox.selected', { n: selected.length }));
33013
33014             if (!selected.length) return;
33015
33016             var center;
33017             for (var i = 0; i < selected.length; i++) {
33018                 entity = context.entity(selected[i]);
33019                 extent._extend(entity.extent(resolver));
33020             }
33021             center = extent.center();
33022
33023
33024             var list = selection.append('ul');
33025
33026             // multiple selection, just display extent center..
33027             if (!singular) {
33028                 list.append('li')
33029                     .text(t('infobox.center') + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
33030                 return;
33031             }
33032
33033             // single selection, display details..
33034             if (!entity) return;
33035             var geometry = entity.geometry(resolver);
33036
33037             if (geometry === 'line' || geometry === 'area') {
33038                 var closed = (entity.type === 'relation') || (entity.isClosed() && !entity.isDegenerate()),
33039                     feature = entity.asGeoJSON(resolver),
33040                     length = radiansToMeters(d3.geo.length(feature)),
33041                     lengthLabel = t('infobox.' + (closed ? 'perimeter' : 'length')),
33042                     centroid = d3.geo.centroid(feature);
33043
33044                 list.append('li')
33045                     .text(t('infobox.geometry') + ': ' +
33046                         (closed ? t('infobox.closed') + ' ' : '') + t('geometry.' + geometry) );
33047
33048                 if (closed) {
33049                     var area = steradiansToSqmeters(entity.area(resolver));
33050                     list.append('li')
33051                         .text(t('infobox.area') + ': ' + displayArea(area));
33052                 }
33053
33054                 list.append('li')
33055                     .text(lengthLabel + ': ' + displayLength(length));
33056
33057                 list.append('li')
33058                     .text(t('infobox.centroid') + ': ' + centroid[0].toFixed(5) + ', ' + centroid[1].toFixed(5));
33059
33060
33061                 var toggle  = imperial ? 'imperial' : 'metric';
33062                 selection.append('a')
33063                     .text(t('infobox.' + toggle))
33064                     .attr('href', '#')
33065                     .attr('class', 'button')
33066                     .on('click', function() {
33067                         d3.event.preventDefault();
33068                         imperial = !imperial;
33069                         redraw();
33070                     });
33071
33072             } else {
33073                 var centerLabel = t('infobox.' + (entity.type === 'node' ? 'location' : 'center'));
33074
33075                 list.append('li')
33076                     .text(t('infobox.geometry') + ': ' + t('geometry.' + geometry));
33077
33078                 list.append('li')
33079                     .text(centerLabel + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
33080             }
33081         }
33082
33083
33084         function hidden() {
33085             return selection.style('display') === 'none';
33086         }
33087
33088
33089         function toggle() {
33090             if (d3.event) d3.event.preventDefault();
33091
33092             if (hidden()) {
33093                 selection
33094                     .style('display', 'block')
33095                     .style('opacity', 0)
33096                     .transition()
33097                     .duration(200)
33098                     .style('opacity', 1);
33099
33100                 redraw();
33101
33102             } else {
33103                 selection
33104                     .style('display', 'block')
33105                     .style('opacity', 1)
33106                     .transition()
33107                     .duration(200)
33108                     .style('opacity', 0)
33109                     .each('end', function() {
33110                         d3.select(this).style('display', 'none');
33111                     });
33112             }
33113         }
33114
33115         context.map()
33116             .on('drawn.info', redraw);
33117
33118         redraw();
33119
33120         var keybinding = d3.keybinding('info')
33121             .on(key, toggle);
33122
33123         d3.select(document)
33124             .call(keybinding);
33125     }
33126
33127     return info;
33128 };
33129 iD.ui.Inspector = function(context) {
33130     var presetList = iD.ui.PresetList(context),
33131         entityEditor = iD.ui.EntityEditor(context),
33132         state = 'select',
33133         entityID,
33134         newFeature = false;
33135
33136     function inspector(selection) {
33137         presetList
33138             .entityID(entityID)
33139             .autofocus(newFeature)
33140             .on('choose', setPreset);
33141
33142         entityEditor
33143             .state(state)
33144             .entityID(entityID)
33145             .on('choose', showList);
33146
33147         var $wrap = selection.selectAll('.panewrap')
33148             .data([0]);
33149
33150         var $enter = $wrap.enter().append('div')
33151             .attr('class', 'panewrap');
33152
33153         $enter.append('div')
33154             .attr('class', 'preset-list-pane pane');
33155
33156         $enter.append('div')
33157             .attr('class', 'entity-editor-pane pane');
33158
33159         var $presetPane = $wrap.select('.preset-list-pane');
33160         var $editorPane = $wrap.select('.entity-editor-pane');
33161
33162         var graph = context.graph(),
33163             entity = context.entity(entityID),
33164             showEditor = state === 'hover' ||
33165                 entity.isUsed(graph) ||
33166                 entity.isHighwayIntersection(graph);
33167
33168         if (showEditor) {
33169             $wrap.style('right', '0%');
33170             $editorPane.call(entityEditor);
33171         } else {
33172             $wrap.style('right', '-100%');
33173             $presetPane.call(presetList);
33174         }
33175
33176         var $footer = selection.selectAll('.footer')
33177             .data([0]);
33178
33179         $footer.enter().append('div')
33180             .attr('class', 'footer');
33181
33182         selection.select('.footer')
33183             .call(iD.ui.ViewOnOSM(context)
33184                 .entityID(entityID));
33185
33186         function showList(preset) {
33187             $wrap.transition()
33188                 .styleTween('right', function() { return d3.interpolate('0%', '-100%'); });
33189
33190             $presetPane.call(presetList
33191                 .preset(preset)
33192                 .autofocus(true));
33193         }
33194
33195         function setPreset(preset) {
33196             $wrap.transition()
33197                 .styleTween('right', function() { return d3.interpolate('-100%', '0%'); });
33198
33199             $editorPane.call(entityEditor
33200                 .preset(preset));
33201         }
33202     }
33203
33204     inspector.state = function(_) {
33205         if (!arguments.length) return state;
33206         state = _;
33207         entityEditor.state(state);
33208         return inspector;
33209     };
33210
33211     inspector.entityID = function(_) {
33212         if (!arguments.length) return entityID;
33213         entityID = _;
33214         return inspector;
33215     };
33216
33217     inspector.newFeature = function(_) {
33218         if (!arguments.length) return newFeature;
33219         newFeature = _;
33220         return inspector;
33221     };
33222
33223     return inspector;
33224 };
33225 iD.ui.intro = function(context) {
33226
33227     var step;
33228
33229     function intro(selection) {
33230
33231         context.enter(iD.modes.Browse(context));
33232
33233         // Save current map state
33234         var history = context.history().toJSON(),
33235             hash = window.location.hash,
33236             background = context.background().baseLayerSource(),
33237             opacity = d3.select('.background-layer').style('opacity'),
33238             loadedTiles = context.connection().loadedTiles(),
33239             baseEntities = context.history().graph().base().entities,
33240             introGraph;
33241
33242         // Load semi-real data used in intro
33243         context.connection().toggle(false).flush();
33244         context.history().reset();
33245         
33246         introGraph = JSON.parse(iD.introGraph);
33247         for (var key in introGraph) {
33248             introGraph[key] = iD.Entity(introGraph[key]);
33249         }
33250         context.history().merge(d3.values(iD.Graph().load(introGraph).entities));
33251         context.background().bing();
33252
33253         // Block saving
33254         var savebutton = d3.select('#bar button.save'),
33255             save = savebutton.on('click');
33256         savebutton.on('click', null);
33257         context.inIntro(true);
33258
33259         d3.select('.background-layer').style('opacity', 1);
33260
33261         var curtain = d3.curtain();
33262         selection.call(curtain);
33263
33264         function reveal(box, text, options) {
33265             options = options || {};
33266             if (text) curtain.reveal(box, text, options.tooltipClass, options.duration);
33267             else curtain.reveal(box, '', '', options.duration);
33268         }
33269
33270         var steps = ['navigation', 'point', 'area', 'line', 'startEditing'].map(function(step, i) {
33271             var s = iD.ui.intro[step](context, reveal)
33272                 .on('done', function() {
33273                     entered.filter(function(d) {
33274                         return d.title === s.title;
33275                     }).classed('finished', true);
33276                     enter(steps[i + 1]);
33277                 });
33278             return s;
33279         });
33280
33281         steps[steps.length - 1].on('startEditing', function() {
33282             curtain.remove();
33283             navwrap.remove();
33284             d3.select('.background-layer').style('opacity', opacity);
33285             context.connection().toggle(true).flush().loadedTiles(loadedTiles);
33286             context.history().reset().merge(d3.values(baseEntities));
33287             context.background().baseLayerSource(background);
33288             if (history) context.history().fromJSON(history);
33289             window.location.replace(hash);
33290             context.inIntro(false);
33291             d3.select('#bar button.save').on('click', save);
33292         });
33293
33294         var navwrap = selection.append('div').attr('class', 'intro-nav-wrap fillD');
33295
33296         var buttonwrap = navwrap.append('div')
33297             .attr('class', 'joined')
33298             .selectAll('button.step');
33299
33300         var entered = buttonwrap.data(steps)
33301             .enter().append('button')
33302                 .attr('class', 'step')
33303                 .on('click', enter);
33304
33305         entered.append('div').attr('class','icon icon-pre-text apply');
33306         entered.append('label').text(function(d) { return t(d.title); });
33307         enter(steps[0]);
33308
33309         function enter (newStep) {
33310
33311             if (step) {
33312                 step.exit();
33313             }
33314
33315             context.enter(iD.modes.Browse(context));
33316
33317             step = newStep;
33318             step.enter();
33319
33320             entered.classed('active', function(d) {
33321                 return d.title === step.title;
33322             });
33323         }
33324
33325     }
33326     return intro;
33327 };
33328
33329 iD.ui.intro.pointBox = function(point, context) {
33330     var rect = context.surfaceRect();
33331     point = context.projection(point);
33332     return {
33333         left: point[0] + rect.left - 30,
33334         top: point[1] + rect.top - 50,
33335         width: 60,
33336         height: 70
33337     };
33338 };
33339
33340 iD.ui.intro.pad = function(box, padding, context) {
33341     if (box instanceof Array) {
33342         var rect = context.surfaceRect();
33343         box = context.projection(box);
33344         box = {
33345             left: box[0] + rect.left,
33346             top: box[1] + rect.top
33347         };
33348     }
33349     return {
33350         left: box.left - padding,
33351         top: box.top - padding,
33352         width: (box.width || 0) + 2 * padding,
33353         height: (box.width || 0) + 2 * padding
33354     };
33355 };
33356 iD.ui.Lasso = function(context) {
33357
33358     var box, group,
33359         a = [0, 0],
33360         b = [0, 0];
33361
33362     function lasso(selection) {
33363
33364         context.container().classed('lasso', true);
33365
33366         group = selection.append('g')
33367             .attr('class', 'lasso hide');
33368
33369         box = group.append('rect')
33370             .attr('class', 'lasso-box');
33371
33372         group.call(iD.ui.Toggle(true));
33373
33374     }
33375
33376     // top-left
33377     function topLeft(d) {
33378         return 'translate(' + Math.min(d[0][0], d[1][0]) + ',' + Math.min(d[0][1], d[1][1]) + ')';
33379     }
33380
33381     function width(d) { return Math.abs(d[0][0] - d[1][0]); }
33382     function height(d) { return Math.abs(d[0][1] - d[1][1]); }
33383
33384     function draw() {
33385         if (box) {
33386             box.data([[a, b]])
33387                 .attr('transform', topLeft)
33388                 .attr('width', width)
33389                 .attr('height', height);
33390         }
33391     }
33392
33393     lasso.a = function(_) {
33394         if (!arguments.length) return a;
33395         a = _;
33396         draw();
33397         return lasso;
33398     };
33399
33400     lasso.b = function(_) {
33401         if (!arguments.length) return b;
33402         b = _;
33403         draw();
33404         return lasso;
33405     };
33406
33407     lasso.close = function() {
33408         if (group) {
33409             group.call(iD.ui.Toggle(false, function() {
33410                 d3.select(this).remove();
33411             }));
33412         }
33413         context.container().classed('lasso', false);
33414     };
33415
33416     return lasso;
33417 };
33418 iD.ui.Loading = function(context) {
33419     var message = '',
33420         blocking = false,
33421         modal;
33422
33423     var loading = function(selection) {
33424         modal = iD.ui.modal(selection, blocking);
33425
33426         var loadertext = modal.select('.content')
33427             .classed('loading-modal', true)
33428             .append('div')
33429             .attr('class', 'modal-section fillL');
33430
33431         loadertext.append('img')
33432             .attr('class', 'loader')
33433             .attr('src', context.imagePath('loader-white.gif'));
33434
33435         loadertext.append('h3')
33436             .text(message);
33437
33438         modal.select('button.close')
33439             .attr('class', 'hide');
33440
33441         return loading;
33442     };
33443
33444     loading.message = function(_) {
33445         if (!arguments.length) return message;
33446         message = _;
33447         return loading;
33448     };
33449
33450     loading.blocking = function(_) {
33451         if (!arguments.length) return blocking;
33452         blocking = _;
33453         return loading;
33454     };
33455
33456     loading.close = function() {
33457         modal.remove();
33458     };
33459
33460     return loading;
33461 };
33462 iD.ui.MapData = function(context) {
33463     var key = 'F',
33464         features = context.features().keys(),
33465         fills = ['wireframe', 'partial', 'full'],
33466         fillDefault = context.storage('area-fill') || 'partial',
33467         fillSelected = fillDefault;
33468
33469     function map_data(selection) {
33470
33471         function showsFeature(d) {
33472             return context.features().enabled(d);
33473         }
33474
33475         function autoHiddenFeature(d) {
33476             return context.features().autoHidden(d);
33477         }
33478
33479         function clickFeature(d) {
33480             context.features().toggle(d);
33481             update();
33482         }
33483
33484         function showsFill(d) {
33485             return fillSelected === d;
33486         }
33487
33488         function setFill(d) {
33489             _.each(fills, function(opt) {
33490                 context.surface().classed('fill-' + opt, Boolean(opt === d));
33491             });
33492
33493             fillSelected = d;
33494             if (d !== 'wireframe') {
33495                 fillDefault = d;
33496                 context.storage('area-fill', d);
33497             }
33498             update();
33499         }
33500
33501         function clickGpx() {
33502             context.background().toggleGpxLayer();
33503             update();
33504         }
33505
33506         function clickMapillary() {
33507             context.background().toggleMapillaryLayer();
33508             update();
33509         }
33510
33511         function drawList(selection, data, type, name, change, active) {
33512             var items = selection.selectAll('li')
33513                 .data(data);
33514
33515             //enter
33516             var enter = items.enter()
33517                 .append('li')
33518                 .attr('class', 'layer')
33519                 .call(bootstrap.tooltip()
33520                     .html(true)
33521                     .title(function(d) {
33522                         var tip = t(name + '.' + d + '.tooltip'),
33523                             key = (d === 'wireframe' ? 'W' : null);
33524
33525                         if (name === 'feature' && autoHiddenFeature(d)) {
33526                             tip += '<div>' + t('map_data.autohidden') + '</div>';
33527                         }
33528                         return iD.ui.tooltipHtml(tip, key);
33529                     })
33530                     .placement('top')
33531                 );
33532
33533             var label = enter.append('label');
33534
33535             label.append('input')
33536                 .attr('type', type)
33537                 .attr('name', name)
33538                 .on('change', change);
33539
33540             label.append('span')
33541                 .text(function(d) { return t(name + '.' + d + '.description'); });
33542
33543             //update
33544             items
33545                 .classed('active', active)
33546                 .selectAll('input')
33547                 .property('checked', active)
33548                 .property('indeterminate', function(d) {
33549                     return (name === 'feature' && autoHiddenFeature(d));
33550                 });
33551
33552             //exit
33553             items.exit()
33554                 .remove();
33555         }
33556
33557         function update() {
33558             featureList.call(drawList, features, 'checkbox', 'feature', clickFeature, showsFeature);
33559             fillList.call(drawList, fills, 'radio', 'area_fill', setFill, showsFill);
33560
33561             var hasGpx = context.background().hasGpxLayer(),
33562                 showsGpx = context.background().showsGpxLayer(),
33563                 showsMapillary = context.background().showsMapillaryLayer();
33564
33565             gpxLayerItem
33566                 .classed('active', showsGpx)
33567                 .selectAll('input')
33568                 .property('disabled', !hasGpx)
33569                 .property('checked', showsGpx);
33570
33571             mapillaryLayerItem
33572                 .classed('active', showsMapillary)
33573                 .selectAll('input')
33574                 .property('checked', showsMapillary);
33575         }
33576
33577         function hidePanel() { setVisible(false); }
33578
33579         function togglePanel() {
33580             if (d3.event) d3.event.preventDefault();
33581             tooltip.hide(button);
33582             setVisible(!button.classed('active'));
33583         }
33584
33585         function toggleWireframe() {
33586             if (d3.event) {
33587                 d3.event.preventDefault();
33588                 d3.event.stopPropagation();
33589             }
33590             setFill((fillSelected === 'wireframe' ? fillDefault : 'wireframe'));
33591             context.map().pan([0,0]);  // trigger a redraw
33592         }
33593
33594         function setVisible(show) {
33595             if (show !== shown) {
33596                 button.classed('active', show);
33597                 shown = show;
33598
33599                 if (show) {
33600                     selection.on('mousedown.map_data-inside', function() {
33601                         return d3.event.stopPropagation();
33602                     });
33603                     content.style('display', 'block')
33604                         .style('right', '-300px')
33605                         .transition()
33606                         .duration(200)
33607                         .style('right', '0px');
33608                 } else {
33609                     content.style('display', 'block')
33610                         .style('right', '0px')
33611                         .transition()
33612                         .duration(200)
33613                         .style('right', '-300px')
33614                         .each('end', function() {
33615                             d3.select(this).style('display', 'none');
33616                         });
33617                     selection.on('mousedown.map_data-inside', null);
33618                 }
33619             }
33620         }
33621
33622
33623         var content = selection.append('div')
33624                 .attr('class', 'fillL map-overlay col3 content hide'),
33625             tooltip = bootstrap.tooltip()
33626                 .placement('left')
33627                 .html(true)
33628                 .title(iD.ui.tooltipHtml(t('map_data.description'), key)),
33629             button = selection.append('button')
33630                 .attr('tabindex', -1)
33631                 .on('click', togglePanel)
33632                 .call(tooltip),
33633             shown = false;
33634
33635         button.append('span')
33636             .attr('class', 'icon data light');
33637
33638         content.append('h4')
33639             .text(t('map_data.title'));
33640
33641
33642         // data layers
33643         content.append('a')
33644             .text(t('map_data.data_layers'))
33645             .attr('href', '#')
33646             .classed('hide-toggle', true)
33647             .classed('expanded', true)
33648             .on('click', function() {
33649                 var exp = d3.select(this).classed('expanded');
33650                 layerContainer.style('display', exp ? 'none' : 'block');
33651                 d3.select(this).classed('expanded', !exp);
33652                 d3.event.preventDefault();
33653             });
33654
33655         var layerContainer = content.append('div')
33656             .attr('class', 'filters')
33657             .style('display', 'block');
33658
33659         // mapillary
33660         var mapillaryLayerItem = layerContainer.append('ul')
33661             .attr('class', 'layer-list')
33662             .append('li');
33663
33664         var label = mapillaryLayerItem.append('label')
33665             .call(bootstrap.tooltip()
33666                 .title(t('mapillary.tooltip'))
33667                 .placement('top'));
33668
33669         label.append('input')
33670             .attr('type', 'checkbox')
33671             .on('change', clickMapillary);
33672
33673         label.append('span')
33674             .text(t('mapillary.title'));
33675
33676         // gpx
33677         var gpxLayerItem = layerContainer.append('ul')
33678             .style('display', iD.detect().filedrop ? 'block' : 'none')
33679             .attr('class', 'layer-list')
33680             .append('li')
33681             .classed('layer-toggle-gpx', true);
33682
33683         gpxLayerItem.append('button')
33684             .attr('class', 'layer-extent')
33685             .call(bootstrap.tooltip()
33686                 .title(t('gpx.zoom'))
33687                 .placement('left'))
33688             .on('click', function() {
33689                 d3.event.preventDefault();
33690                 d3.event.stopPropagation();
33691                 context.background().zoomToGpxLayer();
33692             })
33693             .append('span')
33694             .attr('class', 'icon geolocate');
33695
33696         gpxLayerItem.append('button')
33697             .attr('class', 'layer-browse')
33698             .call(bootstrap.tooltip()
33699                 .title(t('gpx.browse'))
33700                 .placement('left'))
33701             .on('click', function() {
33702                 d3.select(document.createElement('input'))
33703                     .attr('type', 'file')
33704                     .on('change', function() {
33705                         context.background().gpxLayerFiles(d3.event.target.files);
33706                     })
33707                     .node().click();
33708             })
33709             .append('span')
33710             .attr('class', 'icon geocode');
33711
33712         label = gpxLayerItem.append('label')
33713             .call(bootstrap.tooltip()
33714                 .title(t('gpx.drag_drop'))
33715                 .placement('top'));
33716
33717         label.append('input')
33718             .attr('type', 'checkbox')
33719             .property('disabled', true)
33720             .on('change', clickGpx);
33721
33722         label.append('span')
33723             .text(t('gpx.local_layer'));
33724
33725
33726         // area fills
33727         content.append('a')
33728             .text(t('map_data.fill_area'))
33729             .attr('href', '#')
33730             .classed('hide-toggle', true)
33731             .classed('expanded', false)
33732             .on('click', function() {
33733                 var exp = d3.select(this).classed('expanded');
33734                 fillContainer.style('display', exp ? 'none' : 'block');
33735                 d3.select(this).classed('expanded', !exp);
33736                 d3.event.preventDefault();
33737             });
33738
33739         var fillContainer = content.append('div')
33740             .attr('class', 'filters')
33741             .style('display', 'none');
33742
33743         var fillList = fillContainer.append('ul')
33744             .attr('class', 'layer-list');
33745
33746
33747         // feature filters
33748         content.append('a')
33749             .text(t('map_data.map_features'))
33750             .attr('href', '#')
33751             .classed('hide-toggle', true)
33752             .classed('expanded', false)
33753             .on('click', function() {
33754                 var exp = d3.select(this).classed('expanded');
33755                 featureContainer.style('display', exp ? 'none' : 'block');
33756                 d3.select(this).classed('expanded', !exp);
33757                 d3.event.preventDefault();
33758             });
33759
33760         var featureContainer = content.append('div')
33761             .attr('class', 'filters')
33762             .style('display', 'none');
33763
33764         var featureList = featureContainer.append('ul')
33765             .attr('class', 'layer-list');
33766
33767
33768         context.features()
33769             .on('change.map_data-update', update);
33770
33771         setFill(fillDefault);
33772
33773         var keybinding = d3.keybinding('features')
33774             .on(key, togglePanel)
33775             .on('W', toggleWireframe)
33776             .on('B', hidePanel)
33777             .on('H', hidePanel);
33778
33779         d3.select(document)
33780             .call(keybinding);
33781
33782         context.surface().on('mousedown.map_data-outside', hidePanel);
33783         context.container().on('mousedown.map_data-outside', hidePanel);
33784     }
33785
33786     return map_data;
33787 };
33788 iD.ui.MapInMap = function(context) {
33789     var key = '/';
33790
33791     function map_in_map(selection) {
33792         var backgroundLayer = iD.TileLayer(),
33793             overlayLayer = iD.TileLayer(),
33794             projection = iD.geo.RawMercator(),
33795             zoom = d3.behavior.zoom()
33796                 .scaleExtent([ztok(0.5), ztok(24)])
33797                 .on('zoom', zoomPan),
33798             transformed = false,
33799             panning = false,
33800             zDiff = 6,    // by default, minimap renders at (main zoom - 6)
33801             tStart, tLast, tCurr, kLast, kCurr, tiles, svg, timeoutId;
33802
33803         function ztok(z) { return 256 * Math.pow(2, z); }
33804         function ktoz(k) { return Math.log(k) / Math.LN2 - 8; }
33805
33806
33807         function startMouse() {
33808             context.surface().on('mouseup.map-in-map-outside', endMouse);
33809             context.container().on('mouseup.map-in-map-outside', endMouse);
33810
33811             tStart = tLast = tCurr = projection.translate();
33812             panning = true;
33813         }
33814
33815
33816         function zoomPan() {
33817             var e = d3.event.sourceEvent,
33818                 t = d3.event.translate,
33819                 k = d3.event.scale,
33820                 zMain = ktoz(context.projection.scale() * 2 * Math.PI),
33821                 zMini = ktoz(k);
33822
33823             // restrict minimap zoom to < (main zoom - 3)
33824             if (zMini > zMain - 3) {
33825                 zMini = zMain - 3;
33826                 zoom.scale(kCurr).translate(tCurr);  // restore last good values
33827                 return;
33828             }
33829
33830             tCurr = t;
33831             kCurr = k;
33832             zDiff = zMain - zMini;
33833
33834             var scale = kCurr / kLast,
33835                 tX = Math.round((tCurr[0] / scale - tLast[0]) * scale),
33836                 tY = Math.round((tCurr[1] / scale - tLast[1]) * scale);
33837
33838             iD.util.setTransform(tiles, tX, tY, scale);
33839             iD.util.setTransform(svg, 0, 0, scale);
33840             transformed = true;
33841
33842             queueRedraw();
33843
33844             e.preventDefault();
33845             e.stopPropagation();
33846         }
33847
33848
33849         function endMouse() {
33850             context.surface().on('mouseup.map-in-map-outside', null);
33851             context.container().on('mouseup.map-in-map-outside', null);
33852
33853             updateProjection();
33854             panning = false;
33855
33856             if (tCurr[0] !== tStart[0] && tCurr[1] !== tStart[1]) {
33857                 var dMini = selection.dimensions(),
33858                     cMini = [ dMini[0] / 2, dMini[1] / 2 ];
33859
33860                 context.map().center(projection.invert(cMini));
33861             }
33862         }
33863
33864
33865         function updateProjection() {
33866             var loc = context.map().center(),
33867                 dMini = selection.dimensions(),
33868                 cMini = [ dMini[0] / 2, dMini[1] / 2 ],
33869                 tMain = context.projection.translate(),
33870                 kMain = context.projection.scale(),
33871                 zMain = ktoz(kMain * 2 * Math.PI),
33872                 zMini = Math.max(zMain - zDiff, 0.5),
33873                 kMini = ztok(zMini);
33874
33875             projection
33876                 .translate(tMain)
33877                 .scale(kMini / (2 * Math.PI));
33878
33879             var s = projection(loc),
33880                 mouse = panning ? [ tCurr[0] - tStart[0], tCurr[1] - tStart[1] ] : [0, 0],
33881                 tMini = [
33882                     cMini[0] - s[0] + tMain[0] + mouse[0],
33883                     cMini[1] - s[1] + tMain[1] + mouse[1]
33884                 ];
33885
33886             projection
33887                 .translate(tMini)
33888                 .clipExtent([[0, 0], dMini]);
33889
33890             zoom
33891                 .center(cMini)
33892                 .translate(tMini)
33893                 .scale(kMini);
33894
33895             tLast = tCurr = tMini;
33896             kLast = kCurr = kMini;
33897
33898             if (transformed) {
33899                 iD.util.setTransform(tiles, 0, 0);
33900                 iD.util.setTransform(svg, 0, 0);
33901                 transformed = false;
33902             }
33903         }
33904
33905
33906         function redraw() {
33907             if (hidden()) return;
33908
33909             updateProjection();
33910
33911             var dMini = selection.dimensions(),
33912                 zMini = ktoz(projection.scale() * 2 * Math.PI);
33913
33914             // setup tile container
33915             tiles = selection
33916                 .selectAll('.map-in-map-tiles')
33917                 .data([0]);
33918
33919             tiles
33920                 .enter()
33921                 .append('div')
33922                 .attr('class', 'map-in-map-tiles');
33923
33924
33925             // redraw background
33926             backgroundLayer
33927                 .source(context.background().baseLayerSource())
33928                 .projection(projection)
33929                 .dimensions(dMini);
33930
33931             var background = tiles
33932                 .selectAll('.map-in-map-background')
33933                 .data([0]);
33934
33935             background.enter()
33936                 .append('div')
33937                 .attr('class', 'map-in-map-background');
33938
33939             background
33940                 .call(backgroundLayer);
33941
33942             // redraw overlay
33943             var overlaySources = context.background().overlayLayerSources(),
33944                 hasOverlay = false;
33945
33946             for (var i = 0; i < overlaySources.length; i++) {
33947                 if (overlaySources[i].validZoom(zMini)) {
33948                     overlayLayer
33949                         .source(overlaySources[i])
33950                         .projection(projection)
33951                         .dimensions(dMini);
33952
33953                     hasOverlay = true;
33954                     break;
33955                 }
33956             }
33957
33958             var overlay = tiles
33959                 .selectAll('.map-in-map-overlay')
33960                 .data(hasOverlay ? [0] : []);
33961
33962             overlay.enter()
33963                 .append('div')
33964                 .attr('class', 'map-in-map-overlay');
33965
33966             overlay.exit()
33967                 .remove();
33968
33969             if (hasOverlay) {
33970                 overlay
33971                     .call(overlayLayer);
33972             }
33973
33974             // redraw bounding box
33975             if (!panning) {
33976                 var getPath = d3.geo.path().projection(projection),
33977                     bbox = { type: 'Polygon', coordinates: [context.map().extent().polygon()] };
33978
33979                 svg = selection.selectAll('.map-in-map-svg')
33980                     .data([0]);
33981
33982                 svg.enter()
33983                     .append('svg')
33984                     .attr('class', 'map-in-map-svg');
33985
33986                 var path = svg.selectAll('.map-in-map-bbox')
33987                     .data([bbox]);
33988
33989                 path.enter()
33990                     .append('path')
33991                     .attr('class', 'map-in-map-bbox');
33992
33993                 path
33994                     .attr('d', getPath)
33995                     .classed('thick', function(d) { return getPath.area(d) < 30; });
33996             }
33997         }
33998
33999
34000         function queueRedraw() {
34001             clearTimeout(timeoutId);
34002             timeoutId = setTimeout(function() { redraw(); }, 300);
34003         }
34004
34005
34006         function hidden() {
34007             return selection.style('display') === 'none';
34008         }
34009
34010
34011         function toggle() {
34012             if (d3.event) d3.event.preventDefault();
34013
34014             if (hidden()) {
34015                 selection
34016                     .style('display', 'block')
34017                     .style('opacity', 0)
34018                     .transition()
34019                     .duration(200)
34020                     .style('opacity', 1);
34021
34022                 redraw();
34023
34024             } else {
34025                 selection
34026                     .style('display', 'block')
34027                     .style('opacity', 1)
34028                     .transition()
34029                     .duration(200)
34030                     .style('opacity', 0)
34031                     .each('end', function() {
34032                         d3.select(this).style('display', 'none');
34033                     });
34034             }
34035         }
34036
34037
34038         selection
34039             .on('mousedown.map-in-map', startMouse)
34040             .on('mouseup.map-in-map', endMouse);
34041
34042         selection
34043             .call(zoom)
34044             .on('dblclick.zoom', null);
34045
34046         context.map()
34047             .on('drawn.map-in-map', function(drawn) {
34048                 if (drawn.full === true) redraw();
34049             });
34050
34051         redraw();
34052
34053         var keybinding = d3.keybinding('map-in-map')
34054             .on(key, toggle);
34055
34056         d3.select(document)
34057             .call(keybinding);
34058     }
34059
34060     return map_in_map;
34061 };
34062 iD.ui.modal = function(selection, blocking) {
34063
34064     var previous = selection.select('div.modal');
34065     var animate = previous.empty();
34066
34067     previous.transition()
34068         .duration(200)
34069         .style('opacity', 0)
34070         .remove();
34071
34072     var shaded = selection
34073         .append('div')
34074         .attr('class', 'shaded')
34075         .style('opacity', 0);
34076
34077     shaded.close = function() {
34078         shaded
34079             .transition()
34080             .duration(200)
34081             .style('opacity',0)
34082             .remove();
34083         modal
34084             .transition()
34085             .duration(200)
34086             .style('top','0px');
34087         keybinding.off();
34088     };
34089
34090     var keybinding = d3.keybinding('modal')
34091         .on('⌫', shaded.close)
34092         .on('⎋', shaded.close);
34093
34094     d3.select(document).call(keybinding);
34095
34096     var modal = shaded.append('div')
34097         .attr('class', 'modal fillL col6');
34098
34099         shaded.on('click.remove-modal', function() {
34100             if (d3.event.target === this && !blocking) shaded.close();
34101         });
34102
34103     modal.append('button')
34104         .attr('class', 'close')
34105         .on('click', function() {
34106             if (!blocking) shaded.close();
34107         })
34108         .append('div')
34109             .attr('class','icon close');
34110
34111     modal.append('div')
34112         .attr('class', 'content');
34113
34114     if (animate) {
34115         shaded.transition().style('opacity', 1);
34116     } else {
34117         shaded.style('opacity', 1);
34118     }
34119
34120     return shaded;
34121 };
34122 iD.ui.Modes = function(context) {
34123     var modes = [
34124         iD.modes.AddPoint(context),
34125         iD.modes.AddLine(context),
34126         iD.modes.AddArea(context)];
34127
34128     function editable() {
34129         return context.editable() && context.mode().id !== 'save';
34130     }
34131
34132     return function(selection) {
34133         var buttons = selection.selectAll('button.add-button')
34134             .data(modes);
34135
34136        buttons.enter().append('button')
34137            .attr('tabindex', -1)
34138            .attr('class', function(mode) { return mode.id + ' add-button col4'; })
34139            .on('click.mode-buttons', function(mode) {
34140                if (mode.id === context.mode().id) {
34141                    context.enter(iD.modes.Browse(context));
34142                } else {
34143                    context.enter(mode);
34144                }
34145            })
34146            .call(bootstrap.tooltip()
34147                .placement('bottom')
34148                .html(true)
34149                .title(function(mode) {
34150                    return iD.ui.tooltipHtml(mode.description, mode.key);
34151                }));
34152
34153         context.map()
34154             .on('move.modes', _.debounce(update, 500));
34155
34156         context
34157             .on('enter.modes', update);
34158
34159         buttons.append('span')
34160             .attr('class', function(mode) { return mode.id + ' icon icon-pre-text'; });
34161
34162         buttons.append('span')
34163             .attr('class', 'label')
34164             .text(function(mode) { return mode.title; });
34165
34166         context.on('enter.editor', function(entered) {
34167             buttons.classed('active', function(mode) { return entered.button === mode.button; });
34168             context.container()
34169                 .classed('mode-' + entered.id, true);
34170         });
34171
34172         context.on('exit.editor', function(exited) {
34173             context.container()
34174                 .classed('mode-' + exited.id, false);
34175         });
34176
34177         var keybinding = d3.keybinding('mode-buttons');
34178
34179         modes.forEach(function(m) {
34180             keybinding.on(m.key, function() { if (editable()) context.enter(m); });
34181         });
34182
34183         d3.select(document)
34184             .call(keybinding);
34185
34186         function update() {
34187             buttons.property('disabled', !editable());
34188         }
34189     };
34190 };
34191 iD.ui.Notice = function(context) {
34192     return function(selection) {
34193         var div = selection.append('div')
34194             .attr('class', 'notice');
34195
34196         var button = div.append('button')
34197             .attr('class', 'zoom-to notice')
34198             .on('click', function() { context.map().zoom(context.minEditableZoom()); });
34199
34200         button.append('span')
34201             .attr('class', 'icon zoom-in-invert');
34202
34203         button.append('span')
34204             .attr('class', 'label')
34205             .text(t('zoom_in_edit'));
34206
34207         function disableTooHigh() {
34208             div.style('display', context.editable() ? 'none' : 'block');
34209         }
34210
34211         context.map()
34212             .on('move.notice', _.debounce(disableTooHigh, 500));
34213
34214         disableTooHigh();
34215     };
34216 };
34217 iD.ui.preset = function(context) {
34218     var event = d3.dispatch('change'),
34219         state,
34220         fields,
34221         preset,
34222         tags,
34223         id;
34224
34225     function UIField(field, entity, show) {
34226         field = _.clone(field);
34227
34228         field.input = iD.ui.preset[field.type](field, context)
34229             .on('change', event.change);
34230
34231         if (field.input.entity) field.input.entity(entity);
34232
34233         field.keys = field.keys || [field.key];
34234
34235         field.show = show;
34236
34237         field.shown = function() {
34238             return field.id === 'name' || field.show || _.any(field.keys, function(key) { return !!tags[key]; });
34239         };
34240
34241         field.modified = function() {
34242             var original = context.graph().base().entities[entity.id];
34243             return _.any(field.keys, function(key) {
34244                 return original ? tags[key] !== original.tags[key] : tags[key];
34245             });
34246         };
34247
34248         field.revert = function() {
34249             var original = context.graph().base().entities[entity.id],
34250                 t = {};
34251             field.keys.forEach(function(key) {
34252                 t[key] = original ? original.tags[key] : undefined;
34253             });
34254             return t;
34255         };
34256
34257         field.present = function() {
34258             return _.any(field.keys, function(key) {
34259                 return tags[key];
34260             });
34261         };
34262
34263         field.remove = function() {
34264             var t = {};
34265             field.keys.forEach(function(key) {
34266                 t[key] = undefined;
34267             });
34268             return t;
34269         };
34270
34271         return field;
34272     }
34273
34274     function fieldKey(field) {
34275         return field.id;
34276     }
34277
34278     function presets(selection) {
34279         if (!fields) {
34280             var entity = context.entity(id),
34281                 geometry = context.geometry(id);
34282
34283             fields = [UIField(context.presets().field('name'), entity)];
34284
34285             preset.fields.forEach(function(field) {
34286                 if (field.matchGeometry(geometry)) {
34287                     fields.push(UIField(field, entity, true));
34288                 }
34289             });
34290
34291             if (entity.isHighwayIntersection(context.graph())) {
34292                 fields.push(UIField(context.presets().field('restrictions'), entity, true));
34293             }
34294
34295             context.presets().universal().forEach(function(field) {
34296                 if (preset.fields.indexOf(field) < 0) {
34297                     fields.push(UIField(field, entity));
34298                 }
34299             });
34300         }
34301
34302         var shown = fields.filter(function(field) { return field.shown(); }),
34303             notShown = fields.filter(function(field) { return !field.shown(); });
34304
34305         var $form = selection.selectAll('.preset-form')
34306             .data([0]);
34307
34308         $form.enter().append('div')
34309             .attr('class', 'preset-form inspector-inner fillL3');
34310
34311         var $fields = $form.selectAll('.form-field')
34312             .data(shown, fieldKey);
34313
34314         // Enter
34315
34316         var $enter = $fields.enter()
34317             .append('div')
34318             .attr('class', function(field) {
34319                 return 'form-field form-field-' + field.id;
34320             });
34321
34322         var $label = $enter.append('label')
34323             .attr('class', 'form-label')
34324             .attr('for', function(field) { return 'preset-input-' + field.id; })
34325             .text(function(field) { return field.label(); });
34326
34327         var wrap = $label.append('div')
34328             .attr('class', 'form-label-button-wrap');
34329
34330         wrap.append('button')
34331             .attr('class', 'remove-icon')
34332             .append('span').attr('class', 'icon delete');
34333
34334         wrap.append('button')
34335             .attr('class', 'modified-icon')
34336             .attr('tabindex', -1)
34337             .append('div')
34338             .attr('class', 'icon undo');
34339
34340         // Update
34341
34342         $fields.select('.form-label-button-wrap .remove-icon')
34343             .on('click', remove);
34344
34345         $fields.select('.modified-icon')
34346             .on('click', revert);
34347
34348         $fields
34349             .order()
34350             .classed('modified', function(field) {
34351                 return field.modified();
34352             })
34353             .classed('present', function(field) {
34354                 return field.present();
34355             })
34356             .each(function(field) {
34357                 var reference = iD.ui.TagReference(field.reference || {key: field.key}, context);
34358
34359                 if (state === 'hover') {
34360                     reference.showing(false);
34361                 }
34362
34363                 d3.select(this)
34364                     .call(field.input)
34365                     .call(reference.body)
34366                     .select('.form-label-button-wrap')
34367                     .call(reference.button);
34368
34369                 field.input.tags(tags);
34370             });
34371
34372         $fields.exit()
34373             .remove();
34374
34375         notShown = notShown.map(function(field) {
34376             return {
34377                 title: field.label(),
34378                 value: field.label(),
34379                 field: field
34380             };
34381         });
34382
34383         var $more = selection.selectAll('.more-fields')
34384             .data((notShown.length > 0) ? [0] : []);
34385
34386         $more.enter().append('div')
34387             .attr('class', 'more-fields')
34388             .append('label')
34389                 .text(t('inspector.add_fields'));
34390
34391         var $input = $more.selectAll('.value')
34392             .data([0]);
34393
34394         $input.enter().append('input')
34395             .attr('class', 'value')
34396             .attr('type', 'text');
34397
34398         $input.value('')
34399             .attr('placeholder', function() {
34400                 var placeholder = [];
34401                 for (var field in notShown) {
34402                     placeholder.push(notShown[field].title);
34403                 }
34404                 return placeholder.slice(0,3).join(', ') + ((placeholder.length > 3) ? '…' : '');
34405             })
34406             .call(d3.combobox().data(notShown)
34407                 .minItems(1)
34408                 .on('accept', show));
34409
34410         $more.exit()
34411             .remove();
34412
34413         $input.exit()
34414             .remove();
34415
34416         function show(field) {
34417             field = field.field;
34418             field.show = true;
34419             presets(selection);
34420             field.input.focus();
34421         }
34422
34423         function revert(field) {
34424             d3.event.stopPropagation();
34425             d3.event.preventDefault();
34426             event.change(field.revert());
34427         }
34428
34429         function remove(field) {
34430             d3.event.stopPropagation();
34431             d3.event.preventDefault();
34432             event.change(field.remove());
34433         }
34434     }
34435
34436     presets.preset = function(_) {
34437         if (!arguments.length) return preset;
34438         if (preset && preset.id === _.id) return presets;
34439         preset = _;
34440         fields = null;
34441         return presets;
34442     };
34443
34444     presets.state = function(_) {
34445         if (!arguments.length) return state;
34446         state = _;
34447         return presets;
34448     };
34449
34450     presets.tags = function(_) {
34451         if (!arguments.length) return tags;
34452         tags = _;
34453         // Don't reset fields here.
34454         return presets;
34455     };
34456
34457     presets.entityID = function(_) {
34458         if (!arguments.length) return id;
34459         if (id === _) return presets;
34460         id = _;
34461         fields = null;
34462         return presets;
34463     };
34464
34465     return d3.rebind(presets, event, 'on');
34466 };
34467 iD.ui.PresetIcon = function() {
34468     var preset, geometry;
34469
34470     function presetIcon(selection) {
34471         selection.each(setup);
34472     }
34473
34474     function setup() {
34475         var selection = d3.select(this),
34476             p = preset.apply(this, arguments),
34477             geom = geometry.apply(this, arguments);
34478
34479         var $fill = selection.selectAll('.preset-icon-fill')
34480             .data([0]);
34481
34482         $fill.enter().append('div');
34483
34484         $fill.attr('class', function() {
34485             var s = 'preset-icon-fill preset-icon-fill-' + geom;
34486             for (var i in p.tags) {
34487                 s += ' tag-' + i + ' tag-' + i + '-' + p.tags[i];
34488             }
34489             return s;
34490         });
34491
34492         var $icon = selection.selectAll('.preset-icon')
34493             .data([0]);
34494
34495         $icon.enter().append('div');
34496
34497         $icon.attr('class', function() {
34498             var icon = p.icon || (geom === 'line' ? 'other-line' : 'marker-stroked'),
34499                 klass = 'feature-' + icon + ' preset-icon';
34500
34501             var featureicon = iD.data.featureIcons[icon];
34502             if (featureicon && featureicon[geom]) {
34503                 klass += ' preset-icon-' + geom;
34504             } else if (icon === 'multipolygon') {
34505                 // Special case (geometry === 'area')
34506                 klass += ' preset-icon-relation';
34507             }
34508
34509             return klass;
34510         });
34511     }
34512
34513     presetIcon.preset = function(_) {
34514         if (!arguments.length) return preset;
34515         preset = d3.functor(_);
34516         return presetIcon;
34517     };
34518
34519     presetIcon.geometry = function(_) {
34520         if (!arguments.length) return geometry;
34521         geometry = d3.functor(_);
34522         return presetIcon;
34523     };
34524
34525     return presetIcon;
34526 };
34527 iD.ui.PresetList = function(context) {
34528     var event = d3.dispatch('choose'),
34529         id,
34530         currentPreset,
34531         autofocus = false;
34532
34533     function presetList(selection) {
34534         var geometry = context.geometry(id),
34535             presets = context.presets().matchGeometry(geometry);
34536
34537         selection.html('');
34538
34539         var messagewrap = selection.append('div')
34540             .attr('class', 'header fillL cf');
34541
34542         var message = messagewrap.append('h3')
34543             .text(t('inspector.choose'));
34544
34545         if (context.entity(id).isUsed(context.graph())) {
34546             messagewrap.append('button')
34547                 .attr('class', 'preset-choose')
34548                 .on('click', function() { event.choose(currentPreset); })
34549                 .append('span')
34550                 .attr('class', 'icon forward');
34551         } else {
34552             messagewrap.append('button')
34553                 .attr('class', 'close')
34554                 .on('click', function() {
34555                     context.enter(iD.modes.Browse(context));
34556                 })
34557                 .append('span')
34558                 .attr('class', 'icon close');
34559         }
34560
34561         function keydown() {
34562             // hack to let delete shortcut work when search is autofocused
34563             if (search.property('value').length === 0 &&
34564                 (d3.event.keyCode === d3.keybinding.keyCodes['⌫'] ||
34565                  d3.event.keyCode === d3.keybinding.keyCodes['⌦'])) {
34566                 d3.event.preventDefault();
34567                 d3.event.stopPropagation();
34568                 iD.operations.Delete([id], context)();
34569             } else if (search.property('value').length === 0 &&
34570                 (d3.event.ctrlKey || d3.event.metaKey) &&
34571                 d3.event.keyCode === d3.keybinding.keyCodes.z) {
34572                 d3.event.preventDefault();
34573                 d3.event.stopPropagation();
34574                 context.undo();
34575             } else if (!d3.event.ctrlKey && !d3.event.metaKey) {
34576                 d3.select(this).on('keydown', null);
34577             }
34578         }
34579
34580         function keypress() {
34581             // enter
34582             var value = search.property('value');
34583             if (d3.event.keyCode === 13 && value.length) {
34584                 list.selectAll('.preset-list-item:first-child').datum().choose();
34585             }
34586         }
34587
34588         function inputevent() {
34589             var value = search.property('value');
34590             list.classed('filtered', value.length);
34591             if (value.length) {
34592                 var results = presets.search(value, geometry);
34593                 message.text(t('inspector.results', {
34594                     n: results.collection.length,
34595                     search: value
34596                 }));
34597                 list.call(drawList, results);
34598             } else {
34599                 list.call(drawList, context.presets().defaults(geometry, 36));
34600                 message.text(t('inspector.choose'));
34601             }
34602         }
34603
34604         var searchWrap = selection.append('div')
34605             .attr('class', 'search-header');
34606
34607         var search = searchWrap.append('input')
34608             .attr('class', 'preset-search-input')
34609             .attr('placeholder', t('inspector.search'))
34610             .attr('type', 'search')
34611             .on('keydown', keydown)
34612             .on('keypress', keypress)
34613             .on('input', inputevent);
34614
34615         searchWrap.append('span')
34616             .attr('class', 'icon search');
34617
34618         if (autofocus) {
34619             search.node().focus();
34620         }
34621
34622         var listWrap = selection.append('div')
34623             .attr('class', 'inspector-body');
34624
34625         var list = listWrap.append('div')
34626             .attr('class', 'preset-list fillL cf')
34627             .call(drawList, context.presets().defaults(geometry, 36));
34628     }
34629
34630     function drawList(list, presets) {
34631         var collection = presets.collection.map(function(preset) {
34632             return preset.members ? CategoryItem(preset) : PresetItem(preset);
34633         });
34634
34635         var items = list.selectAll('.preset-list-item')
34636             .data(collection, function(d) { return d.preset.id; });
34637
34638         items.enter().append('div')
34639             .attr('class', function(item) { return 'preset-list-item preset-' + item.preset.id.replace('/', '-'); })
34640             .classed('current', function(item) { return item.preset === currentPreset; })
34641             .each(function(item) {
34642                 d3.select(this).call(item);
34643             })
34644             .style('opacity', 0)
34645             .transition()
34646             .style('opacity', 1);
34647
34648         items.order();
34649
34650         items.exit()
34651             .remove();
34652     }
34653
34654     function CategoryItem(preset) {
34655         var box, sublist, shown = false;
34656
34657         function item(selection) {
34658             var wrap = selection.append('div')
34659                 .attr('class', 'preset-list-button-wrap category col12');
34660
34661             wrap.append('button')
34662                 .attr('class', 'preset-list-button')
34663                 .call(iD.ui.PresetIcon()
34664                     .geometry(context.geometry(id))
34665                     .preset(preset))
34666                 .on('click', item.choose)
34667                 .append('div')
34668                 .attr('class', 'label')
34669                 .text(preset.name());
34670
34671             box = selection.append('div')
34672                 .attr('class', 'subgrid col12')
34673                 .style('max-height', '0px')
34674                 .style('opacity', 0);
34675
34676             box.append('div')
34677                 .attr('class', 'arrow');
34678
34679             sublist = box.append('div')
34680                 .attr('class', 'preset-list fillL3 cf fl');
34681         }
34682
34683         item.choose = function() {
34684             if (shown) {
34685                 shown = false;
34686                 box.transition()
34687                     .duration(200)
34688                     .style('opacity', '0')
34689                     .style('max-height', '0px')
34690                     .style('padding-bottom', '0px');
34691             } else {
34692                 shown = true;
34693                 sublist.call(drawList, preset.members);
34694                 box.transition()
34695                     .duration(200)
34696                     .style('opacity', '1')
34697                     .style('max-height', 200 + preset.members.collection.length * 80 + 'px')
34698                     .style('padding-bottom', '20px');
34699             }
34700         };
34701
34702         item.preset = preset;
34703
34704         return item;
34705     }
34706
34707     function PresetItem(preset) {
34708         function item(selection) {
34709             var wrap = selection.append('div')
34710                 .attr('class', 'preset-list-button-wrap col12');
34711
34712             wrap.append('button')
34713                 .attr('class', 'preset-list-button')
34714                 .call(iD.ui.PresetIcon()
34715                     .geometry(context.geometry(id))
34716                     .preset(preset))
34717                 .on('click', item.choose)
34718                 .append('div')
34719                 .attr('class', 'label')
34720                 .text(preset.name());
34721
34722             wrap.call(item.reference.button);
34723             selection.call(item.reference.body);
34724         }
34725
34726         item.choose = function() {
34727             context.presets().choose(preset);
34728
34729             context.perform(
34730                 iD.actions.ChangePreset(id, currentPreset, preset),
34731                 t('operations.change_tags.annotation'));
34732
34733             event.choose(preset);
34734         };
34735
34736         item.help = function() {
34737             d3.event.stopPropagation();
34738             item.reference.toggle();
34739         };
34740
34741         item.preset = preset;
34742         item.reference = iD.ui.TagReference(preset.reference(context.geometry(id)), context);
34743
34744         return item;
34745     }
34746
34747     presetList.autofocus = function(_) {
34748         if (!arguments.length) return autofocus;
34749         autofocus = _;
34750         return presetList;
34751     };
34752
34753     presetList.entityID = function(_) {
34754         if (!arguments.length) return id;
34755         id = _;
34756         presetList.preset(context.presets().match(context.entity(id), context.graph()));
34757         return presetList;
34758     };
34759
34760     presetList.preset = function(_) {
34761         if (!arguments.length) return currentPreset;
34762         currentPreset = _;
34763         return presetList;
34764     };
34765
34766     return d3.rebind(presetList, event, 'on');
34767 };
34768 iD.ui.RadialMenu = function(context, operations) {
34769     var menu,
34770         center = [0, 0],
34771         tooltip;
34772
34773     var radialMenu = function(selection) {
34774         if (!operations.length)
34775             return;
34776
34777         selection.node().parentNode.focus();
34778
34779         function click(operation) {
34780             d3.event.stopPropagation();
34781             if (operation.disabled())
34782                 return;
34783             operation();
34784             radialMenu.close();
34785         }
34786
34787         menu = selection.append('g')
34788             .attr('class', 'radial-menu')
34789             .attr('transform', 'translate(' + center + ')')
34790             .attr('opacity', 0);
34791
34792         menu.transition()
34793             .attr('opacity', 1);
34794
34795         var r = 50,
34796             a = Math.PI / 4,
34797             a0 = -Math.PI / 4,
34798             a1 = a0 + (operations.length - 1) * a;
34799
34800         menu.append('path')
34801             .attr('class', 'radial-menu-background')
34802             .attr('d', 'M' + r * Math.sin(a0) + ',' +
34803                              r * Math.cos(a0) +
34804                       ' A' + r + ',' + r + ' 0 ' + (operations.length > 5 ? '1' : '0') + ',0 ' +
34805                              (r * Math.sin(a1) + 1e-3) + ',' +
34806                              (r * Math.cos(a1) + 1e-3)) // Force positive-length path (#1305)
34807             .attr('stroke-width', 50)
34808             .attr('stroke-linecap', 'round');
34809
34810         var button = menu.selectAll()
34811             .data(operations)
34812             .enter().append('g')
34813             .attr('transform', function(d, i) {
34814                 return 'translate(' + r * Math.sin(a0 + i * a) + ',' +
34815                                       r * Math.cos(a0 + i * a) + ')';
34816             });
34817
34818         button.append('circle')
34819             .attr('class', function(d) { return 'radial-menu-item radial-menu-item-' + d.id; })
34820             .attr('r', 15)
34821             .classed('disabled', function(d) { return d.disabled(); })
34822             .on('click', click)
34823             .on('mousedown', mousedown)
34824             .on('mouseover', mouseover)
34825             .on('mouseout', mouseout);
34826
34827         button.append('use')
34828             .attr('transform', 'translate(-10, -10)')
34829             .attr('clip-path', 'url(#clip-square-20)')
34830             .attr('xlink:href', function(d) { return '#icon-operation-' + (d.disabled() ? 'disabled-' : '') + d.id; });
34831
34832         tooltip = d3.select(document.body)
34833             .append('div')
34834             .attr('class', 'tooltip-inner radial-menu-tooltip');
34835
34836         function mousedown() {
34837             d3.event.stopPropagation(); // https://github.com/openstreetmap/iD/issues/1869
34838         }
34839
34840         function mouseover(d, i) {
34841             var rect = context.surfaceRect(),
34842                 angle = a0 + i * a,
34843                 top = rect.top + (r + 25) * Math.cos(angle) + center[1] + 'px',
34844                 left = rect.left + (r + 25) * Math.sin(angle) + center[0] + 'px',
34845                 bottom = rect.height - (r + 25) * Math.cos(angle) - center[1] + 'px',
34846                 right = rect.width - (r + 25) * Math.sin(angle) - center[0] + 'px';
34847
34848             tooltip
34849                 .style('top', null)
34850                 .style('left', null)
34851                 .style('bottom', null)
34852                 .style('right', null)
34853                 .style('display', 'block')
34854                 .html(iD.ui.tooltipHtml(d.tooltip(), d.keys[0]));
34855
34856             if (i === 0) {
34857                 tooltip
34858                     .style('right', right)
34859                     .style('top', top);
34860             } else if (i >= 4) {
34861                 tooltip
34862                     .style('left', left)
34863                     .style('bottom', bottom);
34864             } else {
34865                 tooltip
34866                     .style('left', left)
34867                     .style('top', top);
34868             }
34869         }
34870
34871         function mouseout() {
34872             tooltip.style('display', 'none');
34873         }
34874     };
34875
34876     radialMenu.close = function() {
34877         if (menu) {
34878             menu
34879                 .style('pointer-events', 'none')
34880                 .transition()
34881                 .attr('opacity', 0)
34882                 .remove();
34883         }
34884
34885         if (tooltip) {
34886             tooltip.remove();
34887         }
34888     };
34889
34890     radialMenu.center = function(_) {
34891         if (!arguments.length) return center;
34892         center = _;
34893         return radialMenu;
34894     };
34895
34896     return radialMenu;
34897 };
34898 iD.ui.RawMemberEditor = function(context) {
34899     var id;
34900
34901     function selectMember(d) {
34902         d3.event.preventDefault();
34903         context.enter(iD.modes.Select(context, [d.id]));
34904     }
34905
34906     function changeRole(d) {
34907         var role = d3.select(this).property('value');
34908         context.perform(
34909             iD.actions.ChangeMember(d.relation.id, _.extend({}, d.id, {role: role}), d.index),
34910             t('operations.change_role.annotation'));
34911     }
34912
34913     function deleteMember(d) {
34914         context.perform(
34915             iD.actions.DeleteMember(d.relation.id, d.index),
34916             t('operations.delete_member.annotation'));
34917
34918         if (!context.hasEntity(d.relation.id)) {
34919             context.enter(iD.modes.Browse(context));
34920         }
34921     }
34922
34923     function rawMemberEditor(selection) {
34924         var entity = context.entity(id),
34925             memberships = [];
34926
34927         entity.members.forEach(function(member, index) {
34928             memberships.push({
34929                 index: index,
34930                 id: member.id,
34931                 role: member.role,
34932                 relation: entity,
34933                 member: context.hasEntity(member.id)
34934             });
34935         });
34936
34937         selection.call(iD.ui.Disclosure()
34938             .title(t('inspector.all_members') + ' (' + memberships.length + ')')
34939             .expanded(true)
34940             .on('toggled', toggled)
34941             .content(content));
34942
34943         function toggled(expanded) {
34944             if (expanded) {
34945                 selection.node().parentNode.scrollTop += 200;
34946             }
34947         }
34948
34949         function content($wrap) {
34950             var $list = $wrap.selectAll('.member-list')
34951                 .data([0]);
34952
34953             $list.enter().append('ul')
34954                 .attr('class', 'member-list');
34955
34956             var $items = $list.selectAll('li')
34957                 .data(memberships, function(d) {
34958                     return iD.Entity.key(d.relation) + ',' + d.index + ',' +
34959                         (d.member ? iD.Entity.key(d.member) : 'incomplete');
34960                 });
34961
34962             var $enter = $items.enter().append('li')
34963                 .attr('class', 'member-row form-field')
34964                 .classed('member-incomplete', function(d) { return !d.member; });
34965
34966             $enter.each(function(d) {
34967                 if (d.member) {
34968                     var $label = d3.select(this).append('label')
34969                         .attr('class', 'form-label')
34970                         .append('a')
34971                         .attr('href', '#')
34972                         .on('click', selectMember);
34973
34974                     $label.append('span')
34975                         .attr('class', 'member-entity-type')
34976                         .text(function(d) { return context.presets().match(d.member, context.graph()).name(); });
34977
34978                     $label.append('span')
34979                         .attr('class', 'member-entity-name')
34980                         .text(function(d) { return iD.util.displayName(d.member); });
34981
34982                 } else {
34983                     d3.select(this).append('label')
34984                         .attr('class', 'form-label')
34985                         .text(t('inspector.incomplete'));
34986                 }
34987             });
34988
34989             $enter.append('input')
34990                 .attr('class', 'member-role')
34991                 .property('type', 'text')
34992                 .attr('maxlength', 255)
34993                 .attr('placeholder', t('inspector.role'))
34994                 .property('value', function(d) { return d.role; })
34995                 .on('change', changeRole);
34996
34997             $enter.append('button')
34998                 .attr('tabindex', -1)
34999                 .attr('class', 'remove button-input-action member-delete minor')
35000                 .on('click', deleteMember)
35001                 .append('span')
35002                 .attr('class', 'icon delete');
35003
35004             $items.exit()
35005                 .remove();
35006         }
35007     }
35008
35009     rawMemberEditor.entityID = function(_) {
35010         if (!arguments.length) return id;
35011         id = _;
35012         return rawMemberEditor;
35013     };
35014
35015     return rawMemberEditor;
35016 };
35017 iD.ui.RawMembershipEditor = function(context) {
35018     var id, showBlank;
35019
35020     function selectRelation(d) {
35021         d3.event.preventDefault();
35022         context.enter(iD.modes.Select(context, [d.relation.id]));
35023     }
35024
35025     function changeRole(d) {
35026         var role = d3.select(this).property('value');
35027         context.perform(
35028             iD.actions.ChangeMember(d.relation.id, _.extend({}, d.member, {role: role}), d.index),
35029             t('operations.change_role.annotation'));
35030     }
35031
35032     function addMembership(d, role) {
35033         showBlank = false;
35034
35035         if (d.relation) {
35036             context.perform(
35037                 iD.actions.AddMember(d.relation.id, {id: id, type: context.entity(id).type, role: role}),
35038                 t('operations.add_member.annotation'));
35039
35040         } else {
35041             var relation = iD.Relation();
35042
35043             context.perform(
35044                 iD.actions.AddEntity(relation),
35045                 iD.actions.AddMember(relation.id, {id: id, type: context.entity(id).type, role: role}),
35046                 t('operations.add.annotation.relation'));
35047
35048             context.enter(iD.modes.Select(context, [relation.id]));
35049         }
35050     }
35051
35052     function deleteMembership(d) {
35053         context.perform(
35054             iD.actions.DeleteMember(d.relation.id, d.index),
35055             t('operations.delete_member.annotation'));
35056     }
35057
35058     function relations(q) {
35059         var newRelation = {
35060                 relation: null,
35061                 value: t('inspector.new_relation')
35062             },
35063             result = [],
35064             graph = context.graph();
35065
35066         context.intersects(context.extent()).forEach(function(entity) {
35067             if (entity.type !== 'relation' || entity.id === id)
35068                 return;
35069
35070             var presetName = context.presets().match(entity, graph).name(),
35071                 entityName = iD.util.displayName(entity) || '';
35072
35073             var value = presetName + ' ' + entityName;
35074             if (q && value.toLowerCase().indexOf(q.toLowerCase()) === -1)
35075                 return;
35076
35077             result.push({
35078                 relation: entity,
35079                 value: value
35080             });
35081         });
35082
35083         result.sort(function(a, b) {
35084             return iD.Relation.creationOrder(a.relation, b.relation);
35085         });
35086         result.unshift(newRelation);
35087
35088         return result;
35089     }
35090
35091     function rawMembershipEditor(selection) {
35092         var entity = context.entity(id),
35093             memberships = [];
35094
35095         context.graph().parentRelations(entity).forEach(function(relation) {
35096             relation.members.forEach(function(member, index) {
35097                 if (member.id === entity.id) {
35098                     memberships.push({relation: relation, member: member, index: index});
35099                 }
35100             });
35101         });
35102
35103         selection.call(iD.ui.Disclosure()
35104             .title(t('inspector.all_relations') + ' (' + memberships.length + ')')
35105             .expanded(true)
35106             .on('toggled', toggled)
35107             .content(content));
35108
35109         function toggled(expanded) {
35110             if (expanded) {
35111                 selection.node().parentNode.scrollTop += 200;
35112             }
35113         }
35114
35115         function content($wrap) {
35116             var $list = $wrap.selectAll('.member-list')
35117                 .data([0]);
35118
35119             $list.enter().append('ul')
35120                 .attr('class', 'member-list');
35121
35122             var $items = $list.selectAll('li.member-row-normal')
35123                 .data(memberships, function(d) { return iD.Entity.key(d.relation) + ',' + d.index; });
35124
35125             var $enter = $items.enter().append('li')
35126                 .attr('class', 'member-row member-row-normal form-field');
35127
35128             var $label = $enter.append('label')
35129                 .attr('class', 'form-label')
35130                 .append('a')
35131                 .attr('href', '#')
35132                 .on('click', selectRelation);
35133
35134             $label.append('span')
35135                 .attr('class', 'member-entity-type')
35136                 .text(function(d) { return context.presets().match(d.relation, context.graph()).name(); });
35137
35138             $label.append('span')
35139                 .attr('class', 'member-entity-name')
35140                 .text(function(d) { return iD.util.displayName(d.relation); });
35141
35142             $enter.append('input')
35143                 .attr('class', 'member-role')
35144                 .property('type', 'text')
35145                 .attr('maxlength', 255)
35146                 .attr('placeholder', t('inspector.role'))
35147                 .property('value', function(d) { return d.member.role; })
35148                 .on('change', changeRole);
35149
35150             $enter.append('button')
35151                 .attr('tabindex', -1)
35152                 .attr('class', 'remove button-input-action member-delete minor')
35153                 .on('click', deleteMembership)
35154                 .append('span')
35155                 .attr('class', 'icon delete');
35156
35157             $items.exit()
35158                 .remove();
35159
35160             if (showBlank) {
35161                 var $new = $list.selectAll('.member-row-new')
35162                     .data([0]);
35163
35164                 $enter = $new.enter().append('li')
35165                     .attr('class', 'member-row member-row-new form-field');
35166
35167                 $enter.append('input')
35168                     .attr('type', 'text')
35169                     .attr('class', 'member-entity-input')
35170                     .call(d3.combobox()
35171                         .minItems(1)
35172                         .fetcher(function(value, callback) {
35173                             callback(relations(value));
35174                         })
35175                         .on('accept', function(d) {
35176                             addMembership(d, $new.select('.member-role').property('value'));
35177                         }));
35178
35179                 $enter.append('input')
35180                     .attr('class', 'member-role')
35181                     .property('type', 'text')
35182                     .attr('maxlength', 255)
35183                     .attr('placeholder', t('inspector.role'))
35184                     .on('change', changeRole);
35185
35186                 $enter.append('button')
35187                     .attr('tabindex', -1)
35188                     .attr('class', 'remove button-input-action member-delete minor')
35189                     .on('click', deleteMembership)
35190                     .append('span')
35191                     .attr('class', 'icon delete');
35192
35193             } else {
35194                 $list.selectAll('.member-row-new')
35195                     .remove();
35196             }
35197
35198             var $add = $wrap.selectAll('.add-relation')
35199                 .data([0]);
35200
35201             $add.enter().append('button')
35202                 .attr('class', 'add-relation')
35203                 .append('span')
35204                 .attr('class', 'icon plus light');
35205
35206             $wrap.selectAll('.add-relation')
35207                 .on('click', function() {
35208                     showBlank = true;
35209                     content($wrap);
35210                     $list.selectAll('.member-entity-input').node().focus();
35211                 });
35212         }
35213     }
35214
35215     rawMembershipEditor.entityID = function(_) {
35216         if (!arguments.length) return id;
35217         id = _;
35218         return rawMembershipEditor;
35219     };
35220
35221     return rawMembershipEditor;
35222 };
35223 iD.ui.RawTagEditor = function(context) {
35224     var event = d3.dispatch('change'),
35225         showBlank = false,
35226         state,
35227         preset,
35228         tags,
35229         id;
35230
35231     function rawTagEditor(selection) {
35232         var count = Object.keys(tags).filter(function(d) { return d; }).length;
35233
35234         selection.call(iD.ui.Disclosure()
35235             .title(t('inspector.all_tags') + ' (' + count + ')')
35236             .expanded(context.storage('raw_tag_editor.expanded') === 'true' || preset.isFallback())
35237             .on('toggled', toggled)
35238             .content(content));
35239
35240         function toggled(expanded) {
35241             context.storage('raw_tag_editor.expanded', expanded);
35242             if (expanded) {
35243                 selection.node().parentNode.scrollTop += 200;
35244             }
35245         }
35246     }
35247
35248     function content($wrap) {
35249         var entries = d3.entries(tags);
35250
35251         if (!entries.length || showBlank) {
35252             showBlank = false;
35253             entries.push({key: '', value: ''});
35254         }
35255
35256         var $list = $wrap.selectAll('.tag-list')
35257             .data([0]);
35258
35259         $list.enter().append('ul')
35260             .attr('class', 'tag-list');
35261
35262         var $newTag = $wrap.selectAll('.add-tag')
35263             .data([0]);
35264
35265         var $enter = $newTag.enter().append('button')
35266             .attr('class', 'add-tag');
35267
35268         $enter.append('span')
35269             .attr('class', 'icon plus light');
35270
35271         $newTag.on('click', addTag);
35272
35273         var $items = $list.selectAll('li')
35274             .data(entries, function(d) { return d.key; });
35275
35276         // Enter
35277
35278         $enter = $items.enter().append('li')
35279             .attr('class', 'tag-row cf');
35280
35281         $enter.append('div')
35282             .attr('class', 'key-wrap')
35283             .append('input')
35284             .property('type', 'text')
35285             .attr('class', 'key')
35286             .attr('maxlength', 255);
35287
35288         $enter.append('div')
35289             .attr('class', 'input-wrap-position')
35290             .append('input')
35291             .property('type', 'text')
35292             .attr('class', 'value')
35293             .attr('maxlength', 255);
35294
35295         $enter.append('button')
35296             .attr('tabindex', -1)
35297             .attr('class', 'remove minor')
35298             .append('span')
35299             .attr('class', 'icon delete');
35300
35301         if (context.taginfo()) {
35302             $enter.each(bindTypeahead);
35303         }
35304
35305         // Update
35306
35307         $items.order();
35308
35309         $items.each(function(tag) {
35310             var reference = iD.ui.TagReference({key: tag.key}, context);
35311
35312             if (state === 'hover') {
35313                 reference.showing(false);
35314             }
35315
35316             d3.select(this)
35317                 .call(reference.button)
35318                 .call(reference.body);
35319         });
35320
35321         $items.select('input.key')
35322             .value(function(d) { return d.key; })
35323             .on('blur', keyChange)
35324             .on('change', keyChange);
35325
35326         $items.select('input.value')
35327             .value(function(d) { return d.value; })
35328             .on('blur', valueChange)
35329             .on('change', valueChange)
35330             .on('keydown.push-more', pushMore);
35331
35332         $items.select('button.remove')
35333             .on('click', removeTag);
35334
35335         $items.exit()
35336             .remove();
35337
35338         function pushMore() {
35339             if (d3.event.keyCode === 9 && !d3.event.shiftKey &&
35340                 $list.selectAll('li:last-child input.value').node() === this) {
35341                 addTag();
35342             }
35343         }
35344
35345         function bindTypeahead() {
35346             var row = d3.select(this),
35347                 key = row.selectAll('input.key'),
35348                 value = row.selectAll('input.value');
35349
35350             function sort(value, data) {
35351                 var sameletter = [],
35352                     other = [];
35353                 for (var i = 0; i < data.length; i++) {
35354                     if (data[i].value.substring(0, value.length) === value) {
35355                         sameletter.push(data[i]);
35356                     } else {
35357                         other.push(data[i]);
35358                     }
35359                 }
35360                 return sameletter.concat(other);
35361             }
35362
35363             key.call(d3.combobox()
35364                 .fetcher(function(value, callback) {
35365                     context.taginfo().keys({
35366                         debounce: true,
35367                         geometry: context.geometry(id),
35368                         query: value
35369                     }, function(err, data) {
35370                         if (!err) callback(sort(value, data));
35371                     });
35372                 }));
35373
35374             value.call(d3.combobox()
35375                 .fetcher(function(value, callback) {
35376                     context.taginfo().values({
35377                         debounce: true,
35378                         key: key.value(),
35379                         geometry: context.geometry(id),
35380                         query: value
35381                     }, function(err, data) {
35382                         if (!err) callback(sort(value, data));
35383                     });
35384                 }));
35385         }
35386
35387         function keyChange(d) {
35388             var kOld = d.key,
35389                 kNew = this.value.trim(),
35390                 tag = {};
35391
35392             if (kNew && kNew !== kOld) {
35393                 var match = kNew.match(/^(.*?)(?:_(\d+))?$/),
35394                     base = match[1],
35395                     suffix = +(match[2] || 1);
35396                 while (tags[kNew]) {  // rename key if already in use
35397                     kNew = base + '_' + suffix++;
35398                 }
35399             }
35400             tag[kOld] = undefined;
35401             tag[kNew] = d.value;
35402             d.key = kNew; // Maintain DOM identity through the subsequent update.
35403             this.value = kNew;
35404             event.change(tag);
35405         }
35406
35407         function valueChange(d) {
35408             var tag = {};
35409             tag[d.key] = this.value;
35410             event.change(tag);
35411         }
35412
35413         function removeTag(d) {
35414             var tag = {};
35415             tag[d.key] = undefined;
35416             event.change(tag);
35417             d3.select(this.parentNode).remove();
35418         }
35419
35420         function addTag() {
35421             // Wrapped in a setTimeout in case it's being called from a blur
35422             // handler. Without the setTimeout, the call to `content` would
35423             // wipe out the pending value change.
35424             setTimeout(function() {
35425                 showBlank = true;
35426                 content($wrap);
35427                 $list.selectAll('li:last-child input.key').node().focus();
35428             }, 0);
35429         }
35430     }
35431
35432     rawTagEditor.state = function(_) {
35433         if (!arguments.length) return state;
35434         state = _;
35435         return rawTagEditor;
35436     };
35437
35438     rawTagEditor.preset = function(_) {
35439         if (!arguments.length) return preset;
35440         preset = _;
35441         return rawTagEditor;
35442     };
35443
35444     rawTagEditor.tags = function(_) {
35445         if (!arguments.length) return tags;
35446         tags = _;
35447         return rawTagEditor;
35448     };
35449
35450     rawTagEditor.entityID = function(_) {
35451         if (!arguments.length) return id;
35452         id = _;
35453         return rawTagEditor;
35454     };
35455
35456     return d3.rebind(rawTagEditor, event, 'on');
35457 };
35458 iD.ui.Restore = function(context) {
35459     return function(selection) {
35460         if (!context.history().lock() || !context.history().restorableChanges())
35461             return;
35462
35463         var modal = iD.ui.modal(selection);
35464
35465         modal.select('.modal')
35466             .attr('class', 'modal fillL col6');
35467
35468         var introModal = modal.select('.content');
35469
35470         introModal.attr('class','cf');
35471
35472         introModal.append('div')
35473             .attr('class', 'modal-section')
35474             .append('h3')
35475             .text(t('restore.heading'));
35476
35477         introModal.append('div')
35478             .attr('class','modal-section')
35479             .append('p')
35480             .text(t('restore.description'));
35481
35482         var buttonWrap = introModal.append('div')
35483             .attr('class', 'modal-actions cf');
35484
35485         var restore = buttonWrap.append('button')
35486             .attr('class', 'restore col6')
35487             .text(t('restore.restore'))
35488             .on('click', function() {
35489                 context.history().restore();
35490                 modal.remove();
35491             });
35492
35493         buttonWrap.append('button')
35494             .attr('class', 'reset col6')
35495             .text(t('restore.reset'))
35496             .on('click', function() {
35497                 context.history().clearSaved();
35498                 modal.remove();
35499             });
35500
35501         restore.node().focus();
35502     };
35503 };
35504 iD.ui.Save = function(context) {
35505     var history = context.history(),
35506         key = iD.ui.cmd('⌘S');
35507
35508     function saving() {
35509         return context.mode().id === 'save';
35510     }
35511
35512     function save() {
35513         d3.event.preventDefault();
35514         if (!saving() && history.hasChanges()) {
35515             context.enter(iD.modes.Save(context));
35516         }
35517     }
35518
35519     return function(selection) {
35520         var tooltip = bootstrap.tooltip()
35521             .placement('bottom')
35522             .html(true)
35523             .title(iD.ui.tooltipHtml(t('save.no_changes'), key));
35524
35525         var button = selection.append('button')
35526             .attr('class', 'save col12 disabled')
35527             .attr('tabindex', -1)
35528             .on('click', save)
35529             .call(tooltip);
35530
35531         button.append('span')
35532             .attr('class', 'label')
35533             .text(t('save.title'));
35534
35535         button.append('span')
35536             .attr('class', 'count')
35537             .text('0');
35538
35539         var keybinding = d3.keybinding('undo-redo')
35540             .on(key, save, true);
35541
35542         d3.select(document)
35543             .call(keybinding);
35544
35545         var numChanges = 0;
35546
35547         context.history().on('change.save', function() {
35548             var _ = history.difference().summary().length;
35549             if (_ === numChanges)
35550                 return;
35551             numChanges = _;
35552
35553             tooltip.title(iD.ui.tooltipHtml(t(numChanges > 0 ?
35554                     'save.help' : 'save.no_changes'), key));
35555
35556             button
35557                 .classed('disabled', numChanges === 0)
35558                 .classed('has-count', numChanges > 0);
35559
35560             button.select('span.count')
35561                 .text(numChanges);
35562         });
35563
35564         context.on('enter.save', function() {
35565             button.property('disabled', saving());
35566             if (saving()) button.call(tooltip.hide);
35567         });
35568     };
35569 };
35570 iD.ui.Scale = function(context) {
35571     var projection = context.projection,
35572         maxLength = 180,
35573         tickHeight = 8;
35574
35575     function scaleDefs(loc1, loc2) {
35576         var lat = (loc2[1] + loc1[1]) / 2,
35577             imperial = (iD.detect().locale.toLowerCase() === 'en-us'),
35578             conversion = (imperial ? 3.28084 : 1),
35579             dist = iD.geo.lonToMeters(loc2[0] - loc1[0], lat) * conversion,
35580             scale = { dist: 0, px: 0, text: '' },
35581             buckets, i, val, dLon;
35582
35583         if (imperial) {
35584             buckets = [5280000, 528000, 52800, 5280, 500, 50, 5, 1];
35585         } else {
35586             buckets = [5000000, 500000, 50000, 5000, 500, 50, 5, 1];
35587         }
35588
35589         // determine a user-friendly endpoint for the scale
35590         for (i = 0; i < buckets.length; i++) {
35591             val = buckets[i];
35592             if (dist >= val) {
35593                 scale.dist = Math.floor(dist / val) * val;
35594                 break;
35595             }
35596         }
35597
35598         dLon = iD.geo.metersToLon(scale.dist / conversion, lat);
35599         scale.px = Math.round(projection([loc1[0] + dLon, loc1[1]])[0]);
35600
35601         if (imperial) {
35602             if (scale.dist >= 5280) {
35603                 scale.dist /= 5280;
35604                 scale.text = String(scale.dist) + ' mi';
35605             } else {
35606                 scale.text = String(scale.dist) + ' ft';
35607             }
35608         } else {
35609             if (scale.dist >= 1000) {
35610                 scale.dist /= 1000;
35611                 scale.text = String(scale.dist) + ' km';
35612             } else {
35613                 scale.text = String(scale.dist) + ' m';
35614             }
35615         }
35616
35617         return scale;
35618     }
35619
35620     function update(selection) {
35621         // choose loc1, loc2 along bottom of viewport (near where the scale will be drawn)
35622         var dims = context.map().dimensions(),
35623             loc1 = projection.invert([0, dims[1]]),
35624             loc2 = projection.invert([maxLength, dims[1]]),
35625             scale = scaleDefs(loc1, loc2);
35626
35627         selection.select('#scalepath')
35628             .attr('d', 'M0.5,0.5v' + tickHeight + 'h' + scale.px + 'v-' + tickHeight);
35629
35630         selection.select('#scaletext')
35631             .attr('x', scale.px + 8)
35632             .attr('y', tickHeight)
35633             .text(scale.text);
35634     }
35635
35636     return function(selection) {
35637         var g = selection.append('svg')
35638             .attr('id', 'scale')
35639             .append('g')
35640             .attr('transform', 'translate(10,11)');
35641
35642         g.append('path').attr('id', 'scalepath');
35643         g.append('text').attr('id', 'scaletext');
35644
35645         update(selection);
35646
35647         context.map().on('move.scale', function() {
35648             update(selection);
35649         });
35650     };
35651 };
35652 iD.ui.SelectionList = function(context, selectedIDs) {
35653
35654     function selectEntity(entity) {
35655         context.enter(iD.modes.Select(context, [entity.id]).suppressMenu(true));
35656     }
35657
35658
35659     function selectionList(selection) {
35660         selection.classed('selection-list-pane', true);
35661
35662         var header = selection.append('div')
35663             .attr('class', 'header fillL cf');
35664
35665         header.append('h3')
35666             .text(t('inspector.multiselect'));
35667
35668         var listWrap = selection.append('div')
35669             .attr('class', 'inspector-body');
35670
35671         var list = listWrap.append('div')
35672             .attr('class', 'feature-list cf');
35673
35674         context.history().on('change.selection-list', drawList);
35675         drawList();
35676
35677         function drawList() {
35678             var entities = selectedIDs
35679                 .map(function(id) { return context.hasEntity(id); })
35680                 .filter(function(entity) { return entity; });
35681
35682             var items = list.selectAll('.feature-list-item')
35683                 .data(entities, iD.Entity.key);
35684
35685             var enter = items.enter().append('button')
35686                 .attr('class', 'feature-list-item')
35687                 .on('click', selectEntity);
35688
35689             // Enter
35690
35691             var label = enter.append('div')
35692                 .attr('class', 'label');
35693
35694             label.append('span')
35695                 .attr('class', 'icon icon-pre-text');
35696
35697             label.append('span')
35698                 .attr('class', 'entity-type');
35699
35700             label.append('span')
35701                 .attr('class', 'entity-name');
35702
35703             // Update
35704
35705             items.selectAll('.icon')
35706                 .attr('class', function(entity) { return context.geometry(entity.id) + ' icon icon-pre-text'; });
35707
35708             items.selectAll('.entity-type')
35709                 .text(function(entity) { return context.presets().match(entity, context.graph()).name(); });
35710
35711             items.selectAll('.entity-name')
35712                 .text(function(entity) { return iD.util.displayName(entity); });
35713
35714             // Exit
35715
35716             items.exit()
35717                 .remove();
35718         }
35719     }
35720
35721     return selectionList;
35722
35723 };
35724 iD.ui.Sidebar = function(context) {
35725     var inspector = iD.ui.Inspector(context),
35726         current;
35727
35728     function sidebar(selection) {
35729         var featureListWrap = selection.append('div')
35730             .attr('class', 'feature-list-pane')
35731             .call(iD.ui.FeatureList(context));
35732
35733         selection.call(iD.ui.Notice(context));
35734
35735         var inspectorWrap = selection.append('div')
35736             .attr('class', 'inspector-hidden inspector-wrap fr');
35737
35738         sidebar.hover = function(id) {
35739             if (!current && id) {
35740                 featureListWrap.classed('inspector-hidden', true);
35741                 inspectorWrap.classed('inspector-hidden', false)
35742                     .classed('inspector-hover', true);
35743
35744                 if (inspector.entityID() !== id || inspector.state() !== 'hover') {
35745                     inspector
35746                         .state('hover')
35747                         .entityID(id);
35748
35749                     inspectorWrap.call(inspector);
35750                 }
35751             } else if (!current) {
35752                 featureListWrap.classed('inspector-hidden', false);
35753                 inspectorWrap.classed('inspector-hidden', true);
35754                 inspector.state('hide');
35755             }
35756         };
35757
35758         sidebar.hover = _.throttle(sidebar.hover, 200);
35759
35760         sidebar.select = function(id, newFeature) {
35761             if (!current && id) {
35762                 featureListWrap.classed('inspector-hidden', true);
35763                 inspectorWrap.classed('inspector-hidden', false)
35764                     .classed('inspector-hover', false);
35765
35766                 if (inspector.entityID() !== id || inspector.state() !== 'select') {
35767                     inspector
35768                         .state('select')
35769                         .entityID(id)
35770                         .newFeature(newFeature);
35771
35772                     inspectorWrap.call(inspector);
35773                 }
35774             } else if (!current) {
35775                 featureListWrap.classed('inspector-hidden', false);
35776                 inspectorWrap.classed('inspector-hidden', true);
35777                 inspector.state('hide');
35778             }
35779         };
35780
35781         sidebar.show = function(component) {
35782             featureListWrap.classed('inspector-hidden', true);
35783             inspectorWrap.classed('inspector-hidden', true);
35784             if (current) current.remove();
35785             current = selection.append('div')
35786                 .attr('class', 'sidebar-component')
35787                 .call(component);
35788         };
35789
35790         sidebar.hide = function() {
35791             featureListWrap.classed('inspector-hidden', false);
35792             inspectorWrap.classed('inspector-hidden', true);
35793             if (current) current.remove();
35794             current = null;
35795         };
35796     }
35797
35798     sidebar.hover = function() {};
35799     sidebar.select = function() {};
35800     sidebar.show = function() {};
35801     sidebar.hide = function() {};
35802
35803     return sidebar;
35804 };
35805 iD.ui.SourceSwitch = function(context) {
35806     var keys;
35807
35808     function click() {
35809         d3.event.preventDefault();
35810
35811         if (context.history().hasChanges() &&
35812             !window.confirm(t('source_switch.lose_changes'))) return;
35813
35814         var live = d3.select(this)
35815             .classed('live');
35816
35817         context.connection()
35818             .switch(live ? keys[1] : keys[0]);
35819
35820         context.enter(iD.modes.Browse(context));
35821         context.flush();
35822
35823         d3.select(this)
35824             .text(live ? t('source_switch.dev') : t('source_switch.live'))
35825             .classed('live', !live);
35826     }
35827
35828     var sourceSwitch = function(selection) {
35829         selection.append('a')
35830             .attr('href', '#')
35831             .text(t('source_switch.live'))
35832             .classed('live', true)
35833             .attr('tabindex', -1)
35834             .on('click', click);
35835     };
35836
35837     sourceSwitch.keys = function(_) {
35838         if (!arguments.length) return keys;
35839         keys = _;
35840         return sourceSwitch;
35841     };
35842
35843     return sourceSwitch;
35844 };
35845 iD.ui.Spinner = function(context) {
35846     var connection = context.connection();
35847
35848     return function(selection) {
35849         var img = selection.append('img')
35850             .attr('src', context.imagePath('loader-black.gif'))
35851             .style('opacity', 0);
35852
35853         connection.on('loading.spinner', function() {
35854             img.transition()
35855                 .style('opacity', 1);
35856         });
35857
35858         connection.on('loaded.spinner', function() {
35859             img.transition()
35860                 .style('opacity', 0);
35861         });
35862     };
35863 };
35864 iD.ui.Splash = function(context) {
35865     return function(selection) {
35866         if (context.storage('sawSplash'))
35867              return;
35868
35869         context.storage('sawSplash', true);
35870
35871         var modal = iD.ui.modal(selection);
35872
35873         modal.select('.modal')
35874             .attr('class', 'modal-splash modal col6');
35875
35876         var introModal = modal.select('.content')
35877             .append('div')
35878             .attr('class', 'fillL');
35879
35880         introModal.append('div')
35881             .attr('class','modal-section cf')
35882             .append('h3').text(t('splash.welcome'));
35883
35884         introModal.append('div')
35885             .attr('class','modal-section')
35886             .append('p')
35887             .html(t('splash.text', {
35888                 version: iD.version,
35889                 website: '<a href="http://ideditor.com/">ideditor.com</a>',
35890                 github: '<a href="https://github.com/openstreetmap/iD">github.com</a>'
35891             }));
35892
35893         var buttons = introModal.append('div').attr('class', 'modal-actions cf');
35894
35895         buttons.append('button')
35896             .attr('class', 'col6 walkthrough')
35897             .text(t('splash.walkthrough'))
35898             .on('click', function() {
35899                 d3.select(document.body).call(iD.ui.intro(context));
35900                 modal.close();
35901             });
35902
35903         buttons.append('button')
35904             .attr('class', 'col6 start')
35905             .text(t('splash.start'))
35906             .on('click', modal.close);
35907
35908         modal.select('button.close').attr('class','hide');
35909
35910     };
35911 };
35912 iD.ui.Status = function(context) {
35913     var connection = context.connection(),
35914         errCount = 0;
35915
35916     return function(selection) {
35917
35918         function update() {
35919
35920             connection.status(function(err, apiStatus) {
35921
35922                 selection.html('');
35923
35924                 if (err && errCount++ < 2) return;
35925
35926                 if (err) {
35927                     selection.text(t('status.error'));
35928
35929                 } else if (apiStatus === 'readonly') {
35930                     selection.text(t('status.readonly'));
35931
35932                 } else if (apiStatus === 'offline') {
35933                     selection.text(t('status.offline'));
35934                 }
35935
35936                 selection.attr('class', 'api-status ' + (err ? 'error' : apiStatus));
35937                 if (!err) errCount = 0;
35938
35939             });
35940         }
35941
35942         connection.on('auth', function() { update(selection); });
35943         window.setInterval(update, 90000);
35944         update(selection);
35945     };
35946 };
35947 iD.ui.Success = function(context) {
35948     var event = d3.dispatch('cancel'),
35949         changeset;
35950
35951     function success(selection) {
35952         var message = (changeset.comment || t('success.edited_osm')).substring(0, 130) +
35953             ' ' + context.connection().changesetURL(changeset.id);
35954
35955         var header = selection.append('div')
35956             .attr('class', 'header fillL');
35957
35958         header.append('button')
35959             .attr('class', 'fr')
35960             .append('span')
35961             .attr('class', 'icon close')
35962             .on('click', function() { event.cancel(success); });
35963
35964         header.append('h3')
35965             .text(t('success.just_edited'));
35966
35967         var body = selection.append('div')
35968             .attr('class', 'body save-success fillL');
35969
35970         body.append('p')
35971             .html(t('success.help_html'));
35972
35973         var changesetURL = context.connection().changesetURL(changeset.id);
35974
35975         body.append('a')
35976             .attr('class', 'button col12 osm')
35977             .attr('target', '_blank')
35978             .attr('href', changesetURL)
35979             .text(t('success.view_on_osm'));
35980
35981         var sharing = {
35982             facebook: 'https://facebook.com/sharer/sharer.php?u=' + encodeURIComponent(changesetURL),
35983             twitter: 'https://twitter.com/intent/tweet?source=webclient&text=' + encodeURIComponent(message),
35984             google: 'https://plus.google.com/share?url=' + encodeURIComponent(changesetURL)
35985         };
35986
35987         body.selectAll('.button.social')
35988             .data(d3.entries(sharing))
35989             .enter().append('a')
35990             .attr('class', function(d) { return 'button social col4 ' + d.key; })
35991             .attr('target', '_blank')
35992             .attr('href', function(d) { return d.value; })
35993             .call(bootstrap.tooltip()
35994                 .title(function(d) { return t('success.' + d.key); })
35995                 .placement('bottom'));
35996     }
35997
35998     success.changeset = function(_) {
35999         if (!arguments.length) return changeset;
36000         changeset = _;
36001         return success;
36002     };
36003
36004     return d3.rebind(success, event, 'on');
36005 };
36006 iD.ui.TagReference = function(tag, context) {
36007     var tagReference = {},
36008         button,
36009         body,
36010         loaded,
36011         showing;
36012
36013     function findLocal(docs) {
36014         var locale = iD.detect().locale.toLowerCase(),
36015             localized;
36016
36017         localized = _.find(docs, function(d) {
36018             return d.lang.toLowerCase() === locale;
36019         });
36020         if (localized) return localized;
36021
36022         // try the non-regional version of a language, like
36023         // 'en' if the language is 'en-US'
36024         if (locale.indexOf('-') !== -1) {
36025             var first = locale.split('-')[0];
36026             localized = _.find(docs, function(d) {
36027                 return d.lang.toLowerCase() === first;
36028             });
36029             if (localized) return localized;
36030         }
36031
36032         // finally fall back to english
36033         return _.find(docs, function(d) {
36034             return d.lang.toLowerCase() === 'en';
36035         });
36036     }
36037
36038     function load() {
36039         button.classed('tag-reference-loading', true);
36040
36041         context.taginfo().docs(tag, function(err, docs) {
36042             if (!err && docs) {
36043                 docs = findLocal(docs);
36044             }
36045
36046             body.html('');
36047
36048             if (!docs || !docs.description) {
36049                 body.append('p').text(t('inspector.no_documentation_key'));
36050                 show();
36051                 return;
36052             }
36053
36054             if (docs.image && docs.image.thumb_url_prefix) {
36055                 body
36056                     .append('img')
36057                     .attr('class', 'wiki-image')
36058                     .attr('src', docs.image.thumb_url_prefix + '100' + docs.image.thumb_url_suffix)
36059                     .on('load', function() { show(); })
36060                     .on('error', function() { d3.select(this).remove(); show(); });
36061             } else {
36062                 show();
36063             }
36064
36065             body
36066                 .append('p')
36067                 .text(docs.description);
36068
36069             var wikiLink = body
36070                 .append('a')
36071                 .attr('target', '_blank')
36072                 .attr('href', 'http://wiki.openstreetmap.org/wiki/' + docs.title);
36073
36074             wikiLink.append('span')
36075                 .attr('class','icon icon-pre-text out-link');
36076
36077             wikiLink.append('span')
36078                 .text(t('inspector.reference'));
36079         });
36080     }
36081
36082     function show() {
36083         loaded = true;
36084
36085         button.classed('tag-reference-loading', false);
36086
36087         body.transition()
36088             .duration(200)
36089             .style('max-height', '200px')
36090             .style('opacity', '1');
36091
36092         showing = true;
36093     }
36094
36095     function hide(selection) {
36096         selection = selection || body.transition().duration(200);
36097
36098         selection
36099             .style('max-height', '0px')
36100             .style('opacity', '0');
36101
36102         showing = false;
36103     }
36104
36105     tagReference.button = function(selection) {
36106         button = selection.selectAll('.tag-reference-button')
36107             .data([0]);
36108
36109         var enter = button.enter().append('button')
36110             .attr('tabindex', -1)
36111             .attr('class', 'tag-reference-button');
36112
36113         enter.append('span')
36114             .attr('class', 'icon inspect');
36115
36116         button.on('click', function () {
36117             d3.event.stopPropagation();
36118             d3.event.preventDefault();
36119             if (showing) {
36120                 hide();
36121             } else if (loaded) {
36122                 show();
36123             } else {
36124                 if (context.taginfo()) {
36125                     load();
36126                 }
36127             }
36128         });
36129     };
36130
36131     tagReference.body = function(selection) {
36132         body = selection.selectAll('.tag-reference-body')
36133             .data([0]);
36134
36135         body.enter().append('div')
36136             .attr('class', 'tag-reference-body cf')
36137             .style('max-height', '0')
36138             .style('opacity', '0');
36139
36140         if (showing === false) {
36141             hide(body);
36142         }
36143     };
36144
36145     tagReference.showing = function(_) {
36146         if (!arguments.length) return showing;
36147         showing = _;
36148         return tagReference;
36149     };
36150
36151     return tagReference;
36152 };// toggles the visibility of ui elements, using a combination of the
36153 // hide class, which sets display=none, and a d3 transition for opacity.
36154 // this will cause blinking when called repeatedly, so check that the
36155 // value actually changes between calls.
36156 iD.ui.Toggle = function(show, callback) {
36157     return function(selection) {
36158         selection
36159             .style('opacity', show ? 0 : 1)
36160             .classed('hide', false)
36161             .transition()
36162             .style('opacity', show ? 1 : 0)
36163             .each('end', function() {
36164                 d3.select(this).classed('hide', !show);
36165                 if (callback) callback.apply(this);
36166             });
36167     };
36168 };
36169 iD.ui.UndoRedo = function(context) {
36170     var commands = [{
36171         id: 'undo',
36172         cmd: iD.ui.cmd('⌘Z'),
36173         action: function() { if (!saving()) context.undo(); },
36174         annotation: function() { return context.history().undoAnnotation(); }
36175     }, {
36176         id: 'redo',
36177         cmd: iD.ui.cmd('⌘⇧Z'),
36178         action: function() { if (!saving()) context.redo(); },
36179         annotation: function() { return context.history().redoAnnotation(); }
36180     }];
36181
36182     function saving() {
36183         return context.mode().id === 'save';
36184     }
36185
36186     return function(selection) {
36187         var tooltip = bootstrap.tooltip()
36188             .placement('bottom')
36189             .html(true)
36190             .title(function (d) {
36191                 return iD.ui.tooltipHtml(d.annotation() ?
36192                     t(d.id + '.tooltip', {action: d.annotation()}) :
36193                     t(d.id + '.nothing'), d.cmd);
36194             });
36195
36196         var buttons = selection.selectAll('button')
36197             .data(commands)
36198             .enter().append('button')
36199             .attr('class', 'col6 disabled')
36200             .on('click', function(d) { return d.action(); })
36201             .call(tooltip);
36202
36203         buttons.append('span')
36204             .attr('class', function(d) { return 'icon ' + d.id; });
36205
36206         var keybinding = d3.keybinding('undo')
36207             .on(commands[0].cmd, function() { d3.event.preventDefault(); commands[0].action(); })
36208             .on(commands[1].cmd, function() { d3.event.preventDefault(); commands[1].action(); });
36209
36210         d3.select(document)
36211             .call(keybinding);
36212
36213         context.history()
36214             .on('change.undo_redo', update);
36215
36216         context
36217             .on('enter.undo_redo', update);
36218
36219         function update() {
36220             buttons
36221                 .property('disabled', saving())
36222                 .classed('disabled', function(d) { return !d.annotation(); })
36223                 .each(function() {
36224                     var selection = d3.select(this);
36225                     if (selection.property('tooltipVisible')) {
36226                         selection.call(tooltip.show);
36227                     }
36228                 });
36229         }
36230     };
36231 };
36232 iD.ui.ViewOnOSM = function(context) {
36233     var id;
36234
36235     function viewOnOSM(selection) {
36236         var entity = context.entity(id);
36237
36238         selection.style('display', entity.isNew() ? 'none' : null);
36239
36240         var $link = selection.selectAll('.view-on-osm')
36241             .data([0]);
36242
36243         var $enter = $link.enter().append('a')
36244             .attr('class', 'view-on-osm')
36245             .attr('target', '_blank');
36246
36247         $enter.append('span')
36248             .attr('class', 'icon icon-pre-text out-link');
36249
36250         $enter.append('span')
36251             .text(t('inspector.view_on_osm'));
36252
36253         $link.attr('href', context.connection().entityURL(entity));
36254     }
36255
36256     viewOnOSM.entityID = function(_) {
36257         if (!arguments.length) return id;
36258         id = _;
36259         return viewOnOSM;
36260     };
36261
36262     return viewOnOSM;
36263 };
36264 iD.ui.Zoom = function(context) {
36265     var zooms = [{
36266         id: 'zoom-in',
36267         title: t('zoom.in'),
36268         action: context.zoomIn,
36269         key: '+'
36270     }, {
36271         id: 'zoom-out',
36272         title: t('zoom.out'),
36273         action: context.zoomOut,
36274         key: '-'
36275     }];
36276
36277     return function(selection) {
36278         var button = selection.selectAll('button')
36279             .data(zooms)
36280             .enter().append('button')
36281             .attr('tabindex', -1)
36282             .attr('class', function(d) { return d.id; })
36283             .on('click.editor', function(d) { d.action(); })
36284             .call(bootstrap.tooltip()
36285                 .placement('left')
36286                 .html(true)
36287                 .title(function(d) {
36288                     return iD.ui.tooltipHtml(d.title, d.key);
36289                 }));
36290
36291         button.append('span')
36292             .attr('class', function(d) { return d.id + ' icon'; });
36293
36294         var keybinding = d3.keybinding('zoom');
36295
36296         _.each(['=','ffequals','plus','ffplus'], function(key) {
36297             keybinding.on(key, function() { context.zoomIn(); });
36298             keybinding.on('⇧' + key, function() { context.zoomIn(); });
36299         });
36300         _.each(['-','ffminus','_','dash'], function(key) {
36301             keybinding.on(key, function() { context.zoomOut(); });
36302             keybinding.on('⇧' + key, function() { context.zoomOut(); });
36303         });
36304
36305         d3.select(document)
36306             .call(keybinding);
36307     };
36308 };
36309 iD.ui.preset.access = function(field) {
36310     var event = d3.dispatch('change'),
36311         items;
36312
36313     function access(selection) {
36314         var wrap = selection.selectAll('.preset-input-wrap')
36315             .data([0]);
36316
36317         wrap.enter().append('div')
36318             .attr('class', 'cf preset-input-wrap')
36319             .append('ul');
36320
36321         items = wrap.select('ul').selectAll('li')
36322             .data(field.keys);
36323
36324         // Enter
36325
36326         var enter = items.enter().append('li')
36327             .attr('class', function(d) { return 'cf preset-access-' + d; });
36328
36329         enter.append('span')
36330             .attr('class', 'col6 label preset-label-access')
36331             .attr('for', function(d) { return 'preset-input-access-' + d; })
36332             .text(function(d) { return field.t('types.' + d); });
36333
36334         enter.append('div')
36335             .attr('class', 'col6 preset-input-access-wrap')
36336             .append('input')
36337             .attr('type', 'text')
36338             .attr('class', 'preset-input-access')
36339             .attr('id', function(d) { return 'preset-input-access-' + d; })
36340             .each(function(d) {
36341                 d3.select(this)
36342                     .call(d3.combobox()
36343                         .data(access.options(d)));
36344             });
36345
36346         // Update
36347
36348         wrap.selectAll('.preset-input-access')
36349             .on('change', change)
36350             .on('blur', change);
36351     }
36352
36353     function change(d) {
36354         var tag = {};
36355         tag[d] = d3.select(this).value() || undefined;
36356         event.change(tag);
36357     }
36358
36359     access.options = function(type) {
36360         var options = ['no', 'permissive', 'private', 'destination'];
36361
36362         if (type !== 'access') {
36363             options.unshift('yes');
36364             options.push('designated');
36365         }
36366
36367         return options.map(function(option) {
36368             return {
36369                 title: field.t('options.' + option + '.description'),
36370                 value: option
36371             };
36372         });
36373     };
36374
36375     var placeholders = {
36376         footway: {
36377             foot: 'designated',
36378             motor_vehicle: 'no'
36379         },
36380         steps: {
36381             foot: 'yes',
36382             motor_vehicle: 'no',
36383             bicycle: 'no',
36384             horse: 'no'
36385         },
36386         pedestrian: {
36387             foot: 'yes',
36388             motor_vehicle: 'no'
36389         },
36390         cycleway: {
36391             motor_vehicle: 'no',
36392             bicycle: 'designated'
36393         },
36394         bridleway: {
36395             motor_vehicle: 'no',
36396             horse: 'designated'
36397         },
36398         path: {
36399             foot: 'yes',
36400             motor_vehicle: 'no',
36401             bicycle: 'yes',
36402             horse: 'yes'
36403         },
36404         motorway: {
36405             foot: 'no',
36406             motor_vehicle: 'yes',
36407             bicycle: 'no',
36408             horse: 'no'
36409         },
36410         trunk: {
36411             motor_vehicle: 'yes'
36412         },
36413         primary: {
36414             foot: 'yes',
36415             motor_vehicle: 'yes',
36416             bicycle: 'yes',
36417             horse: 'yes'
36418         },
36419         secondary: {
36420             foot: 'yes',
36421             motor_vehicle: 'yes',
36422             bicycle: 'yes',
36423             horse: 'yes'
36424         },
36425         tertiary: {
36426             foot: 'yes',
36427             motor_vehicle: 'yes',
36428             bicycle: 'yes',
36429             horse: 'yes'
36430         },
36431         residential: {
36432             foot: 'yes',
36433             motor_vehicle: 'yes',
36434             bicycle: 'yes',
36435             horse: 'yes'
36436         },
36437         unclassified: {
36438             foot: 'yes',
36439             motor_vehicle: 'yes',
36440             bicycle: 'yes',
36441             horse: 'yes'
36442         },
36443         service: {
36444             foot: 'yes',
36445             motor_vehicle: 'yes',
36446             bicycle: 'yes',
36447             horse: 'yes'
36448         },
36449         motorway_link: {
36450             foot: 'no',
36451             motor_vehicle: 'yes',
36452             bicycle: 'no',
36453             horse: 'no'
36454         },
36455         trunk_link: {
36456             motor_vehicle: 'yes'
36457         },
36458         primary_link: {
36459             foot: 'yes',
36460             motor_vehicle: 'yes',
36461             bicycle: 'yes',
36462             horse: 'yes'
36463         },
36464         secondary_link: {
36465             foot: 'yes',
36466             motor_vehicle: 'yes',
36467             bicycle: 'yes',
36468             horse: 'yes'
36469         },
36470         tertiary_link: {
36471             foot: 'yes',
36472             motor_vehicle: 'yes',
36473             bicycle: 'yes',
36474             horse: 'yes'
36475         }
36476     };
36477
36478     access.tags = function(tags) {
36479         items.selectAll('.preset-input-access')
36480             .value(function(d) { return tags[d] || ''; })
36481             .attr('placeholder', function() {
36482                 return tags.access ? tags.access : field.placeholder();
36483             });
36484
36485         items.selectAll('#preset-input-access-access')
36486             .attr('placeholder', 'yes');
36487
36488         _.forEach(placeholders[tags.highway], function(value, key) {
36489             items.selectAll('#preset-input-access-' + key)
36490                 .attr('placeholder', function() {
36491                     return (tags.access && (value === 'yes' || value === 'designated')) ? tags.access : value;
36492                 });
36493         });
36494     };
36495
36496     access.focus = function() {
36497         items.selectAll('.preset-input-access')
36498             .node().focus();
36499     };
36500
36501     return d3.rebind(access, event, 'on');
36502 };
36503 iD.ui.preset.address = function(field, context) {
36504     var event = d3.dispatch('init', 'change'),
36505         wrap,
36506         entity,
36507         isInitialized;
36508
36509     var widths = {
36510         housenumber: 1/3,
36511         street: 2/3,
36512         city: 2/3,
36513         state: 1/4,
36514         postcode: 1/3
36515     };
36516
36517     function getStreets() {
36518         var extent = entity.extent(context.graph()),
36519             l = extent.center(),
36520             box = iD.geo.Extent(l).padByMeters(200);
36521
36522         return context.intersects(box)
36523             .filter(isAddressable)
36524             .map(function(d) {
36525                 var loc = context.projection([
36526                     (extent[0][0] + extent[1][0]) / 2,
36527                     (extent[0][1] + extent[1][1]) / 2]),
36528                     choice = iD.geo.chooseEdge(context.childNodes(d), loc, context.projection);
36529                 return {
36530                     title: d.tags.name,
36531                     value: d.tags.name,
36532                     dist: choice.distance
36533                 };
36534             }).sort(function(a, b) {
36535                 return a.dist - b.dist;
36536             });
36537
36538         function isAddressable(d) {
36539             return d.tags.highway && d.tags.name && d.type === 'way';
36540         }
36541     }
36542
36543     function getCities() {
36544         var extent = entity.extent(context.graph()),
36545             l = extent.center(),
36546             box = iD.geo.Extent(l).padByMeters(200);
36547
36548         return context.intersects(box)
36549             .filter(isAddressable)
36550             .map(function(d) {
36551                 return {
36552                     title: d.tags['addr:city'] || d.tags.name,
36553                     value: d.tags['addr:city'] || d.tags.name,
36554                     dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l)
36555                 };
36556             }).sort(function(a, b) {
36557                 return a.dist - b.dist;
36558             });
36559
36560         function isAddressable(d) {
36561             if (d.tags.name &&
36562                 (d.tags.admin_level === '8' || d.tags.border_type === 'city'))
36563                 return true;
36564
36565             if (d.tags.place && d.tags.name && (
36566                     d.tags.place === 'city' ||
36567                     d.tags.place === 'town' ||
36568                     d.tags.place === 'village'))
36569                 return true;
36570
36571             if (d.tags['addr:city']) return true;
36572
36573             return false;
36574         }
36575     }
36576
36577     function getPostCodes() {
36578         var extent = entity.extent(context.graph()),
36579             l = extent.center(),
36580             box = iD.geo.Extent(l).padByMeters(200);
36581
36582         return context.intersects(box)
36583             .filter(isAddressable)
36584             .map(function(d) {
36585                 return {
36586                     title: d.tags['addr:postcode'],
36587                     value: d.tags['addr:postcode'],
36588                     dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l)
36589                 };
36590             }).sort(function(a, b) {
36591                 return a.dist - b.dist;
36592             });
36593
36594         function isAddressable(d) {
36595             return d.tags['addr:postcode'];
36596         }
36597     }
36598
36599     function address(selection) {
36600         isInitialized = false;
36601         
36602         selection.selectAll('.preset-input-wrap')
36603             .remove();
36604
36605         var center = entity.extent(context.graph()).center(),
36606             addressFormat;
36607
36608         // Enter
36609
36610         wrap = selection.append('div')
36611             .attr('class', 'preset-input-wrap');
36612
36613         iD.countryCode().search(center, function (err, countryCode) {
36614             addressFormat = _.find(iD.data.addressFormats, function (a) {
36615                 return a && a.countryCodes && _.contains(a.countryCodes, countryCode);
36616             }) || _.first(iD.data.addressFormats);
36617
36618             function row(r) {
36619                 // Normalize widths.
36620                 var total = _.reduce(r, function(sum, field) {
36621                     return sum + (widths[field] || 0.5);
36622                 }, 0);
36623
36624                 return r.map(function (field) {
36625                     return {
36626                         id: field,
36627                         width: (widths[field] || 0.5) / total
36628                     };
36629                 });
36630             }
36631
36632             wrap.selectAll('div')
36633                 .data(addressFormat.format)
36634                 .enter()
36635                 .append('div')
36636                 .attr('class', 'addr-row')
36637                 .selectAll('input')
36638                 .data(row)
36639                 .enter()
36640                 .append('input')
36641                 .property('type', 'text')
36642                 .attr('placeholder', function (d) { return field.t('placeholders.' + d.id); })
36643                 .attr('class', function (d) { return 'addr-' + d.id; })
36644                 .style('width', function (d) { return d.width * 100 + '%'; });
36645
36646             // Update
36647
36648             wrap.selectAll('.addr-street')
36649                 .call(d3.combobox()
36650                     .fetcher(function(value, callback) {
36651                         callback(getStreets());
36652                     }));
36653
36654             wrap.selectAll('.addr-city')
36655                 .call(d3.combobox()
36656                     .fetcher(function(value, callback) {
36657                         callback(getCities());
36658                     }));
36659
36660             wrap.selectAll('.addr-postcode')
36661                 .call(d3.combobox()
36662                     .fetcher(function(value, callback) {
36663                         callback(getPostCodes());
36664                     }));
36665
36666             wrap.selectAll('input')
36667                 .on('blur', change)
36668                 .on('change', change);
36669
36670             event.init();
36671             isInitialized = true;
36672         });
36673     }
36674
36675     function change() {
36676         var tags = {};
36677
36678         wrap.selectAll('input')
36679             .each(function (field) {
36680                 tags['addr:' + field.id] = this.value || undefined;
36681             });
36682
36683         event.change(tags);
36684     }
36685
36686     function updateTags(tags) {
36687         wrap.selectAll('input')
36688             .value(function (field) {
36689                 return tags['addr:' + field.id] || '';
36690             });
36691     }
36692
36693     address.entity = function(_) {
36694         if (!arguments.length) return entity;
36695         entity = _;
36696         return address;
36697     };
36698
36699     address.tags = function(tags) {
36700         if (isInitialized) {
36701             updateTags(tags);
36702         } else {
36703             event.on('init', function () {
36704                 updateTags(tags);
36705             });
36706         }
36707     };
36708
36709     address.focus = function() {
36710         var node = wrap.selectAll('input').node();
36711         if (node) node.focus();
36712     };
36713
36714     return d3.rebind(address, event, 'on');
36715 };
36716 iD.ui.preset.check =
36717 iD.ui.preset.defaultcheck = function(field) {
36718     var event = d3.dispatch('change'),
36719         options = field.strings && field.strings.options,
36720         values = [],
36721         texts = [],
36722         entity, value, box, text, label;
36723
36724     if (options) {
36725         for (var k in options) {
36726             values.push(k === 'undefined' ? undefined : k);
36727             texts.push(field.t('options.' + k, { 'default': options[k] }));
36728         }
36729     } else {
36730         values = [undefined, 'yes'];
36731         texts = [t('inspector.unknown'), t('inspector.check.yes')];
36732         if (field.type === 'check') {
36733             values.push('no');
36734             texts.push(t('inspector.check.no'));
36735         }
36736     }
36737
36738     var check = function(selection) {
36739         // hack: pretend oneway field is a oneway_yes field
36740         // where implied oneway tag exists (e.g. `junction=roundabout`) #2220, #1841
36741         if (field.id === 'oneway') {
36742             for (var key in entity.tags) {
36743                 if (key in iD.oneWayTags && (entity.tags[key] in iD.oneWayTags[key])) {
36744                     texts[0] = t('presets.fields.oneway_yes.options.undefined');
36745                     break;
36746                 }
36747             }
36748         }
36749
36750         selection.classed('checkselect', 'true');
36751
36752         label = selection.selectAll('.preset-input-wrap')
36753             .data([0]);
36754
36755         var enter = label.enter().append('label')
36756             .attr('class', 'preset-input-wrap');
36757
36758         enter.append('input')
36759             .property('indeterminate', field.type === 'check')
36760             .attr('type', 'checkbox')
36761             .attr('id', 'preset-input-' + field.id);
36762
36763         enter.append('span')
36764             .text(texts[0])
36765             .attr('class', 'value');
36766
36767         box = label.select('input')
36768             .on('click', function() {
36769                 var t = {};
36770                 t[field.key] = values[(values.indexOf(value) + 1) % values.length];
36771                 event.change(t);
36772                 d3.event.stopPropagation();
36773             });
36774
36775         text = label.select('span.value');
36776     };
36777
36778     check.entity = function(_) {
36779         if (!arguments.length) return entity;
36780         entity = _;
36781         return check;
36782     };
36783
36784     check.tags = function(tags) {
36785         value = tags[field.key];
36786         box.property('indeterminate', field.type === 'check' && !value);
36787         box.property('checked', value === 'yes');
36788         text.text(texts[values.indexOf(value)]);
36789         label.classed('set', !!value);
36790     };
36791
36792     check.focus = function() {
36793         box.node().focus();
36794     };
36795
36796     return d3.rebind(check, event, 'on');
36797 };
36798 iD.ui.preset.combo =
36799 iD.ui.preset.typeCombo = function(field, context) {
36800     var event = d3.dispatch('change'),
36801         optstrings = field.strings && field.strings.options,
36802         optarray = field.options,
36803         strings = {},
36804         input;
36805
36806     function combo(selection) {
36807         var combobox = d3.combobox();
36808
36809         input = selection.selectAll('input')
36810             .data([0]);
36811
36812         var enter = input.enter()
36813             .append('input')
36814             .attr('type', 'text')
36815             .attr('id', 'preset-input-' + field.id);
36816
36817         if (optstrings) { enter.attr('readonly', 'readonly'); }
36818
36819         input
36820             .call(combobox)
36821             .on('change', change)
36822             .on('blur', change)
36823             .each(function() {
36824                 if (optstrings) {
36825                     _.each(optstrings, function(v, k) {
36826                         strings[k] = field.t('options.' + k, { 'default': v });
36827                     });
36828                     stringsLoaded();
36829                 } else if (optarray) {
36830                     _.each(optarray, function(k) {
36831                         strings[k] = k.replace(/_+/g, ' ');
36832                     });
36833                     stringsLoaded();
36834                 } else if (context.taginfo()) {
36835                     context.taginfo().values({key: field.key}, function(err, data) {
36836                         if (!err) {
36837                             _.each(_.pluck(data, 'value'), function(k) {
36838                                 strings[k] = k.replace(/_+/g, ' ');
36839                             });
36840                             stringsLoaded();
36841                         }
36842                     });
36843                 }
36844             });
36845
36846         function stringsLoaded() {
36847             var keys = _.keys(strings),
36848                 strs = [],
36849                 placeholders;
36850
36851             combobox.data(keys.map(function(k) {
36852                 var s = strings[k],
36853                     o = {};
36854                 o.title = o.value = s;
36855                 if (s.length < 20) { strs.push(s); }
36856                 return o;
36857             }));
36858
36859             placeholders = strs.length > 1 ? strs : keys;
36860             input.attr('placeholder', field.placeholder() ||
36861                 (placeholders.slice(0, 3).join(', ') + '...'));
36862         }
36863     }
36864
36865     function change() {
36866         var optstring = _.find(_.keys(strings), function(k) { return strings[k] === input.value(); }),
36867             value = optstring || (input.value()
36868                 .split(';')
36869                 .map(function(s) { return s.trim(); })
36870                 .join(';')
36871                 .replace(/\s+/g, '_'));
36872
36873         if (field.type === 'typeCombo' && !value) value = 'yes';
36874
36875         var t = {};
36876         t[field.key] = value || undefined;
36877         event.change(t);
36878     }
36879
36880     combo.tags = function(tags) {
36881         var key = tags[field.key],
36882             value = strings[key] || key || '';
36883         if (field.type === 'typeCombo' && value.toLowerCase() === 'yes') value = '';
36884         input.value(value);
36885     };
36886
36887     combo.focus = function() {
36888         input.node().focus();
36889     };
36890
36891     return d3.rebind(combo, event, 'on');
36892 };
36893 iD.ui.preset.text =
36894 iD.ui.preset.number =
36895 iD.ui.preset.tel =
36896 iD.ui.preset.email =
36897 iD.ui.preset.url = function(field) {
36898
36899     var event = d3.dispatch('change'),
36900         input;
36901
36902     function i(selection) {
36903         input = selection.selectAll('input')
36904             .data([0]);
36905
36906         input.enter().append('input')
36907             .attr('type', field.type)
36908             .attr('id', 'preset-input-' + field.id)
36909             .attr('placeholder', field.placeholder() || t('inspector.unknown'));
36910
36911         input
36912             .on('blur', change)
36913             .on('change', change);
36914
36915         if (field.type === 'number') {
36916             input.attr('type', 'text');
36917
36918             var spinControl = selection.selectAll('.spin-control')
36919                 .data([0]);
36920
36921             var enter = spinControl.enter().append('div')
36922                 .attr('class', 'spin-control');
36923
36924             enter.append('button')
36925                 .datum(1)
36926                 .attr('class', 'increment');
36927
36928             enter.append('button')
36929                 .datum(-1)
36930                 .attr('class', 'decrement');
36931
36932             spinControl.selectAll('button')
36933                 .on('click', function(d) {
36934                     d3.event.preventDefault();
36935                     var num = parseInt(input.node().value || 0, 10);
36936                     if (!isNaN(num)) input.node().value = num + d;
36937                     change();
36938                 });
36939         }
36940     }
36941
36942     function change() {
36943         var t = {};
36944         t[field.key] = input.value() || undefined;
36945         event.change(t);
36946     }
36947
36948     i.tags = function(tags) {
36949         input.value(tags[field.key] || '');
36950     };
36951
36952     i.focus = function() {
36953         input.node().focus();
36954     };
36955
36956     return d3.rebind(i, event, 'on');
36957 };
36958 iD.ui.preset.localized = function(field, context) {
36959
36960     var event = d3.dispatch('change'),
36961         wikipedia = iD.wikipedia(),
36962         input, localizedInputs, wikiTitles,
36963         entity;
36964
36965     function i(selection) {
36966         input = selection.selectAll('.localized-main')
36967             .data([0]);
36968
36969         input.enter().append('input')
36970             .attr('type', 'text')
36971             .attr('id', 'preset-input-' + field.id)
36972             .attr('class', 'localized-main')
36973             .attr('placeholder', field.placeholder());
36974
36975         if (field.id === 'name') {
36976             var preset = context.presets().match(entity, context.graph());
36977             input.call(d3.combobox().fetcher(
36978                 iD.util.SuggestNames(preset, iD.data.suggestions)
36979             ));
36980         }
36981
36982         input
36983             .on('blur', change)
36984             .on('change', change);
36985
36986         var translateButton = selection.selectAll('.localized-add')
36987             .data([0]);
36988
36989         translateButton.enter().append('button')
36990             .attr('class', 'button-input-action localized-add minor')
36991             .call(bootstrap.tooltip()
36992                 .title(t('translate.translate'))
36993                 .placement('left'))
36994             .append('span')
36995             .attr('class', 'icon plus');
36996
36997         translateButton
36998             .on('click', addBlank);
36999
37000         localizedInputs = selection.selectAll('.localized-wrap')
37001             .data([0]);
37002
37003         localizedInputs.enter().append('div')
37004             .attr('class', 'localized-wrap');
37005     }
37006
37007     function addBlank() {
37008         d3.event.preventDefault();
37009         var data = localizedInputs.selectAll('div.entry').data();
37010         data.push({ lang: '', value: '' });
37011         localizedInputs.call(render, data);
37012     }
37013
37014     function change() {
37015         var t = {};
37016         t[field.key] = d3.select(this).value() || undefined;
37017         event.change(t);
37018     }
37019
37020     function key(lang) { return field.key + ':' + lang; }
37021
37022     function changeLang(d) {
37023         var lang = d3.select(this).value(),
37024             t = {},
37025             language = _.find(iD.data.wikipedia, function(d) {
37026                 return d[0].toLowerCase() === lang.toLowerCase() ||
37027                     d[1].toLowerCase() === lang.toLowerCase();
37028             });
37029
37030         if (language) lang = language[2];
37031
37032         if (d.lang && d.lang !== lang) {
37033             t[key(d.lang)] = undefined;
37034         }
37035
37036         var value = d3.select(this.parentNode)
37037             .selectAll('.localized-value')
37038             .value();
37039
37040         if (lang && value) {
37041             t[key(lang)] = value;
37042         } else if (lang && wikiTitles && wikiTitles[d.lang]) {
37043             t[key(lang)] = wikiTitles[d.lang];
37044         }
37045
37046         d.lang = lang;
37047         event.change(t);
37048     }
37049
37050     function changeValue(d) {
37051         if (!d.lang) return;
37052         var t = {};
37053         t[key(d.lang)] = d3.select(this).value() || undefined;
37054         event.change(t);
37055     }
37056
37057     function fetcher(value, cb) {
37058         var v = value.toLowerCase();
37059
37060         cb(iD.data.wikipedia.filter(function(d) {
37061             return d[0].toLowerCase().indexOf(v) >= 0 ||
37062             d[1].toLowerCase().indexOf(v) >= 0 ||
37063             d[2].toLowerCase().indexOf(v) >= 0;
37064         }).map(function(d) {
37065             return { value: d[1] };
37066         }));
37067     }
37068
37069     function render(selection, data) {
37070         var wraps = selection.selectAll('div.entry').
37071             data(data, function(d) { return d.lang; });
37072
37073         var innerWrap = wraps.enter()
37074             .insert('div', ':first-child');
37075
37076         innerWrap.attr('class', 'entry')
37077             .each(function() {
37078                 var wrap = d3.select(this);
37079                 var langcombo = d3.combobox().fetcher(fetcher);
37080
37081                 var label = wrap.append('label')
37082                     .attr('class','form-label')
37083                     .text(t('translate.localized_translation_label'))
37084                     .attr('for','localized-lang');
37085
37086                 label.append('button')
37087                     .attr('class', 'minor remove')
37088                     .on('click', function(d){
37089                         d3.event.preventDefault();
37090                         var t = {};
37091                         t[key(d.lang)] = undefined;
37092                         event.change(t);
37093                         d3.select(this.parentNode.parentNode)
37094                             .style('top','0')
37095                             .style('max-height','240px')
37096                             .transition()
37097                             .style('opacity', '0')
37098                             .style('max-height','0px')
37099                             .remove();
37100                     })
37101                     .append('span').attr('class', 'icon delete');
37102
37103                 wrap.append('input')
37104                     .attr('class', 'localized-lang')
37105                     .attr('type', 'text')
37106                     .attr('placeholder',t('translate.localized_translation_language'))
37107                     .on('blur', changeLang)
37108                     .on('change', changeLang)
37109                     .call(langcombo);
37110
37111                 wrap.append('input')
37112                     .on('blur', changeValue)
37113                     .on('change', changeValue)
37114                     .attr('type', 'text')
37115                     .attr('placeholder', t('translate.localized_translation_name'))
37116                     .attr('class', 'localized-value');
37117             });
37118
37119         innerWrap
37120             .style('margin-top', '0px')
37121             .style('max-height', '0px')
37122             .style('opacity', '0')
37123             .transition()
37124             .duration(200)
37125             .style('margin-top', '10px')
37126             .style('max-height', '240px')
37127             .style('opacity', '1')
37128             .each('end', function() {
37129                 d3.select(this)
37130                     .style('max-height', '')
37131                     .style('overflow', 'visible');
37132             });
37133
37134         wraps.exit()
37135             .transition()
37136             .duration(200)
37137             .style('max-height','0px')
37138             .style('opacity', '0')
37139             .style('top','-10px')
37140             .remove();
37141
37142         var entry = selection.selectAll('.entry');
37143
37144         entry.select('.localized-lang')
37145             .value(function(d) {
37146                 var lang = _.find(iD.data.wikipedia, function(lang) { return lang[2] === d.lang; });
37147                 return lang ? lang[1] : d.lang;
37148             });
37149
37150         entry.select('.localized-value')
37151             .value(function(d) { return d.value; });
37152     }
37153
37154     i.tags = function(tags) {
37155
37156         // Fetch translations from wikipedia
37157         if (tags.wikipedia && !wikiTitles) {
37158             wikiTitles = {};
37159             var wm = tags.wikipedia.match(/([^:]+):(.+)/);
37160             if (wm && wm[0] && wm[1]) {
37161                 wikipedia.translations(wm[1], wm[2], function(d) {
37162                     wikiTitles = d;
37163                 });
37164             }
37165         }
37166
37167         input.value(tags[field.key] || '');
37168
37169         var postfixed = [];
37170         for (var i in tags) {
37171             var m = i.match(new RegExp(field.key + ':([a-zA-Z_-]+)$'));
37172             if (m && m[1]) {
37173                 postfixed.push({ lang: m[1], value: tags[i]});
37174             }
37175         }
37176
37177         localizedInputs.call(render, postfixed.reverse());
37178     };
37179
37180     i.focus = function() {
37181         input.node().focus();
37182     };
37183
37184     i.entity = function(_) {
37185         entity = _;
37186     };
37187
37188     return d3.rebind(i, event, 'on');
37189 };
37190 iD.ui.preset.maxspeed = function(field, context) {
37191
37192     var event = d3.dispatch('change'),
37193         entity,
37194         imperial,
37195         unitInput,
37196         combobox,
37197         input;
37198
37199     var metricValues = [20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120],
37200         imperialValues = [20, 25, 30, 35, 40, 45, 50, 55, 65, 70];
37201
37202     function maxspeed(selection) {
37203         combobox = d3.combobox();
37204         var unitCombobox = d3.combobox().data(['km/h', 'mph'].map(comboValues));
37205
37206         input = selection.selectAll('#preset-input-' + field.id)
37207             .data([0]);
37208
37209         input.enter().append('input')
37210             .attr('type', 'text')
37211             .attr('id', 'preset-input-' + field.id)
37212             .attr('placeholder', field.placeholder());
37213
37214         input
37215             .call(combobox)
37216             .on('change', change)
37217             .on('blur', change);
37218
37219         var childNodes = context.graph().childNodes(context.entity(entity.id)),
37220             loc = childNodes[~~(childNodes.length/2)].loc;
37221
37222         imperial = _.any(iD.data.imperial.features, function(f) {
37223             return _.any(f.geometry.coordinates, function(d) {
37224                 return iD.geo.pointInPolygon(loc, d[0]);
37225             });
37226         });
37227
37228         unitInput = selection.selectAll('input.maxspeed-unit')
37229             .data([0]);
37230
37231         unitInput.enter().append('input')
37232             .attr('type', 'text')
37233             .attr('class', 'maxspeed-unit');
37234
37235         unitInput
37236             .on('blur', changeUnits)
37237             .on('change', changeUnits)
37238             .call(unitCombobox);
37239
37240         function changeUnits() {
37241             imperial = unitInput.value() === 'mph';
37242             unitInput.value(imperial ? 'mph' : 'km/h');
37243             setSuggestions();
37244             change();
37245         }
37246
37247     }
37248
37249     function setSuggestions() {
37250         combobox.data((imperial ? imperialValues : metricValues).map(comboValues));
37251         unitInput.value(imperial ? 'mph' : 'km/h');
37252     }
37253
37254     function comboValues(d) {
37255         return {
37256             value: d.toString(),
37257             title: d.toString()
37258         };
37259     }
37260
37261     function change() {
37262         var tag = {},
37263             value = input.value();
37264
37265         if (!value) {
37266             tag[field.key] = undefined;
37267         } else if (isNaN(value) || !imperial) {
37268             tag[field.key] = value;
37269         } else {
37270             tag[field.key] = value + ' mph';
37271         }
37272
37273         event.change(tag);
37274     }
37275
37276     maxspeed.tags = function(tags) {
37277         var value = tags[field.key];
37278
37279         if (value && value.indexOf('mph') >= 0) {
37280             value = parseInt(value, 10);
37281             imperial = true;
37282         } else if (value) {
37283             imperial = false;
37284         }
37285
37286         setSuggestions();
37287
37288         input.value(value || '');
37289     };
37290
37291     maxspeed.focus = function() {
37292         input.node().focus();
37293     };
37294
37295     maxspeed.entity = function(_) {
37296         entity = _;
37297     };
37298
37299     return d3.rebind(maxspeed, event, 'on');
37300 };
37301 iD.ui.preset.radio = function(field) {
37302
37303     var event = d3.dispatch('change'),
37304         labels, radios, placeholder;
37305
37306     function radio(selection) {
37307         selection.classed('preset-radio', true);
37308
37309         var wrap = selection.selectAll('.preset-input-wrap')
37310             .data([0]);
37311
37312         var buttonWrap = wrap.enter().append('div')
37313             .attr('class', 'preset-input-wrap toggle-list');
37314
37315         buttonWrap.append('span')
37316             .attr('class', 'placeholder');
37317
37318         placeholder = selection.selectAll('.placeholder');
37319
37320         labels = wrap.selectAll('label')
37321             .data(field.options || field.keys);
37322
37323         var enter = labels.enter().append('label');
37324
37325         enter.append('input')
37326             .attr('type', 'radio')
37327             .attr('name', field.id)
37328             .attr('value', function(d) { return field.t('options.' + d, { 'default': d }); })
37329             .attr('checked', false);
37330
37331         enter.append('span')
37332             .text(function(d) { return field.t('options.' + d, { 'default': d }); });
37333
37334         radios = labels.selectAll('input')
37335             .on('change', change);
37336     }
37337
37338     function change() {
37339         var t = {};
37340         if (field.key) t[field.key] = undefined;
37341         radios.each(function(d) {
37342             var active = d3.select(this).property('checked');
37343             if (field.key) {
37344                 if (active) t[field.key] = d;
37345             } else {
37346                 t[d] = active ? 'yes' : undefined;
37347             }
37348         });
37349         event.change(t);
37350     }
37351
37352     radio.tags = function(tags) {
37353         function checked(d) {
37354             if (field.key) {
37355                 return tags[field.key] === d;
37356             } else {
37357                 return !!(tags[d] && tags[d] !== 'no');
37358             }
37359         }
37360
37361         labels.classed('active', checked);
37362         radios.property('checked', checked);
37363         var selection = radios.filter(function() { return this.checked; });
37364         if (selection.empty()) {
37365             placeholder.text(t('inspector.none'));
37366         } else {
37367             placeholder.text(selection.attr('value'));
37368         }
37369     };
37370
37371     radio.focus = function() {
37372         radios.node().focus();
37373     };
37374
37375     return d3.rebind(radio, event, 'on');
37376 };
37377 iD.ui.preset.restrictions = function(field, context) {
37378     var event = d3.dispatch('change'),
37379         vertexID,
37380         fromNodeID;
37381
37382     function restrictions(selection) {
37383         var wrap = selection.selectAll('.preset-input-wrap')
37384             .data([0]);
37385
37386         var enter = wrap.enter().append('div')
37387             .attr('class', 'preset-input-wrap');
37388
37389         enter.append('div')
37390             .attr('class', 'restriction-help');
37391
37392         enter.append('svg')
37393             .call(iD.svg.Surface(context))
37394             .call(iD.behavior.Hover(context));
37395
37396         var intersection = iD.geo.Intersection(context.graph(), vertexID),
37397             graph = intersection.graph,
37398             vertex = graph.entity(vertexID),
37399             surface = wrap.selectAll('svg'),
37400             filter = function () { return true; },
37401             extent = iD.geo.Extent(),
37402             projection = iD.geo.RawMercator(),
37403             lines = iD.svg.Lines(projection, context),
37404             vertices = iD.svg.Vertices(projection, context),
37405             turns = iD.svg.Turns(projection, context);
37406
37407         var d = wrap.dimensions(),
37408             c = [d[0] / 2, d[1] / 2],
37409             z = 21;
37410
37411         projection
37412             .scale(256 * Math.pow(2, z) / (2 * Math.PI));
37413
37414         var s = projection(vertex.loc);
37415
37416         projection
37417             .translate([c[0] - s[0], c[1] - s[1]])
37418             .clipExtent([[0, 0], d]);
37419
37420         surface
37421             .call(vertices, graph, [vertex], filter, extent, z)
37422             .call(lines, graph, intersection.highways, filter)
37423             .call(turns, graph, intersection.turns(fromNodeID));
37424
37425         surface
37426             .on('click.restrictions', click)
37427             .on('mouseover.restrictions', mouseover)
37428             .on('mouseout.restrictions', mouseout);
37429
37430         surface
37431             .selectAll('.selected')
37432             .classed('selected', false);
37433
37434         if (fromNodeID) {
37435             surface
37436                 .selectAll('.' + _.find(intersection.highways, function(way) { return way.contains(fromNodeID); }).id)
37437                 .classed('selected', true);
37438         }
37439
37440         mouseout();
37441
37442         context.history()
37443             .on('change.restrictions', render);
37444
37445         d3.select(window)
37446             .on('resize.restrictions', render);
37447
37448         function click() {
37449             var datum = d3.event.target.__data__;
37450             if (datum instanceof iD.Entity) {
37451                 fromNodeID = datum.nodes[(datum.first() === vertexID) ? 1 : datum.nodes.length - 2];
37452                 render();
37453             } else if (datum instanceof iD.geo.Turn) {
37454                 if (datum.restriction) {
37455                     context.perform(
37456                         iD.actions.UnrestrictTurn(datum, projection),
37457                         t('operations.restriction.annotation.delete'));
37458                 } else {
37459                     context.perform(
37460                         iD.actions.RestrictTurn(datum, projection),
37461                         t('operations.restriction.annotation.create'));
37462                 }
37463             }
37464         }
37465
37466         function mouseover() {
37467             var datum = d3.event.target.__data__;
37468             if (datum instanceof iD.geo.Turn) {
37469                 var graph = context.graph(),
37470                     presets = context.presets(),
37471                     preset;
37472
37473                 if (datum.restriction) {
37474                     preset = presets.match(graph.entity(datum.restriction), graph);
37475                 } else {
37476                     preset = presets.item('type/restriction/' +
37477                         iD.geo.inferRestriction(
37478                             graph,
37479                             datum.from,
37480                             datum.via,
37481                             datum.to,
37482                             projection));
37483                 }
37484
37485                 wrap.selectAll('.restriction-help')
37486                     .text(t('operations.restriction.help.' +
37487                         (datum.restriction ? 'toggle_off' : 'toggle_on'),
37488                         {restriction: preset.name()}));
37489             }
37490         }
37491
37492         function mouseout() {
37493             wrap.selectAll('.restriction-help')
37494                 .text(t('operations.restriction.help.' +
37495                     (fromNodeID ? 'toggle' : 'select')));
37496         }
37497
37498         function render() {
37499             if (context.hasEntity(vertexID)) {
37500                 restrictions(selection);
37501             }
37502         }
37503     }
37504
37505     restrictions.entity = function(_) {
37506         if (!vertexID || vertexID !== _.id) {
37507             fromNodeID = null;
37508             vertexID = _.id;
37509         }
37510     };
37511
37512     restrictions.tags = function() {};
37513     restrictions.focus = function() {};
37514
37515     return d3.rebind(restrictions, event, 'on');
37516 };
37517 iD.ui.preset.textarea = function(field) {
37518
37519     var event = d3.dispatch('change'),
37520         input;
37521
37522     function i(selection) {
37523         input = selection.selectAll('textarea')
37524             .data([0]);
37525
37526         input.enter().append('textarea')
37527             .attr('id', 'preset-input-' + field.id)
37528             .attr('placeholder', field.placeholder() || t('inspector.unknown'))
37529             .attr('maxlength', 255);
37530
37531         input
37532             .on('blur', change)
37533             .on('change', change);
37534     }
37535
37536     function change() {
37537         var t = {};
37538         t[field.key] = input.value() || undefined;
37539         event.change(t);
37540     }
37541
37542     i.tags = function(tags) {
37543         input.value(tags[field.key] || '');
37544     };
37545
37546     i.focus = function() {
37547         input.node().focus();
37548     };
37549
37550     return d3.rebind(i, event, 'on');
37551 };
37552 iD.ui.preset.wikipedia = function(field, context) {
37553
37554     var event = d3.dispatch('change'),
37555         wikipedia = iD.wikipedia(),
37556         link, entity, lang, title;
37557
37558     function i(selection) {
37559
37560         var langcombo = d3.combobox()
37561             .fetcher(function(value, cb) {
37562                 var v = value.toLowerCase();
37563
37564                 cb(iD.data.wikipedia.filter(function(d) {
37565                     return d[0].toLowerCase().indexOf(v) >= 0 ||
37566                         d[1].toLowerCase().indexOf(v) >= 0 ||
37567                         d[2].toLowerCase().indexOf(v) >= 0;
37568                 }).map(function(d) {
37569                     return { value: d[1] };
37570                 }));
37571             });
37572
37573         var titlecombo = d3.combobox()
37574             .fetcher(function(value, cb) {
37575
37576                 if (!value) value = context.entity(entity.id).tags.name || '';
37577                 var searchfn = value.length > 7 ? wikipedia.search : wikipedia.suggestions;
37578
37579                 searchfn(language()[2], value, function(query, data) {
37580                     cb(data.map(function(d) {
37581                         return { value: d };
37582                     }));
37583                 });
37584             });
37585
37586         lang = selection.selectAll('input.wiki-lang')
37587             .data([0]);
37588
37589         lang.enter().append('input')
37590             .attr('type', 'text')
37591             .attr('class', 'wiki-lang')
37592             .value('English');
37593
37594         lang
37595             .call(langcombo)
37596             .on('blur', changeLang)
37597             .on('change', changeLang);
37598
37599         title = selection.selectAll('input.wiki-title')
37600             .data([0]);
37601
37602         title.enter().append('input')
37603             .attr('type', 'text')
37604             .attr('class', 'wiki-title')
37605             .attr('id', 'preset-input-' + field.id);
37606
37607         title
37608             .call(titlecombo)
37609             .on('blur', change)
37610             .on('change', change);
37611
37612         link = selection.selectAll('a.wiki-link')
37613             .data([0]);
37614
37615         link.enter().append('a')
37616             .attr('class', 'wiki-link button-input-action minor')
37617             .attr('target', '_blank')
37618             .append('span')
37619             .attr('class', 'icon out-link');
37620     }
37621
37622     function language() {
37623         var value = lang.value().toLowerCase();
37624         return _.find(iD.data.wikipedia, function(d) {
37625             return d[0].toLowerCase() === value ||
37626                 d[1].toLowerCase() === value ||
37627                 d[2].toLowerCase() === value;
37628         }) || iD.data.wikipedia[0];
37629     }
37630
37631     function changeLang() {
37632         lang.value(language()[1]);
37633         change();
37634     }
37635
37636     function change() {
37637         var value = title.value(),
37638             m = value.match(/https?:\/\/([a-z]+)\.wikipedia\.org\/wiki\/(.+)/),
37639             l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; });
37640
37641         if (l) {
37642             // Normalize title http://www.mediawiki.org/wiki/API:Query#Title_normalization
37643             value = m[2].replace(/_/g, ' ');
37644             value = value.slice(0, 1).toUpperCase() + value.slice(1);
37645             lang.value(l[1]);
37646             title.value(value);
37647         }
37648
37649         var t = {};
37650         t[field.key] = value ? language()[2] + ':' + value : undefined;
37651         event.change(t);
37652     }
37653
37654     i.tags = function(tags) {
37655         var value = tags[field.key] || '',
37656             m = value.match(/([^:]+):(.+)/),
37657             l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; });
37658
37659         // value in correct format
37660         if (l) {
37661             lang.value(l[1]);
37662             title.value(m[2]);
37663             link.attr('href', 'http://' + m[1] + '.wikipedia.org/wiki/' + m[2]);
37664
37665         // unrecognized value format
37666         } else {
37667             title.value(value);
37668             link.attr('href', 'http://en.wikipedia.org/wiki/Special:Search?search=' + value);
37669         }
37670     };
37671
37672     i.entity = function(_) {
37673         entity = _;
37674     };
37675
37676     i.focus = function() {
37677         title.node().focus();
37678     };
37679
37680     return d3.rebind(i, event, 'on');
37681 };
37682 iD.ui.intro.area = function(context, reveal) {
37683
37684     var event = d3.dispatch('done'),
37685         timeout;
37686
37687     var step = {
37688         title: 'intro.areas.title'
37689     };
37690
37691     step.enter = function() {
37692
37693         var playground = [-85.63552, 41.94159],
37694             corner = [-85.63565411045074, 41.9417715536927];
37695         context.map().centerZoom(playground, 19);
37696         reveal('button.add-area', t('intro.areas.add'), {tooltipClass: 'intro-areas-add'});
37697
37698         context.on('enter.intro', addArea);
37699
37700         function addArea(mode) {
37701             if (mode.id !== 'add-area') return;
37702             context.on('enter.intro', drawArea);
37703
37704             var padding = 120 * Math.pow(2, context.map().zoom() - 19);
37705             var pointBox = iD.ui.intro.pad(corner, padding, context);
37706             reveal(pointBox, t('intro.areas.corner'));
37707
37708             context.map().on('move.intro', function() {
37709                 padding = 120 * Math.pow(2, context.map().zoom() - 19);
37710                 pointBox = iD.ui.intro.pad(corner, padding, context);
37711                 reveal(pointBox, t('intro.areas.corner'), {duration: 0});
37712             });
37713         }
37714
37715         function drawArea(mode) {
37716             if (mode.id !== 'draw-area') return;
37717             context.on('enter.intro', enterSelect);
37718
37719             var padding = 150 * Math.pow(2, context.map().zoom() - 19);
37720             var pointBox = iD.ui.intro.pad(playground, padding, context);
37721             reveal(pointBox, t('intro.areas.place'));
37722
37723             context.map().on('move.intro', function() {
37724                 padding = 150 * Math.pow(2, context.map().zoom() - 19);
37725                 pointBox = iD.ui.intro.pad(playground, padding, context);
37726                 reveal(pointBox, t('intro.areas.place'), {duration: 0});
37727             });
37728         }
37729
37730         function enterSelect(mode) {
37731             if (mode.id !== 'select') return;
37732             context.map().on('move.intro', null);
37733             context.on('enter.intro', null);
37734
37735             timeout = setTimeout(function() {
37736                 reveal('.preset-search-input', t('intro.areas.search', {name: context.presets().item('leisure/playground').name()}));
37737                 d3.select('.preset-search-input').on('keyup.intro', keySearch);
37738             }, 500);
37739         }
37740
37741         function keySearch() {
37742             var first = d3.select('.preset-list-item:first-child');
37743             if (first.classed('preset-leisure-playground')) {
37744                 reveal(first.select('.preset-list-button').node(), t('intro.areas.choose'));
37745                 d3.selection.prototype.one.call(context.history(), 'change.intro', selectedPreset);
37746                 d3.select('.preset-search-input').on('keyup.intro', null);
37747             }
37748         }
37749
37750         function selectedPreset() {
37751             reveal('.pane', t('intro.areas.describe'));
37752             context.on('exit.intro', event.done);
37753         }
37754     };
37755
37756     step.exit = function() {
37757         window.clearTimeout(timeout);
37758         context.on('enter.intro', null);
37759         context.on('exit.intro', null);
37760         context.history().on('change.intro', null);
37761         context.map().on('move.intro', null);
37762         d3.select('.preset-search-input').on('keyup.intro', null);
37763     };
37764
37765     return d3.rebind(step, event, 'on');
37766 };
37767 iD.ui.intro.line = function(context, reveal) {
37768
37769     var event = d3.dispatch('done'),
37770         timeouts = [];
37771
37772     var step = {
37773         title: 'intro.lines.title'
37774     };
37775
37776     function timeout(f, t) {
37777         timeouts.push(window.setTimeout(f, t));
37778     }
37779
37780     step.enter = function() {
37781
37782         var centroid = [-85.62830, 41.95699];
37783         var midpoint = [-85.62975395449628, 41.95787501510204];
37784         var start = [-85.6297754121684, 41.95805253325314];
37785         var intersection = [-85.62974496187628, 41.95742515554585];
37786
37787         context.map().centerZoom(start, 18);
37788         reveal('button.add-line', t('intro.lines.add'), {tooltipClass: 'intro-lines-add'});
37789
37790         context.on('enter.intro', addLine);
37791
37792         function addLine(mode) {
37793             if (mode.id !== 'add-line') return;
37794             context.on('enter.intro', drawLine);
37795
37796             var padding = 150 * Math.pow(2, context.map().zoom() - 18);
37797             var pointBox = iD.ui.intro.pad(start, padding, context);
37798             reveal(pointBox, t('intro.lines.start'));
37799
37800             context.map().on('move.intro', function() {
37801                 padding = 150 * Math.pow(2, context.map().zoom() - 18);
37802                 pointBox = iD.ui.intro.pad(start, padding, context);
37803                 reveal(pointBox, t('intro.lines.start'), {duration: 0});
37804             });
37805         }
37806
37807         function drawLine(mode) {
37808             if (mode.id !== 'draw-line') return;
37809             context.history().on('change.intro', addIntersection);
37810             context.on('enter.intro', retry);
37811
37812             var padding = 300 * Math.pow(2, context.map().zoom() - 19);
37813             var pointBox = iD.ui.intro.pad(midpoint, padding, context);
37814             reveal(pointBox, t('intro.lines.intersect'));
37815
37816             context.map().on('move.intro', function() {
37817                 padding = 300 * Math.pow(2, context.map().zoom() - 19);
37818                 pointBox = iD.ui.intro.pad(midpoint, padding, context);
37819                 reveal(pointBox, t('intro.lines.intersect'), {duration: 0});
37820             });
37821         }
37822
37823         // ended line before creating intersection
37824         function retry(mode) {
37825             if (mode.id !== 'select') return;
37826             var pointBox = iD.ui.intro.pad(intersection, 30, context);
37827             reveal(pointBox, t('intro.lines.restart'));
37828             timeout(function() {
37829                 context.replace(iD.actions.DeleteMultiple(mode.selectedIDs()));
37830                 step.exit();
37831                 step.enter();
37832             }, 3000);
37833         }
37834
37835         function addIntersection(changes) {
37836             if ( _.any(changes.created(), function(d) {
37837                 return d.type === 'node' && context.graph().parentWays(d).length > 1;
37838             })) {
37839                 context.history().on('change.intro', null);
37840                 context.on('enter.intro', enterSelect);
37841
37842                 var padding = 900 * Math.pow(2, context.map().zoom() - 19);
37843                 var pointBox = iD.ui.intro.pad(centroid, padding, context);
37844                 reveal(pointBox, t('intro.lines.finish'));
37845
37846                 context.map().on('move.intro', function() {
37847                     padding = 900 * Math.pow(2, context.map().zoom() - 19);
37848                     pointBox = iD.ui.intro.pad(centroid, padding, context);
37849                     reveal(pointBox, t('intro.lines.finish'), {duration: 0});
37850                 });
37851             }
37852         }
37853
37854         function enterSelect(mode) {
37855             if (mode.id !== 'select') return;
37856             context.map().on('move.intro', null);
37857             context.on('enter.intro', null);
37858             d3.select('#curtain').style('pointer-events', 'all');
37859
37860             presetCategory();
37861         }
37862
37863         function presetCategory() {
37864             timeout(function() {
37865                 d3.select('#curtain').style('pointer-events', 'none');
37866                 var road = d3.select('.preset-category-road .preset-list-button');
37867                 reveal(road.node(), t('intro.lines.road'));
37868                 road.one('click.intro', roadCategory);
37869             }, 500);
37870         }
37871
37872         function roadCategory() {
37873             timeout(function() {
37874                 var grid = d3.select('.subgrid');
37875                 reveal(grid.node(), t('intro.lines.residential'));
37876                 grid.selectAll(':not(.preset-highway-residential) .preset-list-button')
37877                     .one('click.intro', retryPreset);
37878                 grid.selectAll('.preset-highway-residential .preset-list-button')
37879                     .one('click.intro', roadDetails);
37880             }, 500);
37881         }
37882
37883         // selected wrong road type
37884         function retryPreset() {
37885             timeout(function() {
37886                 var preset = d3.select('.entity-editor-pane .preset-list-button');
37887                 reveal(preset.node(), t('intro.lines.wrong_preset'));
37888                 preset.one('click.intro', presetCategory);
37889             }, 500);
37890         }
37891
37892         function roadDetails() {
37893             reveal('.pane', t('intro.lines.describe'));
37894             context.on('exit.intro', event.done);
37895         }
37896
37897     };
37898
37899     step.exit = function() {
37900         d3.select('#curtain').style('pointer-events', 'none');
37901         timeouts.forEach(window.clearTimeout);
37902         context.on('enter.intro', null);
37903         context.on('exit.intro', null);
37904         context.map().on('move.intro', null);
37905         context.history().on('change.intro', null);
37906     };
37907
37908     return d3.rebind(step, event, 'on');
37909 };
37910 iD.ui.intro.navigation = function(context, reveal) {
37911
37912     var event = d3.dispatch('done'),
37913         timeouts = [];
37914
37915     var step = {
37916         title: 'intro.navigation.title'
37917     };
37918
37919     function set(f, t) {
37920         timeouts.push(window.setTimeout(f, t));
37921     }
37922
37923     /*
37924      * Steps:
37925      * Drag map
37926      * Select poi
37927      * Show editor header
37928      * Show editor pane
37929      * Select road
37930      * Show header
37931      */
37932
37933     step.enter = function() {
37934
37935         var rect = context.surfaceRect(),
37936             map = {
37937                 left: rect.left + 10,
37938                 top: rect.top + 70,
37939                 width: rect.width - 70,
37940                 height: rect.height - 170
37941             };
37942
37943         context.map().centerZoom([-85.63591, 41.94285], 19);
37944
37945         reveal(map, t('intro.navigation.drag'));
37946
37947         context.map().on('move.intro', _.debounce(function() {
37948             context.map().on('move.intro', null);
37949             townhall();
37950             context.on('enter.intro', inspectTownHall);
37951         }, 400));
37952
37953         function townhall() {
37954             var hall = [-85.63645945147184, 41.942986488012565];
37955
37956             var point = context.projection(hall);
37957             if (point[0] < 0 || point[0] > rect.width ||
37958                 point[1] < 0 || point[1] > rect.height) {
37959                 context.map().center(hall);
37960             }
37961
37962             var box = iD.ui.intro.pointBox(hall, context);
37963             reveal(box, t('intro.navigation.select'));
37964
37965             context.map().on('move.intro', function() {
37966                 var box = iD.ui.intro.pointBox(hall, context);
37967                 reveal(box, t('intro.navigation.select'), {duration: 0});
37968             });
37969         }
37970
37971         function inspectTownHall(mode) {
37972             if (mode.id !== 'select') return;
37973             context.on('enter.intro', null);
37974             context.map().on('move.intro', null);
37975             set(function() {
37976                 reveal('.entity-editor-pane', t('intro.navigation.pane'));
37977                 context.on('exit.intro', event.done);
37978             }, 700);
37979         }
37980
37981     };
37982
37983     step.exit = function() {
37984         context.map().on('move.intro', null);
37985         context.on('enter.intro', null);
37986         context.on('exit.intro', null);
37987         timeouts.forEach(window.clearTimeout);
37988     };
37989
37990     return d3.rebind(step, event, 'on');
37991 };
37992 iD.ui.intro.point = function(context, reveal) {
37993
37994     var event = d3.dispatch('done'),
37995         timeouts = [];
37996
37997     var step = {
37998         title: 'intro.points.title'
37999     };
38000
38001     function setTimeout(f, t) {
38002         timeouts.push(window.setTimeout(f, t));
38003     }
38004
38005     step.enter = function() {
38006
38007         context.map().centerZoom([-85.63279, 41.94394], 19);
38008         reveal('button.add-point', t('intro.points.add'), {tooltipClass: 'intro-points-add'});
38009
38010         var corner = [-85.632481,41.944094];
38011
38012         context.on('enter.intro', addPoint);
38013
38014         function addPoint(mode) {
38015             if (mode.id !== 'add-point') return;
38016             context.on('enter.intro', enterSelect);
38017
38018             var pointBox = iD.ui.intro.pad(corner, 150, context);
38019             reveal(pointBox, t('intro.points.place'));
38020
38021             context.map().on('move.intro', function() {
38022                 pointBox = iD.ui.intro.pad(corner, 150, context);
38023                 reveal(pointBox, t('intro.points.place'), {duration: 0});
38024             });
38025
38026         }
38027
38028         function enterSelect(mode) {
38029             if (mode.id !== 'select') return;
38030             context.map().on('move.intro', null);
38031             context.on('enter.intro', null);
38032
38033             setTimeout(function() {
38034                 reveal('.preset-search-input', t('intro.points.search', {name: context.presets().item('amenity/cafe').name()}));
38035                 d3.select('.preset-search-input').on('keyup.intro', keySearch);
38036             }, 500);
38037         }
38038
38039         function keySearch() {
38040             var first = d3.select('.preset-list-item:first-child');
38041             if (first.classed('preset-amenity-cafe')) {
38042                 reveal(first.select('.preset-list-button').node(), t('intro.points.choose'));
38043                 d3.selection.prototype.one.call(context.history(), 'change.intro', selectedPreset);
38044
38045                 d3.select('.preset-search-input').on('keydown.intro', function() {
38046                     // Prevent search from updating and changing the grid
38047                     d3.event.stopPropagation();
38048                     d3.event.preventDefault();
38049                 }, true).on('keyup.intro', null);
38050             }
38051         }
38052
38053         function selectedPreset() {
38054             setTimeout(function() {
38055                 reveal('.entity-editor-pane', t('intro.points.describe'), {tooltipClass: 'intro-points-describe'});
38056                 context.history().on('change.intro', closeEditor);
38057                 context.on('exit.intro', selectPoint);
38058             }, 400);
38059         }
38060
38061         function closeEditor() {
38062             d3.select('.preset-search-input').on('keydown.intro', null);
38063             context.history().on('change.intro', null);
38064             reveal('.entity-editor-pane', t('intro.points.close'));
38065         }
38066
38067         function selectPoint() {
38068             context.on('exit.intro', null);
38069             context.history().on('change.intro', null);
38070             context.on('enter.intro', enterReselect);
38071
38072             var pointBox = iD.ui.intro.pad(corner, 150, context);
38073             reveal(pointBox, t('intro.points.reselect'));
38074
38075             context.map().on('move.intro', function() {
38076                 pointBox = iD.ui.intro.pad(corner, 150, context);
38077                 reveal(pointBox, t('intro.points.reselect'), {duration: 0});
38078             });
38079         }
38080
38081         function enterReselect(mode) {
38082             if (mode.id !== 'select') return;
38083             context.map().on('move.intro', null);
38084             context.on('enter.intro', null);
38085
38086             setTimeout(function() {
38087                 reveal('.entity-editor-pane', t('intro.points.fixname'));
38088                 context.on('exit.intro', deletePoint);
38089             }, 500);
38090         }
38091
38092         function deletePoint() {
38093             context.on('exit.intro', null);
38094             context.on('enter.intro', enterDelete);
38095
38096             var pointBox = iD.ui.intro.pad(corner, 150, context);
38097             reveal(pointBox, t('intro.points.reselect_delete'));
38098
38099             context.map().on('move.intro', function() {
38100                 pointBox = iD.ui.intro.pad(corner, 150, context);
38101                 reveal(pointBox, t('intro.points.reselect_delete'), {duration: 0});
38102             });
38103         }
38104
38105         function enterDelete(mode) {
38106             if (mode.id !== 'select') return;
38107             context.map().on('move.intro', null);
38108             context.on('enter.intro', null);
38109             context.on('exit.intro', deletePoint);
38110             context.map().on('move.intro', deletePoint);
38111             context.history().on('change.intro', deleted);
38112
38113             setTimeout(function() {
38114                 var node = d3.select('.radial-menu-item-delete').node();
38115                 var pointBox = iD.ui.intro.pad(node.getBoundingClientRect(), 50, context);
38116                 reveal(pointBox, t('intro.points.delete'));
38117             }, 300);
38118         }
38119
38120         function deleted(changed) {
38121             if (changed.deleted().length) event.done();
38122         }
38123
38124     };
38125
38126     step.exit = function() {
38127         timeouts.forEach(window.clearTimeout);
38128         context.on('exit.intro', null);
38129         context.on('enter.intro', null);
38130         context.map().on('move.intro', null);
38131         context.history().on('change.intro', null);
38132         d3.select('.preset-search-input').on('keyup.intro', null).on('keydown.intro', null);
38133     };
38134
38135     return d3.rebind(step, event, 'on');
38136 };
38137 iD.ui.intro.startEditing = function(context, reveal) {
38138
38139     var event = d3.dispatch('done', 'startEditing'),
38140         modal,
38141         timeouts = [];
38142
38143     var step = {
38144         title: 'intro.startediting.title'
38145     };
38146
38147     function timeout(f, t) {
38148         timeouts.push(window.setTimeout(f, t));
38149     }
38150
38151     step.enter = function() {
38152
38153         reveal('.map-control.help-control', t('intro.startediting.help'));
38154
38155         timeout(function() {
38156             reveal('#bar button.save', t('intro.startediting.save'));
38157         }, 3500);
38158
38159         timeout(function() {
38160             reveal('#surface');
38161         }, 7000);
38162
38163         timeout(function() {
38164             modal = iD.ui.modal(context.container());
38165
38166             modal.select('.modal')
38167                 .attr('class', 'modal-splash modal col6');
38168
38169             modal.selectAll('.close').remove();
38170
38171             var startbutton = modal.select('.content')
38172                 .attr('class', 'fillL')
38173                     .append('button')
38174                         .attr('class', 'modal-section huge-modal-button')
38175                         .on('click', function() {
38176                                 modal.remove();
38177                         });
38178
38179                 startbutton.append('div')
38180                     .attr('class','illustration');
38181                 startbutton.append('h2')
38182                     .text(t('intro.startediting.start'));
38183
38184             event.startEditing();
38185
38186         }, 7500);
38187     };
38188
38189     step.exit = function() {
38190         if (modal) modal.remove();
38191         timeouts.forEach(window.clearTimeout);
38192     };
38193
38194     return d3.rebind(step, event, 'on');
38195 };
38196 iD.presets = function() {
38197
38198     // an iD.presets.Collection with methods for
38199     // loading new data and returning defaults
38200
38201     var all = iD.presets.Collection([]),
38202         defaults = { area: all, line: all, point: all, vertex: all, relation: all },
38203         fields = {},
38204         universal = [],
38205         recent = iD.presets.Collection([]);
38206
38207     // Index of presets by (geometry, tag key).
38208     var index = {
38209         point: {},
38210         vertex: {},
38211         line: {},
38212         area: {},
38213         relation: {}
38214     };
38215
38216     all.match = function(entity, resolver) {
38217         var geometry = entity.geometry(resolver),
38218             geometryMatches = index[geometry],
38219             best = -1,
38220             match;
38221
38222         for (var k in entity.tags) {
38223             var keyMatches = geometryMatches[k];
38224             if (!keyMatches) continue;
38225
38226             for (var i = 0; i < keyMatches.length; i++) {
38227                 var score = keyMatches[i].matchScore(entity);
38228                 if (score > best) {
38229                     best = score;
38230                     match = keyMatches[i];
38231                 }
38232             }
38233         }
38234
38235         return match || all.item(geometry);
38236     };
38237
38238     // Because of the open nature of tagging, iD will never have a complete
38239     // list of tags used in OSM, so we want it to have logic like "assume
38240     // that a closed way with an amenity tag is an area, unless the amenity
38241     // is one of these specific types". This function computes a structure
38242     // that allows testing of such conditions, based on the presets designated
38243     // as as supporting (or not supporting) the area geometry.
38244     //
38245     // The returned object L is a whitelist/blacklist of tags. A closed way
38246     // with a tag (k, v) is considered to be an area if `k in L && !(v in L[k])`
38247     // (see `iD.Way#isArea()`). In other words, the keys of L form the whitelist,
38248     // and the subkeys form the blacklist.
38249     all.areaKeys = function() {
38250         var areaKeys = {},
38251             ignore = ['barrier', 'highway', 'footway', 'railway', 'type'],
38252             presets = _.reject(all.collection, 'suggestion');
38253
38254         // whitelist
38255         presets.forEach(function(d) {
38256             for (var key in d.tags) break;
38257             if (!key) return;
38258             if (ignore.indexOf(key) !== -1) return;
38259
38260             if (d.geometry.indexOf('area') !== -1) {
38261                 areaKeys[key] = areaKeys[key] || {};
38262             }
38263         });
38264
38265         // blacklist
38266         presets.forEach(function(d) {
38267             for (var key in d.tags) break;
38268             if (!key) return;
38269             if (ignore.indexOf(key) !== -1) return;
38270
38271             var value = d.tags[key];
38272             if (d.geometry.indexOf('area') === -1 && key in areaKeys && value !== '*') {
38273                 areaKeys[key][value] = true;
38274             }
38275         });
38276
38277         return areaKeys;
38278     };
38279
38280     all.load = function(d) {
38281
38282         if (d.fields) {
38283             _.forEach(d.fields, function(d, id) {
38284                 fields[id] = iD.presets.Field(id, d);
38285                 if (d.universal) universal.push(fields[id]);
38286             });
38287         }
38288
38289         if (d.presets) {
38290             _.forEach(d.presets, function(d, id) {
38291                 all.collection.push(iD.presets.Preset(id, d, fields));
38292             });
38293         }
38294
38295         if (d.categories) {
38296             _.forEach(d.categories, function(d, id) {
38297                 all.collection.push(iD.presets.Category(id, d, all));
38298             });
38299         }
38300
38301         if (d.defaults) {
38302             var getItem = _.bind(all.item, all);
38303             defaults = {
38304                 area: iD.presets.Collection(d.defaults.area.map(getItem)),
38305                 line: iD.presets.Collection(d.defaults.line.map(getItem)),
38306                 point: iD.presets.Collection(d.defaults.point.map(getItem)),
38307                 vertex: iD.presets.Collection(d.defaults.vertex.map(getItem)),
38308                 relation: iD.presets.Collection(d.defaults.relation.map(getItem))
38309             };
38310         }
38311
38312         for (var i = 0; i < all.collection.length; i++) {
38313             var preset = all.collection[i],
38314                 geometry = preset.geometry;
38315
38316             for (var j = 0; j < geometry.length; j++) {
38317                 var g = index[geometry[j]];
38318                 for (var k in preset.tags) {
38319                     (g[k] = g[k] || []).push(preset);
38320                 }
38321             }
38322         }
38323
38324         return all;
38325     };
38326
38327     all.field = function(id) {
38328         return fields[id];
38329     };
38330
38331     all.universal = function() {
38332         return universal;
38333     };
38334
38335     all.defaults = function(geometry, n) {
38336         var rec = recent.matchGeometry(geometry).collection.slice(0, 4),
38337             def = _.uniq(rec.concat(defaults[geometry].collection)).slice(0, n - 1);
38338         return iD.presets.Collection(_.unique(rec.concat(def).concat(all.item(geometry))));
38339     };
38340
38341     all.choose = function(preset) {
38342         if (!preset.isFallback()) {
38343             recent = iD.presets.Collection(_.unique([preset].concat(recent.collection)));
38344         }
38345         return all;
38346     };
38347
38348     return all;
38349 };
38350 iD.presets.Category = function(id, category, all) {
38351     category = _.clone(category);
38352
38353     category.id = id;
38354
38355     category.members = iD.presets.Collection(category.members.map(function(id) {
38356         return all.item(id);
38357     }));
38358
38359     category.matchGeometry = function(geometry) {
38360         return category.geometry.indexOf(geometry) >= 0;
38361     };
38362
38363     category.matchScore = function() { return -1; };
38364
38365     category.name = function() {
38366         return t('presets.categories.' + id + '.name', {'default': id});
38367     };
38368
38369     category.terms = function() {
38370         return [];
38371     };
38372
38373     return category;
38374 };
38375 iD.presets.Collection = function(collection) {
38376
38377     var maxSearchResults = 50,
38378         maxSuggestionResults = 10;
38379
38380     var presets = {
38381
38382         collection: collection,
38383
38384         item: function(id) {
38385             return _.find(collection, function(d) {
38386                 return d.id === id;
38387             });
38388         },
38389
38390         matchGeometry: function(geometry) {
38391             return iD.presets.Collection(collection.filter(function(d) {
38392                 return d.matchGeometry(geometry);
38393             }));
38394         },
38395
38396         search: function(value, geometry) {
38397             if (!value) return this;
38398
38399             value = value.toLowerCase();
38400
38401             var searchable = _.filter(collection, function(a) {
38402                 return a.searchable !== false && a.suggestion !== true;
38403             }),
38404             suggestions = _.filter(collection, function(a) {
38405                 return a.suggestion === true;
38406             });
38407
38408             // matches value to preset.name
38409             var leading_name = _.filter(searchable, function(a) {
38410                     return leading(a.name().toLowerCase());
38411                 }).sort(function(a, b) {
38412                     var i = a.name().toLowerCase().indexOf(value) - b.name().toLowerCase().indexOf(value);
38413                     if (i === 0) return a.name().length - b.name().length;
38414                     else return i;
38415                 });
38416
38417             // matches value to preset.terms values
38418             var leading_terms = _.filter(searchable, function(a) {
38419                 return _.any(a.terms() || [], leading);
38420             });
38421
38422             function leading(a) {
38423                 var index = a.indexOf(value);
38424                 return index === 0 || a[index - 1] === ' ';
38425             }
38426
38427             // finds close matches to value in preset.name
38428             var levenstein_name = searchable.map(function(a) {
38429                     return {
38430                         preset: a,
38431                         dist: iD.util.editDistance(value, a.name().toLowerCase())
38432                     };
38433                 }).filter(function(a) {
38434                     return a.dist + Math.min(value.length - a.preset.name().length, 0) < 3;
38435                 }).sort(function(a, b) {
38436                     return a.dist - b.dist;
38437                 }).map(function(a) {
38438                     return a.preset;
38439                 });
38440
38441             // finds close matches to value in preset.terms
38442             var leventstein_terms = _.filter(searchable, function(a) {
38443                     return _.any(a.terms() || [], function(b) {
38444                         return iD.util.editDistance(value, b) + Math.min(value.length - b.length, 0) < 3;
38445                     });
38446                 });
38447
38448             function suggestionName(name) {
38449                 var nameArray = name.split(' - ');
38450                 if (nameArray.length > 1) {
38451                     name = nameArray.slice(0, nameArray.length-1).join(' - ');
38452                 }
38453                 return name.toLowerCase();
38454             }
38455
38456             var leading_suggestions = _.filter(suggestions, function(a) {
38457                     return leading(suggestionName(a.name()));
38458                 }).sort(function(a, b) {
38459                     a = suggestionName(a.name());
38460                     b = suggestionName(b.name());
38461                     var i = a.indexOf(value) - b.indexOf(value);
38462                     if (i === 0) return a.length - b.length;
38463                     else return i;
38464                 });
38465
38466             var leven_suggestions = suggestions.map(function(a) {
38467                     return {
38468                         preset: a,
38469                         dist: iD.util.editDistance(value, suggestionName(a.name()))
38470                     };
38471                 }).filter(function(a) {
38472                     return a.dist + Math.min(value.length - suggestionName(a.preset.name()).length, 0) < 1;
38473                 }).sort(function(a, b) {
38474                     return a.dist - b.dist;
38475                 }).map(function(a) {
38476                     return a.preset;
38477                 });
38478
38479             var other = presets.item(geometry);
38480
38481             var results = leading_name.concat(
38482                             leading_terms,
38483                             leading_suggestions.slice(0, maxSuggestionResults+5),
38484                             levenstein_name,
38485                             leventstein_terms,
38486                             leven_suggestions.slice(0, maxSuggestionResults)
38487                         ).slice(0, maxSearchResults-1);
38488
38489             return iD.presets.Collection(_.unique(
38490                     results.concat(other)
38491                 ));
38492         }
38493     };
38494
38495     return presets;
38496 };
38497 iD.presets.Field = function(id, field) {
38498     field = _.clone(field);
38499
38500     field.id = id;
38501
38502     field.matchGeometry = function(geometry) {
38503         return !field.geometry || field.geometry === geometry;
38504     };
38505
38506     field.t = function(scope, options) {
38507         return t('presets.fields.' + id + '.' + scope, options);
38508     };
38509
38510     field.label = function() {
38511         return field.t('label', {'default': id});
38512     };
38513
38514     var placeholder = field.placeholder;
38515     field.placeholder = function() {
38516         return field.t('placeholder', {'default': placeholder});
38517     };
38518
38519     return field;
38520 };
38521 iD.presets.Preset = function(id, preset, fields) {
38522     preset = _.clone(preset);
38523
38524     preset.id = id;
38525     preset.fields = (preset.fields || []).map(getFields);
38526     preset.geometry = (preset.geometry || []);
38527
38528     function getFields(f) {
38529         return fields[f];
38530     }
38531
38532     preset.matchGeometry = function(geometry) {
38533         return preset.geometry.indexOf(geometry) >= 0;
38534     };
38535
38536     var matchScore = preset.matchScore || 1;
38537     preset.matchScore = function(entity) {
38538         var tags = preset.tags,
38539             score = 0;
38540
38541         for (var t in tags) {
38542             if (entity.tags[t] === tags[t]) {
38543                 score += matchScore;
38544             } else if (tags[t] === '*' && t in entity.tags) {
38545                 score += matchScore / 2;
38546             } else {
38547                 return -1;
38548             }
38549         }
38550
38551         return score;
38552     };
38553
38554     preset.t = function(scope, options) {
38555         return t('presets.presets.' + id + '.' + scope, options);
38556     };
38557
38558     var name = preset.name;
38559     preset.name = function() {
38560         if (preset.suggestion) {
38561             id = id.split('/');
38562             id = id[0] + '/' + id[1];
38563             return name + ' - ' + t('presets.presets.' + id + '.name');
38564         }
38565         return preset.t('name', {'default': name});
38566     };
38567
38568     preset.terms = function() {
38569         return preset.t('terms', {'default': ''}).split(',');
38570     };
38571
38572     preset.isFallback = function() {
38573         return Object.keys(preset.tags).length === 0;
38574     };
38575
38576     preset.reference = function(geometry) {
38577         var key = Object.keys(preset.tags)[0],
38578             value = preset.tags[key];
38579
38580         if (geometry === 'relation' && key === 'type') {
38581             return { rtype: value };
38582         } else if (value === '*') {
38583             return { key: key };
38584         } else {
38585             return { key: key, value: value };
38586         }
38587     };
38588
38589     var removeTags = preset.removeTags || preset.tags;
38590     preset.removeTags = function(tags, geometry) {
38591         tags = _.omit(tags, _.keys(removeTags));
38592
38593         for (var f in preset.fields) {
38594             var field = preset.fields[f];
38595             if (field.matchGeometry(geometry) && field['default'] === tags[field.key]) {
38596                 delete tags[field.key];
38597             }
38598         }
38599
38600         delete tags.area;
38601         return tags;
38602     };
38603
38604     var applyTags = preset.addTags || preset.tags;
38605     preset.applyTags = function(tags, geometry) {
38606         var k;
38607
38608         tags = _.clone(tags);
38609
38610         for (k in applyTags) {
38611             if (applyTags[k] === '*') {
38612                 tags[k] = 'yes';
38613             } else {
38614                 tags[k] = applyTags[k];
38615             }
38616         }
38617
38618         // Add area=yes if necessary.
38619         // This is necessary if the geometry is already an area (e.g. user drew an area) AND any of:
38620         // 1. chosen preset could be either an area or a line (`barrier=city_wall`)
38621         // 2. chosen preset doesn't have a key in areaKeys (`railway=station`)
38622         if (geometry === 'area') {
38623             var needsAreaTag = true;
38624             if (preset.geometry.indexOf('line') === -1) {
38625                 for (k in applyTags) {
38626                     if (k in iD.areaKeys) {
38627                         needsAreaTag = false;
38628                         break;
38629                     }
38630                 }
38631             }
38632             if (needsAreaTag) {
38633                 tags.area = 'yes';
38634             }
38635         }
38636
38637         for (var f in preset.fields) {
38638             var field = preset.fields[f];
38639             if (field.matchGeometry(geometry) && field.key && !tags[field.key] && field['default']) {
38640                 tags[field.key] = field['default'];
38641             }
38642         }
38643
38644         return tags;
38645     };
38646
38647     return preset;
38648 };
38649 iD.validate = function(changes, graph) {
38650     var warnings = [];
38651
38652     // https://github.com/openstreetmap/josm/blob/mirror/src/org/
38653     // openstreetmap/josm/data/validation/tests/UnclosedWays.java#L80
38654     function tagSuggestsArea(change) {
38655         if (_.isEmpty(change.tags)) return false;
38656         var tags = change.tags;
38657         var presence = ['landuse', 'amenities', 'tourism', 'shop'];
38658         for (var i = 0; i < presence.length; i++) {
38659             if (tags[presence[i]] !== undefined) {
38660                 return presence[i] + '=' + tags[presence[i]];
38661             }
38662         }
38663         if (tags.building && tags.building === 'yes') return 'building=yes';
38664     }
38665
38666     if (changes.deleted.length > 100) {
38667         warnings.push({
38668             message: t('validations.many_deletions', { n: changes.deleted.length })
38669         });
38670     }
38671
38672     for (var i = 0; i < changes.created.length; i++) {
38673         var change = changes.created[i],
38674             geometry = change.geometry(graph);
38675
38676         if ((geometry === 'point' || geometry === 'line' || geometry === 'area') && !change.isUsed(graph)) {
38677             warnings.push({
38678                 message: t('validations.untagged_' + geometry),
38679                 tooltip: t('validations.untagged_' + geometry + '_tooltip'),
38680                 entity: change
38681             });
38682         }
38683
38684         var deprecatedTags = change.deprecatedTags();
38685         if (!_.isEmpty(deprecatedTags)) {
38686             warnings.push({
38687                 message: t('validations.deprecated_tags', {
38688                     tags: iD.util.tagText({ tags: deprecatedTags })
38689                 }), entity: change });
38690         }
38691
38692         if (geometry === 'line' && tagSuggestsArea(change)) {
38693             warnings.push({
38694                 message: t('validations.tag_suggests_area', {tag: tagSuggestsArea(change)}),
38695                 entity: change
38696             });
38697         }
38698     }
38699
38700     return warnings;
38701 };
38702 /* jshint ignore:start */
38703 })();
38704 window.locale = { _current: 'en' };
38705
38706 locale.current = function(_) {
38707     if (!arguments.length) return locale._current;
38708     if (locale[_] !== undefined) locale._current = _;
38709     else if (locale[_.split('-')[0]]) locale._current = _.split('-')[0];
38710     return locale;
38711 };
38712
38713 function t(s, o, loc) {
38714     loc = loc || locale._current;
38715
38716     var path = s.split(".").reverse(),
38717         rep = locale[loc];
38718
38719     while (rep !== undefined && path.length) rep = rep[path.pop()];
38720
38721     if (rep !== undefined) {
38722         if (o) for (var k in o) rep = rep.replace('{' + k + '}', o[k]);
38723         return rep;
38724     }
38725
38726     if (loc !== 'en') {
38727         return t(s, o, 'en');
38728     }
38729
38730     if (o && 'default' in o) {
38731         return o['default'];
38732     }
38733
38734     var missing = 'Missing ' + loc + ' translation: ' + s;
38735     if (typeof console !== "undefined") console.error(missing);
38736
38737     return missing;
38738 }
38739 iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185964961":{"id":"n185964961","loc":[-85.6406588,41.942601],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964962":{"id":"n185964962","loc":[-85.6394548,41.94261],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185970607":{"id":"n185970607","loc":[-85.641094,41.94006],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970614":{"id":"n185970614","loc":[-85.641825,41.941316],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970616":{"id":"n185970616","loc":[-85.641838,41.941556],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185973650":{"id":"n185973650","loc":[-85.639918,41.940064],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973660":{"id":"n185973660","loc":[-85.640645,41.941339],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973659":{"id":"n185973659","loc":[-85.6406115,41.9400658],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185974479":{"id":"n185974479","loc":[-85.639402,41.941344],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185974481":{"id":"n185974481","loc":[-85.643071,41.941288],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185976259":{"id":"n185976259","loc":[-85.642213,41.940043],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976261":{"id":"n185976261","loc":[-85.643056,41.94001],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185964959":{"id":"n185964959","loc":[-85.6431031,41.9425754],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185964960":{"id":"n185964960","loc":[-85.6418749,41.9425864],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185981481":{"id":"n185981481","loc":[-85.6386827,41.9400828],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981482":{"id":"n185981482","loc":[-85.6393664,41.9400854],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n2138493844":{"id":"n2138493844","loc":[-85.6427969,41.940522],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493845":{"id":"n2138493845","loc":[-85.6425891,41.9405228],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493846":{"id":"n2138493846","loc":[-85.6425868,41.9402875],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493847":{"id":"n2138493847","loc":[-85.6427969,41.9402858],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493848":{"id":"n2138493848","loc":[-85.6425708,41.9405234],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493849":{"id":"n2138493849","loc":[-85.642568,41.9402855],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493850":{"id":"n2138493850","loc":[-85.6423157,41.9402886],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493851":{"id":"n2138493851","loc":[-85.6423212,41.9404362],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493852":{"id":"n2138493852","loc":[-85.6422923,41.9404578],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493853":{"id":"n2138493853","loc":[-85.6422868,41.9404834],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493854":{"id":"n2138493854","loc":[-85.6423226,41.9405091],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493855":{"id":"n2138493855","loc":[-85.6423847,41.9405111],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493856":{"id":"n2138493856","loc":[-85.6424081,41.9405265],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2140155811":{"id":"n2140155811","loc":[-85.6419547,41.9410956],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155814":{"id":"n2140155814","loc":[-85.6427577,41.9410884],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155816":{"id":"n2140155816","loc":[-85.6427545,41.9410052],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155818":{"id":"n2140155818","loc":[-85.6428057,41.9410028],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155821":{"id":"n2140155821","loc":[-85.6427993,41.9407339],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155823":{"id":"n2140155823","loc":[-85.6427385,41.9407339],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155825":{"id":"n2140155825","loc":[-85.6427417,41.9406435],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155827":{"id":"n2140155827","loc":[-85.6419515,41.9406482],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155828":{"id":"n2140155828","loc":[-85.6429368,41.9412407],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155829":{"id":"n2140155829","loc":[-85.6417756,41.9412526],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155830":{"id":"n2140155830","loc":[-85.641766,41.9405983],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155831":{"id":"n2140155831","loc":[-85.6419803,41.9405983],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155832":{"id":"n2140155832","loc":[-85.6419611,41.9401366],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155833":{"id":"n2140155833","loc":[-85.6429336,41.94012],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155834":{"id":"n2140155834","loc":[-85.6430697,41.9411732],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155835":{"id":"n2140155835","loc":[-85.6428411,41.9409974],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155837":{"id":"n2140155837","loc":[-85.6428388,41.9407211],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155839":{"id":"n2140155839","loc":[-85.6430624,41.9405521],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155840":{"id":"n2140155840","loc":[-85.6427323,41.9412396],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155842":{"id":"n2140155842","loc":[-85.6418147,41.9412457],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155844":{"id":"n2140155844","loc":[-85.641813,41.9411319],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155845":{"id":"n2140155845","loc":[-85.6418394,41.9411111],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155847":{"id":"n2140155847","loc":[-85.6418838,41.9410977],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155849":{"id":"n2140155849","loc":[-85.6427324,41.9410921],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155851":{"id":"n2140155851","loc":[-85.6427798,41.9412945],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155852":{"id":"n2140155852","loc":[-85.6427701,41.9411777],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155854":{"id":"n2140155854","loc":[-85.6427323,41.9411572],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155856":{"id":"n2140155856","loc":[-85.6418478,41.9411666],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2165942818":{"id":"n2165942818","loc":[-85.6437533,41.9415029],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2165942819":{"id":"n2165942819","loc":[-85.6437623,41.9421195],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2168510551":{"id":"n2168510551","loc":[-85.6423795,41.9422615],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510552":{"id":"n2168510552","loc":[-85.6423744,41.9419439],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510553":{"id":"n2168510553","loc":[-85.642518,41.9419427],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510554":{"id":"n2168510554","loc":[-85.6425186,41.9419801],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510555":{"id":"n2168510555","loc":[-85.6428314,41.9419773],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510556":{"id":"n2168510556","loc":[-85.6428368,41.9423116],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510557":{"id":"n2168510557","loc":[-85.6424947,41.9423146],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510558":{"id":"n2168510558","loc":[-85.6424938,41.9422605],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2189046007":{"id":"n2189046007","loc":[-85.6410866,41.9424327],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046009":{"id":"n2189046009","loc":[-85.6410805,41.9420061],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046011":{"id":"n2189046011","loc":[-85.6412443,41.9420048],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046012":{"id":"n2189046012","loc":[-85.6412505,41.9424314],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046014":{"id":"n2189046014","loc":[-85.6413311,41.942968],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046016":{"id":"n2189046016","loc":[-85.6413281,41.942713],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046018":{"id":"n2189046018","loc":[-85.641521,41.9427117],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046021":{"id":"n2189046021","loc":[-85.6415234,41.9429236],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046022":{"id":"n2189046022","loc":[-85.6415045,41.9429238],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046025":{"id":"n2189046025","loc":[-85.641505,41.9429668],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046053":{"id":"n2189046053","loc":[-85.6385988,41.942412],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046054":{"id":"n2189046054","loc":[-85.6385985,41.9423311],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046055":{"id":"n2189046055","loc":[-85.6387617,41.9423308],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046056":{"id":"n2189046056","loc":[-85.6387616,41.9423026],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046058":{"id":"n2189046058","loc":[-85.6388215,41.9423025],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046059":{"id":"n2189046059","loc":[-85.6388219,41.9424115],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046060":{"id":"n2189046060","loc":[-85.6391096,41.9424486],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046061":{"id":"n2189046061","loc":[-85.6391105,41.9423673],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046063":{"id":"n2189046063","loc":[-85.6392911,41.9423684],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046065":{"id":"n2189046065","loc":[-85.6392903,41.9424497],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046067":{"id":"n2189046067","loc":[-85.6397927,41.9423876],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046069":{"id":"n2189046069","loc":[-85.6397897,41.9422981],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046070":{"id":"n2189046070","loc":[-85.6399702,41.9422947],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046072":{"id":"n2189046072","loc":[-85.6399732,41.9423843],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046074":{"id":"n2189046074","loc":[-85.6396331,41.9430227],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046075":{"id":"n2189046075","loc":[-85.6398673,41.9430189],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046077":{"id":"n2189046077","loc":[-85.6398656,41.9429637],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046079":{"id":"n2189046079","loc":[-85.6398885,41.9429633],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046082":{"id":"n2189046082","loc":[-85.6398832,41.942779],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046083":{"id":"n2189046083","loc":[-85.6398513,41.9427796],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046085":{"id":"n2189046085","loc":[-85.6398502,41.9427401],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046087":{"id":"n2189046087","loc":[-85.6397889,41.9427411],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046089":{"id":"n2189046089","loc":[-85.6397892,41.942753],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046090":{"id":"n2189046090","loc":[-85.6396983,41.9427544],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046092":{"id":"n2189046092","loc":[-85.6396993,41.9427882],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046094":{"id":"n2189046094","loc":[-85.6396746,41.9427886],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046096":{"id":"n2189046096","loc":[-85.6396758,41.9428296],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046097":{"id":"n2189046097","loc":[-85.6397007,41.9428292],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046099":{"id":"n2189046099","loc":[-85.6397018,41.9428686],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046103":{"id":"n2189046103","loc":[-85.6396289,41.9428697],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046112":{"id":"n2189046112","loc":[-85.6435683,41.9429457],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046113":{"id":"n2189046113","loc":[-85.643568,41.9427766],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046115":{"id":"n2189046115","loc":[-85.6434011,41.9427767],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046116":{"id":"n2189046116","loc":[-85.6434012,41.9428631],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046117":{"id":"n2189046117","loc":[-85.643448,41.9428631],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046118":{"id":"n2189046118","loc":[-85.6434481,41.9429457],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046119":{"id":"n2189046119","loc":[-85.6428363,41.9429809],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046120":{"id":"n2189046120","loc":[-85.6429171,41.9429791],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046121":{"id":"n2189046121","loc":[-85.642914,41.9429041],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046122":{"id":"n2189046122","loc":[-85.6429385,41.9429035],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046123":{"id":"n2189046123","loc":[-85.6429348,41.9428126],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046124":{"id":"n2189046124","loc":[-85.6427746,41.9428163],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046125":{"id":"n2189046125","loc":[-85.6427783,41.942906],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046126":{"id":"n2189046126","loc":[-85.6428332,41.9429047],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046127":{"id":"n2189046127","loc":[-85.6423018,41.9428859],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046128":{"id":"n2189046128","loc":[-85.6422987,41.9427208],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046130":{"id":"n2189046130","loc":[-85.6424218,41.9427195],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046131":{"id":"n2189046131","loc":[-85.6424246,41.9428684],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046132":{"id":"n2189046132","loc":[-85.6423845,41.9428689],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046133":{"id":"n2189046133","loc":[-85.6423848,41.942885],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046134":{"id":"n2189046134","loc":[-85.641533,41.9429392],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046135":{"id":"n2189046135","loc":[-85.6416096,41.9428768],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046137":{"id":"n2189046137","loc":[-85.6416763,41.9429221],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046138":{"id":"n2189046138","loc":[-85.6415997,41.9429845],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046139":{"id":"n2189046139","loc":[-85.6420598,41.9428016],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046140":{"id":"n2189046140","loc":[-85.6420593,41.9427415],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046141":{"id":"n2189046141","loc":[-85.6421957,41.9427409],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046142":{"id":"n2189046142","loc":[-85.6421963,41.9428182],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046143":{"id":"n2189046143","loc":[-85.6421281,41.9428185],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046144":{"id":"n2189046144","loc":[-85.6421279,41.9428013],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046145":{"id":"n2189046145","loc":[-85.6409429,41.9429345],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046146":{"id":"n2189046146","loc":[-85.6410354,41.9429334],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046147":{"id":"n2189046147","loc":[-85.6410325,41.9427972],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046148":{"id":"n2189046148","loc":[-85.640997,41.9427976],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046149":{"id":"n2189046149","loc":[-85.6409963,41.9427643],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046150":{"id":"n2189046150","loc":[-85.6408605,41.9427659],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046152":{"id":"n2189046152","loc":[-85.6408623,41.9428482],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046153":{"id":"n2189046153","loc":[-85.640941,41.9428473],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189152992":{"id":"n2189152992","loc":[-85.6437661,41.9422257],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152993":{"id":"n2189152993","loc":[-85.643768,41.9424067],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152994":{"id":"n2189152994","loc":[-85.6432176,41.9417705],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152995":{"id":"n2189152995","loc":[-85.6432097,41.941327],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152996":{"id":"n2189152996","loc":[-85.6436493,41.9413226],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152997":{"id":"n2189152997","loc":[-85.6436563,41.9417164],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152998":{"id":"n2189152998","loc":[-85.6435796,41.9417171],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152999":{"id":"n2189152999","loc":[-85.6435805,41.9417669],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153000":{"id":"n2189153000","loc":[-85.6438202,41.9414953],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153001":{"id":"n2189153001","loc":[-85.6438173,41.9413175],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153004":{"id":"n2189153004","loc":[-85.6432535,41.9418466],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153005":{"id":"n2189153005","loc":[-85.6433935,41.9418599],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153006":{"id":"n2189153006","loc":[-85.6434831,41.9418986],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153007":{"id":"n2189153007","loc":[-85.6435678,41.9419774],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153008":{"id":"n2189153008","loc":[-85.6435987,41.9420282],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153009":{"id":"n2189153009","loc":[-85.643438,41.9419573],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153010":{"id":"n2189153010","loc":[-85.6435284,41.9424676],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153011":{"id":"n2189153011","loc":[-85.6436207,41.9423631],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153012":{"id":"n2189153012","loc":[-85.6434957,41.9422973],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153013":{"id":"n2189153013","loc":[-85.6434457,41.9422458],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153014":{"id":"n2189153014","loc":[-85.6433976,41.9421772],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153015":{"id":"n2189153015","loc":[-85.6433861,41.9420785],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153016":{"id":"n2189153016","loc":[-85.6433765,41.9420313],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153017":{"id":"n2189153017","loc":[-85.6432207,41.9420284],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153018":{"id":"n2189153018","loc":[-85.6432245,41.9422759],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153019":{"id":"n2189153019","loc":[-85.6432649,41.9423474],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153020":{"id":"n2189153020","loc":[-85.6433226,41.9424132],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153021":{"id":"n2189153021","loc":[-85.6434111,41.9424704],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153022":{"id":"n2189153022","loc":[-85.6434591,41.9424347],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153025":{"id":"n2189153025","loc":[-85.6437669,41.9423073],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153026":{"id":"n2189153026","loc":[-85.6436611,41.942293],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153027":{"id":"n2189153027","loc":[-85.6435784,41.9422473],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153028":{"id":"n2189153028","loc":[-85.6435245,41.9421443],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153029":{"id":"n2189153029","loc":[-85.6435149,41.9420613],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153030":{"id":"n2189153030","loc":[-85.6433528,41.9419269],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153031":{"id":"n2189153031","loc":[-85.6432535,41.9419191],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153032":{"id":"n2189153032","loc":[-85.6430868,41.9419198],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153033":{"id":"n2189153033","loc":[-85.6434894,41.9420033],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153034":{"id":"n2189153034","loc":[-85.6432974,41.9419225],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153035":{"id":"n2189153035","loc":[-85.6433055,41.9421632],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153036":{"id":"n2189153036","loc":[-85.6433538,41.9422849],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153037":{"id":"n2189153037","loc":[-85.6434718,41.9423887],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153038":{"id":"n2189153038","loc":[-85.6436134,41.9422667],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153040":{"id":"n2189153040","loc":[-85.6438759,41.9414017],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153041":{"id":"n2189153041","loc":[-85.6438181,41.9413687],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153042":{"id":"n2189153042","loc":[-85.6436821,41.9413044],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153043":{"id":"n2189153043","loc":[-85.6435899,41.9412862],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153044":{"id":"n2189153044","loc":[-85.6433169,41.9417268],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153045":{"id":"n2189153045","loc":[-85.643301,41.9412859],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153046":{"id":"n2189153046","loc":[-85.6435531,41.9416981],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153047":{"id":"n2189153047","loc":[-85.6435427,41.9412863],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n185948706":{"id":"n185948706","loc":[-85.6369439,41.940122],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185949348":{"id":"n185949348","loc":[-85.640039,41.931135],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:09Z","tags":{}},"n185949870":{"id":"n185949870","loc":[-85.643195,41.949261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185954680":{"id":"n185954680","loc":[-85.6337802,41.9401143],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954784":{"id":"n185954784","loc":[-85.6487485,41.942527],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185958670":{"id":"n185958670","loc":[-85.637255,41.940104],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958672":{"id":"n185958672","loc":[-85.636996,41.941355],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:31Z","tags":{}},"n185960207":{"id":"n185960207","loc":[-85.634992,41.940118],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:09Z","tags":{}},"n185963163":{"id":"n185963163","loc":[-85.638831,41.93398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963165":{"id":"n185963165","loc":[-85.640073,41.933968],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963167":{"id":"n185963167","loc":[-85.641225,41.933972],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963168":{"id":"n185963168","loc":[-85.642386,41.933952],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185964695":{"id":"n185964695","loc":[-85.6443608,41.9425645],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185964697":{"id":"n185964697","loc":[-85.644384,41.939941],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:31Z","tags":{}},"n185964963":{"id":"n185964963","loc":[-85.6382347,41.9426146],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964965":{"id":"n185964965","loc":[-85.637022,41.942622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:40Z","tags":{}},"n185964967":{"id":"n185964967","loc":[-85.6363706,41.9426606],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964968":{"id":"n185964968","loc":[-85.6357988,41.9427748],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964969":{"id":"n185964969","loc":[-85.6355409,41.9428465],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964970":{"id":"n185964970","loc":[-85.6348729,41.9430443],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185966958":{"id":"n185966958","loc":[-85.641946,41.946413],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185966960":{"id":"n185966960","loc":[-85.643148,41.946389],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185967774":{"id":"n185967774","loc":[-85.641889,41.943852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967775":{"id":"n185967775","loc":[-85.641922,41.945121],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967776":{"id":"n185967776","loc":[-85.641927,41.947544],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967777":{"id":"n185967777","loc":[-85.641982,41.947622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185969289":{"id":"n185969289","loc":[-85.63928,41.929221],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:52Z","tags":{}},"n185969704":{"id":"n185969704","loc":[-85.6388186,41.9350099],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969706":{"id":"n185969706","loc":[-85.6400709,41.9349957],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969708":{"id":"n185969708","loc":[-85.6412214,41.9349827],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969710":{"id":"n185969710","loc":[-85.6423509,41.934974],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185970602":{"id":"n185970602","loc":[-85.641293,41.931817],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970604":{"id":"n185970604","loc":[-85.641258,41.932705],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970605":{"id":"n185970605","loc":[-85.641148,41.936984],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970606":{"id":"n185970606","loc":[-85.641112,41.938169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970906":{"id":"n185970906","loc":[-85.639454,41.943871],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:50Z","tags":{}},"n185970908":{"id":"n185970908","loc":[-85.6394635,41.9450504],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185970909":{"id":"n185970909","loc":[-85.6394914,41.9451911],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185971368":{"id":"n185971368","loc":[-85.635769,41.940122],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971978":{"id":"n185971978","loc":[-85.640003,41.936988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:14Z","tags":{}},"n185971980":{"id":"n185971980","loc":[-85.642299,41.936988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:14Z","tags":{}},"n185973633":{"id":"n185973633","loc":[-85.639023,41.92861],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973635":{"id":"n185973635","loc":[-85.639153,41.928969],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973637":{"id":"n185973637","loc":[-85.639213,41.929088],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973639":{"id":"n185973639","loc":[-85.63935,41.929396],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973641":{"id":"n185973641","loc":[-85.640143,41.931462],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973644":{"id":"n185973644","loc":[-85.64019,41.931788],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973646":{"id":"n185973646","loc":[-85.6401365,41.9327199],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185973648":{"id":"n185973648","loc":[-85.639983,41.938174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185974477":{"id":"n185974477","loc":[-85.638206,41.941331],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185975928":{"id":"n185975928","loc":[-85.640683,41.94513],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185975930":{"id":"n185975930","loc":[-85.643102,41.945103],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185976255":{"id":"n185976255","loc":[-85.642424,41.931817],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976257":{"id":"n185976257","loc":[-85.64242,41.932699],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976258":{"id":"n185976258","loc":[-85.6422621,41.9381489],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n185977452":{"id":"n185977452","loc":[-85.6457497,41.9398834],"version":"3","changeset":"5841745","user":"themps","uid":"196173","visible":"true","timestamp":"2010-09-22T00:20:34Z","tags":{}},"n185978772":{"id":"n185978772","loc":[-85.646656,41.939869],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185981472":{"id":"n185981472","loc":[-85.6388962,41.9321266],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981474":{"id":"n185981474","loc":[-85.6388769,41.9327334],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981476":{"id":"n185981476","loc":[-85.638829,41.934116],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981478":{"id":"n185981478","loc":[-85.63876,41.937002],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981480":{"id":"n185981480","loc":[-85.638682,41.93819],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981999":{"id":"n185981999","loc":[-85.638194,41.9400866],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n185982001":{"id":"n185982001","loc":[-85.646302,41.93988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:26Z","tags":{}},"n185982877":{"id":"n185982877","loc":[-85.640676,41.943867],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:54Z","tags":{}},"n185982879":{"id":"n185982879","loc":[-85.640734,41.945887],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:54Z","tags":{}},"n185985823":{"id":"n185985823","loc":[-85.643106,41.943841],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185985824":{"id":"n185985824","loc":[-85.643145,41.947641],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185985825":{"id":"n185985825","loc":[-85.643219,41.950829],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n1475301385":{"id":"n1475301385","loc":[-85.6360612,41.9427042],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n1475301397":{"id":"n1475301397","loc":[-85.6366651,41.9426328],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n2139795811":{"id":"n2139795811","loc":[-85.6469154,41.9425427],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795830":{"id":"n2139795830","loc":[-85.6443194,41.9399444],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139795834":{"id":"n2139795834","loc":[-85.6453506,41.9399002],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139795837":{"id":"n2139795837","loc":[-85.645806,41.9398831],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139858932":{"id":"n2139858932","loc":[-85.6351721,41.9429557],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2140019000":{"id":"n2140019000","loc":[-85.6359935,41.9427224],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2165942817":{"id":"n2165942817","loc":[-85.6442017,41.9414993],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2165942820":{"id":"n2165942820","loc":[-85.6442107,41.9421159],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2189152990":{"id":"n2189152990","loc":[-85.6442328,41.942404],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:05Z","tags":{}},"n2189152991":{"id":"n2189152991","loc":[-85.6442309,41.9422229],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153002":{"id":"n2189153002","loc":[-85.6441329,41.9413147],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153003":{"id":"n2189153003","loc":[-85.6441357,41.9414925],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153023":{"id":"n2189153023","loc":[-85.6443453,41.9423074],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153024":{"id":"n2189153024","loc":[-85.6442318,41.9423045],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153039":{"id":"n2189153039","loc":[-85.6441343,41.9414025],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"w208643102":{"id":"w208643102","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153034","n2189153035","n2189153036","n2189153037","n2189153038"]},"w17966942":{"id":"w17966942","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:04Z","tags":{"highway":"residential","name":"Millard St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Millard","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312476:15312477:15312478:15326070:15326071:15329003:15329004:15312479:15312480:15312483:15326956:15326957:15312485:15312486:15322600:15325988","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185954680","n185960207","n185971368","n185948706","n185958670","n185981999","n185981481","n185981482","n185973650","n185973659","n185970607","n185976259","n185976261","n2139795830","n185964697","n2139795834","n185977452","n2139795837","n185982001","n185978772"]},"w208643105":{"id":"w208643105","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153046","n2189153047"]},"w208631637":{"id":"w208631637","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046014","n2189046016","n2189046018","n2189046021","n2189046022","n2189046025","n2189046014"]},"w208643096":{"id":"w208643096","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes","fee":"no"},"nodes":["n2189152990","n2189153024","n2189152991","n2189152992","n2189153025","n2189152993","n2189152990"]},"w208631656":{"id":"w208631656","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046134","n2189046135","n2189046137","n2189046138","n2189046134"]},"w204003417":{"id":"w204003417","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"area":"yes","building":"school"},"nodes":["n2140155811","n2140155814","n2140155816","n2140155818","n2140155821","n2140155823","n2140155825","n2140155827","n2140155811"]},"w208631654":{"id":"w208631654","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046127","n2189046128","n2189046130","n2189046131","n2189046132","n2189046133","n2189046127"]},"w17966327":{"id":"w17966327","version":"3","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{"highway":"residential","name":"S Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185976261","n2140155839","n2140155834","n185974481","n2189153032","n185964959"]},"w41785752":{"id":"w41785752","version":"10","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no","access":"yes"},"nodes":["n185954784","n2139795811","n185964695","n185964959","n185964960","n185964961","n185964962","n185964963","n185964965","n1475301397","n185964967","n1475301385","n2140019000","n185964968","n185964969","n2139858932","n185964970"]},"w203841842":{"id":"w203841842","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"playground"},"nodes":["n2138493848","n2138493849","n2138493850","n2138493851","n2138493852","n2138493853","n2138493854","n2138493855","n2138493856","n2138493848"]},"w208643103":{"id":"w208643103","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service"},"nodes":["n2189153039","n2189153040","n2189153041","n2189153042","n2189153043","n2189153047","n2189153045","n185974481"]},"w208643098":{"id":"w208643098","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153000","n2189153041","n2189153001","n2189153002","n2189153039","n2189153003","n2189153000"]},"w208631646":{"id":"w208631646","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046067","n2189046069","n2189046070","n2189046072","n2189046067"]},"w208631653":{"id":"w208631653","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046119","n2189046120","n2189046121","n2189046122","n2189046123","n2189046124","n2189046125","n2189046126","n2189046119"]},"w17966041":{"id":"w17966041","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:50Z","tags":{"highway":"residential","name":"S Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312474:15312448","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185973659","n185973660","n185964961"]},"w208631645":{"id":"w208631645","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046060","n2189046061","n2189046063","n2189046065","n2189046060"]},"w206803397":{"id":"w206803397","version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:25Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168510551","n2168510552","n2168510553","n2168510554","n2168510555","n2168510556","n2168510557","n2168510558","n2168510551"]},"w17965792":{"id":"w17965792","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:10Z","tags":{"highway":"residential","name":"N Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313197:15312414:15312395","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964962","n185970906","n185970908","n185970909"]},"w208631651":{"id":"w208631651","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046112","n2189046113","n2189046115","n2189046116","n2189046117","n2189046118","n2189046112"]},"w208631643":{"id":"w208631643","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046053","n2189046054","n2189046055","n2189046056","n2189046058","n2189046059","n2189046053"]},"w17966878":{"id":"w17966878","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:48:03Z","tags":{"highway":"residential","name":"S Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312508:15312529:15312553:15312597:15328883:15338803","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981472","n185981474","n185963163","n185981476","n185969704","n185981478","n185981480","n185981481"]},"w17966102":{"id":"w17966102","version":"2","changeset":"14896694","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:01:36Z","tags":{"highway":"residential","name":"South St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"South","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312446","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958672","n185974477","n185974479","n185973660","n185970614"]},"w208631660":{"id":"w208631660","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046145","n2189046146","n2189046147","n2189046148","n2189046149","n2189046150","n2189046152","n2189046153","n2189046145"]},"w208643101":{"id":"w208643101","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service"},"nodes":["n2189153023","n2189153024","n2189153025","n2189153026","n2189153038","n2189153027","n2189153028","n2189153029","n2189153033","n2189153009","n2189153030","n2189153034","n2189153031","n2189153032"]},"w204000205":{"id":"w204000205","version":"2","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:19Z","tags":{"highway":"residential","name":"South St","oneway":"yes","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"South","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312446","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185974481","n2140155851","n185970614"]},"w203841841":{"id":"w203841841","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"pitch","pitch":"basketball"},"nodes":["n2138493844","n2138493845","n2138493846","n2138493847","n2138493844"]},"w17965444":{"id":"w17965444","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:37:03Z","tags":{"highway":"residential","name":"N Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312348:15312365:15312422:15312392","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964960","n185967774","n185967775","n185966958","n185967776","n185967777"]},"w208631648":{"id":"w208631648","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046074","n2189046075","n2189046077","n2189046079","n2189046082","n2189046083","n2189046085","n2189046087","n2189046089","n2189046090","n2189046092","n2189046094","n2189046096","n2189046097","n2189046099","n2189046103","n2189046074"]},"w208643100":{"id":"w208643100","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153010","n2189153011","n2189153012","n2189153013","n2189153014","n2189153015","n2189153016","n2189153017","n2189153018","n2189153019","n2189153020","n2189153021","n2189153022","n2189153010"]},"w17965749":{"id":"w17965749","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:28Z","tags":{"highway":"residential","name":"S Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312445","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970614","n185970616","n185964960"]},"w206574482":{"id":"w206574482","version":"2","changeset":"15128027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-22T20:03:31Z","tags":{"addr:state":"MI","amenity":"library","area":"yes","building":"yes","ele":"249","gnis:county_name":"St. Joseph","gnis:feature_id":"2418162","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"Three Rivers Public Library","source":"USGS Geonames"},"nodes":["n2165942817","n2165942818","n2165942819","n2165942820","n2165942817"]},"w208643097":{"id":"w208643097","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189152994","n2189152995","n2189152996","n2189152997","n2189152998","n2189152999","n2189152994"]},"w17966879":{"id":"w17966879","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:48:03Z","tags":{"highway":"residential","name":"S Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312475:15312449","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981482","n185974479","n185964962"]},"w17966325":{"id":"w17966325","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:43:58Z","tags":{"highway":"residential","name":"S Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15330300:15312522:15312547:15330299:15312603:15312571:15331740","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185976255","n185976257","n185963168","n185969710","n185971980","n185976258","n185954700","n185976259"]},"w17967390":{"id":"w17967390","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:27Z","tags":{"highway":"residential","name":"N Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312300","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185964959","n185985823","n185975930","n185966960","n185985824","n185949870","n185985825"]},"w208631635":{"id":"w208631635","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046007","n2189046009","n2189046011","n2189046012","n2189046007"]},"w208643099":{"id":"w208643099","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153031","n2189153004","n2189153005","n2189153006","n2189153007","n2189153008","n2189153029","n2189153033","n2189153009","n2189153030","n2189153031"]},"w208631658":{"id":"w208631658","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046139","n2189046140","n2189046141","n2189046142","n2189046143","n2189046144","n2189046139"]},"w208643104":{"id":"w208643104","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153044","n2189153045"]},"w17966039":{"id":"w17966039","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:49Z","tags":{"highway":"residential","name":"S Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312526:15312511:15312550:15312601:15312998:15312626:15312574:15328327:15328328:15313210","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185973633","n185973635","n185973637","n185969289","n185973639","n185949348","n185973641","n185973644","n185973646","n185963165","n185969706","n185971978","n185973648","n185973650"]},"w204003420":{"id":"w204003420","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2140155840","n2140155842","n2140155844","n2140155845","n2140155847","n2140155849","n2140155854","n2140155840"]},"w204003419":{"id":"w204003419","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"highway":"service"},"nodes":["n2140155834","n2140155835","n2140155837","n2140155839"]},"w204003418":{"id":"w204003418","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"amenity":"school","area":"yes","name":"Andrews Elementary School"},"nodes":["n2140155828","n2140155829","n2140155830","n2140155831","n2140155832","n2140155833","n2140155828"]},"w17965747":{"id":"w17965747","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:27Z","tags":{"highway":"residential","name":"S Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312509:15312524:15312549:15312605:15329008:15312572","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970602","n185970604","n185963167","n185969708","n185970605","n185970606","n185970607"]},"w17967073":{"id":"w17967073","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:07Z","tags":{"highway":"residential","name":"N Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313196:15312424:15312394","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964961","n185982877","n185975928","n185982879"]},"w204003421":{"id":"w204003421","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2140155851","n2140155852","n2140155854","n2140155856"]},"r1943857":{"id":"r1943857","version":"2","changeset":"13612265","user":"migurski","uid":"8287","visible":"true","timestamp":"2012-10-24T04:10:54Z","tags":{"is_in:state":"MI","modifier":"Business","name":"US 131 Business (Three Rivers, MI)","network":"US:US","ref":"131","route":"road","type":"route"},"members":[{"id":"w17966509","type":"way","role":"forward"},{"id":"w143497377","type":"way","role":""},{"id":"w134150811","type":"way","role":""},{"id":"w134150800","type":"way","role":""},{"id":"w134150789","type":"way","role":""},{"id":"w134150795","type":"way","role":""},{"id":"w41785752","type":"way","role":""},{"id":"w17965146","type":"way","role":"forward"},{"id":"w17964031","type":"way","role":"forward"}]},"r270277":{"id":"r270277","version":"21","changeset":"15347356","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T03:41:02Z","tags":{"network":"US:MI","ref":"60","route":"road","state_id":"MI","type":"route","url":"http://en.wikipedia.org/wiki/M-60_%28Michigan_highway%29"},"members":[{"id":"w17751087","type":"way","role":"east"},{"id":"w117148312","type":"way","role":"east"},{"id":"w40942155","type":"way","role":"west"},{"id":"w17751017","type":"way","role":""},{"id":"w17751083","type":"way","role":""},{"id":"w17747780","type":"way","role":""},{"id":"w41068082","type":"way","role":""},{"id":"w197025212","type":"way","role":""},{"id":"w17743874","type":"way","role":""},{"id":"w17751044","type":"way","role":""},{"id":"w17752167","type":"way","role":""},{"id":"w17751089","type":"way","role":""},{"id":"w17743879","type":"way","role":""},{"id":"w17751064","type":"way","role":""},{"id":"w197057073","type":"way","role":""},{"id":"w167699963","type":"way","role":""},{"id":"w167699972","type":"way","role":""},{"id":"w17967584","type":"way","role":""},{"id":"w167699964","type":"way","role":""},{"id":"w17967582","type":"way","role":"west"},{"id":"w41260270","type":"way","role":"west"},{"id":"w17965146","type":"way","role":"west"},{"id":"w41785752","type":"way","role":""},{"id":"w134150795","type":"way","role":""},{"id":"w134150789","type":"way","role":""},{"id":"w134150800","type":"way","role":""},{"id":"w134150811","type":"way","role":""},{"id":"w134150836","type":"way","role":""},{"id":"w134150802","type":"way","role":""},{"id":"w41074896","type":"way","role":""},{"id":"w17966773","type":"way","role":""},{"id":"w17967415","type":"way","role":""},{"id":"w41074899","type":"way","role":""},{"id":"w17967581","type":"way","role":""},{"id":"w41074902","type":"way","role":""},{"id":"w41074906","type":"way","role":""},{"id":"w209707997","type":"way","role":""},{"id":"w209707998","type":"way","role":""},{"id":"w17964798","type":"way","role":""},{"id":"w17966034","type":"way","role":""},{"id":"w17967593","type":"way","role":""},{"id":"w41074888","type":"way","role":""},{"id":"w17733772","type":"way","role":""},{"id":"w41074813","type":"way","role":""},{"id":"w17742213","type":"way","role":""},{"id":"w17746863","type":"way","role":""},{"id":"w17745772","type":"way","role":""},{"id":"w17742222","type":"way","role":""},{"id":"w17745922","type":"way","role":""},{"id":"w17742198","type":"way","role":""},{"id":"w17747675","type":"way","role":""},{"id":"w17739927","type":"way","role":""},{"id":"w17745708","type":"way","role":""},{"id":"w41006323","type":"way","role":""},{"id":"w17744233","type":"way","role":""},{"id":"w17739436","type":"way","role":""},{"id":"w17742201","type":"way","role":""},{"id":"w151418616","type":"way","role":""},{"id":"w17750062","type":"way","role":""},{"id":"w17742227","type":"way","role":"east"},{"id":"w41006348","type":"way","role":"east"},{"id":"w41260984","type":"way","role":""},{"id":"w17832427","type":"way","role":""},{"id":"w17838408","type":"way","role":""},{"id":"w17835846","type":"way","role":""},{"id":"w17832923","type":"way","role":""},{"id":"w17839388","type":"way","role":""},{"id":"w17838390","type":"way","role":""},{"id":"w17831272","type":"way","role":""},{"id":"w17828581","type":"way","role":""},{"id":"w38240686","type":"way","role":""},{"id":"w17838405","type":"way","role":"east"},{"id":"w123323711","type":"way","role":"east"},{"id":"w17830167","type":"way","role":"east"},{"id":"w99011909","type":"way","role":"east"},{"id":"w41911361","type":"way","role":"east"},{"id":"w41911355","type":"way","role":"east"},{"id":"w41911356","type":"way","role":"east"},{"id":"w117148326","type":"way","role":"west"},{"id":"w41911352","type":"way","role":"west"},{"id":"w41911353","type":"way","role":"west"},{"id":"w41911354","type":"way","role":"west"},{"id":"w41911360","type":"way","role":"west"},{"id":"w38240676","type":"way","role":"west"},{"id":"w123323710","type":"way","role":"west"},{"id":"w41260271","type":"way","role":"east"},{"id":"w41260273","type":"way","role":"east"},{"id":"w17964031","type":"way","role":"east"},{"id":"w41006344","type":"way","role":"west"},{"id":"w41006351","type":"way","role":"west"}]},"n367813436":{"id":"n367813436","loc":[-85.63605205663384,41.94305506683346],"version":"2","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"addr:state":"MI","amenity":"fire_station","ele":"245","gnis:county_name":"St. Joseph","gnis:feature_id":"2417894","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"Three Rivers Fire Department","source":"USGS Geonames"}},"n185948708":{"id":"n185948708","loc":[-85.6369828,41.9408789],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185948710":{"id":"n185948710","loc":[-85.6370184,41.9411346],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185954691":{"id":"n185954691","loc":[-85.634476,41.941475],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:32Z","tags":{}},"n185954692":{"id":"n185954692","loc":[-85.635008,41.941846],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:32Z","tags":{}},"n185954693":{"id":"n185954693","loc":[-85.635362,41.941962],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185954695":{"id":"n185954695","loc":[-85.63578,41.941978],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185972903":{"id":"n185972903","loc":[-85.63295,41.9430062],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185964971":{"id":"n185964971","loc":[-85.6346811,41.9431023],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n1819805854":{"id":"n1819805854","loc":[-85.6331275,41.9404837],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805918":{"id":"n1819805918","loc":[-85.6331168,41.942798],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805762":{"id":"n1819805762","loc":[-85.6333034,41.9424123],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819805907":{"id":"n1819805907","loc":[-85.6334819,41.9419121],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819805915":{"id":"n1819805915","loc":[-85.6334554,41.9413588],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819848888":{"id":"n1819848888","loc":[-85.6331625,41.942679],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848930":{"id":"n1819848930","loc":[-85.6338684,41.9431252],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819858505":{"id":"n1819858505","loc":[-85.6346782,41.9429092],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858507":{"id":"n1819858507","loc":[-85.6339003,41.9414534],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858508":{"id":"n1819858508","loc":[-85.6345709,41.9427742],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858509":{"id":"n1819858509","loc":[-85.63419,41.9417322],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858511":{"id":"n1819858511","loc":[-85.6340666,41.9415652],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858512":{"id":"n1819858512","loc":[-85.6343295,41.9423027],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858514":{"id":"n1819858514","loc":[-85.6343241,41.942207],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858521":{"id":"n1819858521","loc":[-85.633391,41.941231],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858528":{"id":"n1819858528","loc":[-85.6343027,41.9419716],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185954683":{"id":"n185954683","loc":[-85.6335412,41.940147],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954685":{"id":"n185954685","loc":[-85.6334296,41.9403023],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954687":{"id":"n185954687","loc":[-85.6333988,41.9404704],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954689":{"id":"n185954689","loc":[-85.6335511,41.9410225],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954690":{"id":"n185954690","loc":[-85.6336721,41.9411669],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n1820938802":{"id":"n1820938802","loc":[-85.6330671,41.941845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1821006702":{"id":"n1821006702","loc":[-85.6344047,41.9395496],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n2130304133":{"id":"n2130304133","loc":[-85.6349025,41.9427659],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304136":{"id":"n2130304136","loc":[-85.6346027,41.9422017],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304138":{"id":"n2130304138","loc":[-85.6348577,41.9421517],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304140":{"id":"n2130304140","loc":[-85.6348419,41.9422694],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304142":{"id":"n2130304142","loc":[-85.6349071,41.9423135],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304144":{"id":"n2130304144","loc":[-85.6350495,41.9423312],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304146":{"id":"n2130304146","loc":[-85.6351009,41.9422812],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304147":{"id":"n2130304147","loc":[-85.6351227,41.9421532],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304148":{"id":"n2130304148","loc":[-85.635526,41.9421547],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304149":{"id":"n2130304149","loc":[-85.6355339,41.9425768],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304150":{"id":"n2130304150","loc":[-85.6351582,41.9426562],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304151":{"id":"n2130304151","loc":[-85.6351207,41.9427032],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2138493807":{"id":"n2138493807","loc":[-85.6350923,41.9415216],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493808":{"id":"n2138493808","loc":[-85.6353603,41.9411061],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493809":{"id":"n2138493809","loc":[-85.6354421,41.9410942],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493810":{"id":"n2138493810","loc":[-85.6355079,41.9411044],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493811":{"id":"n2138493811","loc":[-85.6355693,41.9411246],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493812":{"id":"n2138493812","loc":[-85.6355829,41.9411061],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493813":{"id":"n2138493813","loc":[-85.6355624,41.9409777],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493814":{"id":"n2138493814","loc":[-85.6355011,41.9409152],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493815":{"id":"n2138493815","loc":[-85.635383,41.9409219],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493816":{"id":"n2138493816","loc":[-85.635299,41.9409658],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493817":{"id":"n2138493817","loc":[-85.6351695,41.941204],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493818":{"id":"n2138493818","loc":[-85.6348879,41.9415166],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493819":{"id":"n2138493819","loc":[-85.634897,41.9415757],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493820":{"id":"n2138493820","loc":[-85.6349606,41.9416399],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493821":{"id":"n2138493821","loc":[-85.6350219,41.9416669],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493822":{"id":"n2138493822","loc":[-85.6351241,41.9416314],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493823":{"id":"n2138493823","loc":[-85.6350855,41.9415622],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493824":{"id":"n2138493824","loc":[-85.6350401,41.9413603],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493825":{"id":"n2138493825","loc":[-85.6352206,41.9410765],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493826":{"id":"n2138493826","loc":[-85.6343865,41.9415594],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493827":{"id":"n2138493827","loc":[-85.6343506,41.9415873],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493828":{"id":"n2138493828","loc":[-85.6344158,41.9417557],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493829":{"id":"n2138493829","loc":[-85.6344614,41.9417968],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493830":{"id":"n2138493830","loc":[-85.6345005,41.9418186],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493831":{"id":"n2138493831","loc":[-85.6345965,41.9418162],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493832":{"id":"n2138493832","loc":[-85.6347317,41.9417242],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493833":{"id":"n2138493833","loc":[-85.6346722,41.941775],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2139858909":{"id":"n2139858909","loc":[-85.633403,41.9391006],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858910":{"id":"n2139858910","loc":[-85.6332973,41.9393967],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858911":{"id":"n2139858911","loc":[-85.633205,41.9396742],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858912":{"id":"n2139858912","loc":[-85.6332203,41.9397772],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858913":{"id":"n2139858913","loc":[-85.6333453,41.939936],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858914":{"id":"n2139858914","loc":[-85.6333761,41.9400018],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858915":{"id":"n2139858915","loc":[-85.63328,41.9402249],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858916":{"id":"n2139858916","loc":[-85.6332357,41.9403523],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858917":{"id":"n2139858917","loc":[-85.6332838,41.9405831],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858918":{"id":"n2139858918","loc":[-85.6333643,41.9408744],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858919":{"id":"n2139858919","loc":[-85.6334394,41.9410519],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858920":{"id":"n2139858920","loc":[-85.6335815,41.9411717],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858921":{"id":"n2139858921","loc":[-85.6337478,41.9412734],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858922":{"id":"n2139858922","loc":[-85.6343174,41.9415268],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858923":{"id":"n2139858923","loc":[-85.6343886,41.9417397],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858924":{"id":"n2139858924","loc":[-85.6344407,41.9418015],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858925":{"id":"n2139858925","loc":[-85.6345139,41.9418366],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858926":{"id":"n2139858926","loc":[-85.6344846,41.942005],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858927":{"id":"n2139858927","loc":[-85.6345775,41.9422218],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858928":{"id":"n2139858928","loc":[-85.6348771,41.9427814],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858929":{"id":"n2139858929","loc":[-85.6349487,41.9427995],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858930":{"id":"n2139858930","loc":[-85.6350415,41.9427874],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858931":{"id":"n2139858931","loc":[-85.6351246,41.9428589],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858978":{"id":"n2139858978","loc":[-85.6349658,41.9431481],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858979":{"id":"n2139858979","loc":[-85.6350081,41.9431287],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858980":{"id":"n2139858980","loc":[-85.6349967,41.9430997],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858981":{"id":"n2139858981","loc":[-85.6352158,41.9430352],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858982":{"id":"n2139858982","loc":[-85.6348174,41.94267],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858983":{"id":"n2139858983","loc":[-85.6346142,41.9425989],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858984":{"id":"n2139858984","loc":[-85.6344938,41.9423809],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858985":{"id":"n2139858985","loc":[-85.6344856,41.9422997],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139870380":{"id":"n2139870380","loc":[-85.6346707,41.9417955],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870381":{"id":"n2139870381","loc":[-85.6345949,41.9418311],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870382":{"id":"n2139870382","loc":[-85.6343322,41.9418659],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870383":{"id":"n2139870383","loc":[-85.6342072,41.941885],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870384":{"id":"n2139870384","loc":[-85.6341325,41.9418919],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870385":{"id":"n2139870385","loc":[-85.6341314,41.9422028],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870386":{"id":"n2139870386","loc":[-85.6340472,41.9423271],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870387":{"id":"n2139870387","loc":[-85.6342185,41.9427933],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870388":{"id":"n2139870388","loc":[-85.6340605,41.9423924],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870389":{"id":"n2139870389","loc":[-85.6339889,41.9424069],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870390":{"id":"n2139870390","loc":[-85.633971,41.942356],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870391":{"id":"n2139870391","loc":[-85.63361,41.9424235],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870392":{"id":"n2139870392","loc":[-85.6337137,41.9426819],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870393":{"id":"n2139870393","loc":[-85.6336977,41.9428632],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870394":{"id":"n2139870394","loc":[-85.6338823,41.9428647],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870395":{"id":"n2139870395","loc":[-85.6339412,41.9430069],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870396":{"id":"n2139870396","loc":[-85.6338873,41.9430353],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870397":{"id":"n2139870397","loc":[-85.6337676,41.942815],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870398":{"id":"n2139870398","loc":[-85.6336822,41.9423505],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870399":{"id":"n2139870399","loc":[-85.634037,41.9422725],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870400":{"id":"n2139870400","loc":[-85.6340294,41.9422518],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870401":{"id":"n2139870401","loc":[-85.6336726,41.9423312],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870402":{"id":"n2139870402","loc":[-85.6342188,41.9425715],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870403":{"id":"n2139870403","loc":[-85.6342524,41.942565],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870404":{"id":"n2139870404","loc":[-85.6341438,41.942299],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870405":{"id":"n2139870405","loc":[-85.6341149,41.9423061],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870407":{"id":"n2139870407","loc":[-85.6340846,41.9431458],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870408":{"id":"n2139870408","loc":[-85.6339436,41.9429032],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870409":{"id":"n2139870409","loc":[-85.6343143,41.9428207],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870410":{"id":"n2139870410","loc":[-85.6343507,41.94277],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870411":{"id":"n2139870411","loc":[-85.6341527,41.942254],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870412":{"id":"n2139870412","loc":[-85.6340925,41.9422199],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870413":{"id":"n2139870413","loc":[-85.6335435,41.9423433],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870414":{"id":"n2139870414","loc":[-85.6335023,41.9423975],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870415":{"id":"n2139870415","loc":[-85.6335086,41.9424552],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870416":{"id":"n2139870416","loc":[-85.6336296,41.942665],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870417":{"id":"n2139870417","loc":[-85.6341396,41.9428596],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870418":{"id":"n2139870418","loc":[-85.6339701,41.9424487],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870419":{"id":"n2139870419","loc":[-85.6335514,41.9425294],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870420":{"id":"n2139870420","loc":[-85.6337406,41.9424929],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870421":{"id":"n2139870421","loc":[-85.6338939,41.9428687],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870422":{"id":"n2139870422","loc":[-85.6341323,41.9419538],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870423":{"id":"n2139870423","loc":[-85.6340321,41.9420376],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870424":{"id":"n2139870424","loc":[-85.6337648,41.942238],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870425":{"id":"n2139870425","loc":[-85.6337604,41.9422685],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870426":{"id":"n2139870426","loc":[-85.6337682,41.9422928],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870427":{"id":"n2139870427","loc":[-85.6338086,41.9423862],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870428":{"id":"n2139870428","loc":[-85.6349465,41.9416631],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870429":{"id":"n2139870429","loc":[-85.6351097,41.9416973],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870430":{"id":"n2139870430","loc":[-85.6353371,41.9416798],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870431":{"id":"n2139870431","loc":[-85.6349627,41.9422506],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870432":{"id":"n2139870432","loc":[-85.634979,41.9421815],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870433":{"id":"n2139870433","loc":[-85.634885,41.9421679],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870434":{"id":"n2139870434","loc":[-85.6348689,41.9422377],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870435":{"id":"n2139870435","loc":[-85.6349779,41.9419486],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870436":{"id":"n2139870436","loc":[-85.6349505,41.9418933],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870437":{"id":"n2139870437","loc":[-85.6347327,41.9419505],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870438":{"id":"n2139870438","loc":[-85.6347614,41.9420087],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870439":{"id":"n2139870439","loc":[-85.6351889,41.9416912],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870440":{"id":"n2139870440","loc":[-85.6351092,41.9418426],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870441":{"id":"n2139870441","loc":[-85.635086,41.9419659],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870442":{"id":"n2139870442","loc":[-85.6350584,41.9421466],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870443":{"id":"n2139870443","loc":[-85.6350993,41.9421606],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870444":{"id":"n2139870444","loc":[-85.6350993,41.9422132],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870445":{"id":"n2139870445","loc":[-85.6350794,41.9422855],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870446":{"id":"n2139870446","loc":[-85.6350474,41.9423159],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870447":{"id":"n2139870447","loc":[-85.6349251,41.9422998],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870448":{"id":"n2139870448","loc":[-85.634911,41.9422755],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870449":{"id":"n2139870449","loc":[-85.6349157,41.9422553],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870450":{"id":"n2139870450","loc":[-85.6347213,41.9419324],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870451":{"id":"n2139870451","loc":[-85.6349535,41.9418771],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870452":{"id":"n2139870452","loc":[-85.6350135,41.9419421],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870453":{"id":"n2139870453","loc":[-85.6348584,41.9418997],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870454":{"id":"n2139870454","loc":[-85.6348113,41.9418101],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870455":{"id":"n2139870455","loc":[-85.6347306,41.9417449],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870456":{"id":"n2139870456","loc":[-85.6349123,41.941776],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870457":{"id":"n2139870457","loc":[-85.6349423,41.9421448],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870458":{"id":"n2139870458","loc":[-85.6349436,41.9420652],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870459":{"id":"n2139870459","loc":[-85.6349136,41.9419963],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870460":{"id":"n2139870460","loc":[-85.6349814,41.9419789],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139989328":{"id":"n2139989328","loc":[-85.6334188,41.9421725],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989330":{"id":"n2139989330","loc":[-85.6335087,41.9416308],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989335":{"id":"n2139989335","loc":[-85.6336856,41.9429371],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989337":{"id":"n2139989337","loc":[-85.6333713,41.9427217],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989339":{"id":"n2139989339","loc":[-85.6332912,41.9425383],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989341":{"id":"n2139989341","loc":[-85.6339369,41.9409198],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989344":{"id":"n2139989344","loc":[-85.634097,41.9409469],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989346":{"id":"n2139989346","loc":[-85.634137,41.9412852],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989348":{"id":"n2139989348","loc":[-85.6344536,41.9414151],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989350":{"id":"n2139989350","loc":[-85.6350794,41.9412392],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989351":{"id":"n2139989351","loc":[-85.6352541,41.9409387],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989353":{"id":"n2139989353","loc":[-85.6357198,41.9408007],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989355":{"id":"n2139989355","loc":[-85.6357235,41.9427088],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989357":{"id":"n2139989357","loc":[-85.6337119,41.9421256],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989359":{"id":"n2139989359","loc":[-85.6336913,41.9420655],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989360":{"id":"n2139989360","loc":[-85.633582,41.9420867],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989362":{"id":"n2139989362","loc":[-85.6336058,41.9421491],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989364":{"id":"n2139989364","loc":[-85.6339685,41.9410995],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989366":{"id":"n2139989366","loc":[-85.6339067,41.9411383],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989368":{"id":"n2139989368","loc":[-85.6339685,41.9411972],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989370":{"id":"n2139989370","loc":[-85.6340398,41.9411619],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139870379":{"id":"n2139870379","loc":[-85.6348391,41.9416651],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2140006363":{"id":"n2140006363","loc":[-85.6353144,41.9430345],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006364":{"id":"n2140006364","loc":[-85.6349191,41.9431422],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140018997":{"id":"n2140018997","loc":[-85.63645945147184,41.942986488012565],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"amenity":"townhall","name":"Three Rivers City Hall"}},"n2140018998":{"id":"n2140018998","loc":[-85.6370319,41.9427919],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2140018999":{"id":"n2140018999","loc":[-85.6360687,41.9427808],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2199856288":{"id":"n2199856288","loc":[-85.6344968,41.9407307],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856289":{"id":"n2199856289","loc":[-85.634492,41.9406036],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856290":{"id":"n2199856290","loc":[-85.634891,41.9406001],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856291":{"id":"n2199856291","loc":[-85.6348894,41.9405288],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856292":{"id":"n2199856292","loc":[-85.6349166,41.94053],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856293":{"id":"n2199856293","loc":[-85.6349166,41.9404956],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856294":{"id":"n2199856294","loc":[-85.6350219,41.9404956],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856295":{"id":"n2199856295","loc":[-85.6350251,41.94053],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856296":{"id":"n2199856296","loc":[-85.6350538,41.9405288],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856297":{"id":"n2199856297","loc":[-85.6350602,41.94079],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856298":{"id":"n2199856298","loc":[-85.6351703,41.9407912],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856299":{"id":"n2199856299","loc":[-85.6351688,41.9409171],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856300":{"id":"n2199856300","loc":[-85.6347889,41.9409135],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856301":{"id":"n2199856301","loc":[-85.6347921,41.94079],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856302":{"id":"n2199856302","loc":[-85.6348942,41.9407888],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856303":{"id":"n2199856303","loc":[-85.6348926,41.9407283],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n185951869":{"id":"n185951869","loc":[-85.6387639,41.957288],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185958643":{"id":"n185958643","loc":[-85.636746,41.929221],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958645":{"id":"n185958645","loc":[-85.636791,41.929363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958647":{"id":"n185958647","loc":[-85.6375975,41.9314987],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185958649":{"id":"n185958649","loc":[-85.637669,41.931667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958651":{"id":"n185958651","loc":[-85.637728,41.931901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958653":{"id":"n185958653","loc":[-85.637724,41.932187],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958656":{"id":"n185958656","loc":[-85.637732,41.932761],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958658":{"id":"n185958658","loc":[-85.637688,41.93398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958660":{"id":"n185958660","loc":[-85.637685,41.934223],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958662":{"id":"n185958662","loc":[-85.6376468,41.9350232],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185958664":{"id":"n185958664","loc":[-85.637564,41.937028],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958666":{"id":"n185958666","loc":[-85.637458,41.938197],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958668":{"id":"n185958668","loc":[-85.637424,41.938692],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185964972":{"id":"n185964972","loc":[-85.6341901,41.9432732],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185971361":{"id":"n185971361","loc":[-85.635762,41.938208],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971364":{"id":"n185971364","loc":[-85.635732,41.9384],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971366":{"id":"n185971366","loc":[-85.635736,41.938697],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185972775":{"id":"n185972775","loc":[-85.635638,42.070357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972777":{"id":"n185972777","loc":[-85.635724,42.069929],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972779":{"id":"n185972779","loc":[-85.635804,42.069248],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972781":{"id":"n185972781","loc":[-85.635869,42.068361],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972783":{"id":"n185972783","loc":[-85.635883,42.067582],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972785":{"id":"n185972785","loc":[-85.635875,42.067114],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972787":{"id":"n185972787","loc":[-85.635778,42.065359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972788":{"id":"n185972788","loc":[-85.635728,42.063416],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972789":{"id":"n185972789","loc":[-85.635665,42.062491],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972790":{"id":"n185972790","loc":[-85.635617,42.061928],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972791":{"id":"n185972791","loc":[-85.635614,42.061898],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972793":{"id":"n185972793","loc":[-85.635379,42.060288],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972795":{"id":"n185972795","loc":[-85.635092,42.05799],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972797":{"id":"n185972797","loc":[-85.634843,42.055781],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972798":{"id":"n185972798","loc":[-85.634817,42.055549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972800":{"id":"n185972800","loc":[-85.634708,42.053942],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972802":{"id":"n185972802","loc":[-85.634447,42.051809],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972805":{"id":"n185972805","loc":[-85.634241,42.04946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972807":{"id":"n185972807","loc":[-85.633787,42.045926],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972809":{"id":"n185972809","loc":[-85.633811,42.045645],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972811":{"id":"n185972811","loc":[-85.63373,42.043626],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972813":{"id":"n185972813","loc":[-85.633698,42.042184],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972814":{"id":"n185972814","loc":[-85.63369,42.04181],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972815":{"id":"n185972815","loc":[-85.633681,42.040714],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972816":{"id":"n185972816","loc":[-85.633571,42.036322],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972817":{"id":"n185972817","loc":[-85.633537,42.034044],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972819":{"id":"n185972819","loc":[-85.633481,42.030785],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972821":{"id":"n185972821","loc":[-85.633452,42.027538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972824":{"id":"n185972824","loc":[-85.633438,42.027427],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972826":{"id":"n185972826","loc":[-85.633342,42.022656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972830":{"id":"n185972830","loc":[-85.63327,42.020724],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972832":{"id":"n185972832","loc":[-85.633198,42.019106],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972834":{"id":"n185972834","loc":[-85.633249,42.018363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972835":{"id":"n185972835","loc":[-85.633139,42.012944],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972836":{"id":"n185972836","loc":[-85.63309,42.008284],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:38Z","tags":{}},"n185972839":{"id":"n185972839","loc":[-85.63298,42.00005],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:38Z","tags":{}},"n185972845":{"id":"n185972845","loc":[-85.6325369,41.9764959],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972847":{"id":"n185972847","loc":[-85.6327549,41.9750005],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972849":{"id":"n185972849","loc":[-85.6329374,41.9742527],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972851":{"id":"n185972851","loc":[-85.6331387,41.9736039],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972862":{"id":"n185972862","loc":[-85.6383589,41.9585023],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972868":{"id":"n185972868","loc":[-85.6393633,41.9551716],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972878":{"id":"n185972878","loc":[-85.639377,41.95335],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972882":{"id":"n185972882","loc":[-85.6389179,41.9516944],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972885":{"id":"n185972885","loc":[-85.6387444,41.9512105],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972891":{"id":"n185972891","loc":[-85.636421,41.946392],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972895":{"id":"n185972895","loc":[-85.635965,41.945809],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972897":{"id":"n185972897","loc":[-85.635683,41.945449],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972899":{"id":"n185972899","loc":[-85.635281,41.9450252],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185972905":{"id":"n185972905","loc":[-85.6324428,41.9425743],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185985217":{"id":"n185985217","loc":[-85.638243,41.943674],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985219":{"id":"n185985219","loc":[-85.638228,41.943747],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985221":{"id":"n185985221","loc":[-85.638163,41.943797],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985222":{"id":"n185985222","loc":[-85.638089,41.943832],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985223":{"id":"n185985223","loc":[-85.637969,41.943841],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985225":{"id":"n185985225","loc":[-85.637841,41.943833],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985227":{"id":"n185985227","loc":[-85.637601,41.943789],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985229":{"id":"n185985229","loc":[-85.637449,41.943754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985231":{"id":"n185985231","loc":[-85.637342,41.943734],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985233":{"id":"n185985233","loc":[-85.637218,41.943703],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985235":{"id":"n185985235","loc":[-85.637151,41.943663],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985238":{"id":"n185985238","loc":[-85.637118,41.943615],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985240":{"id":"n185985240","loc":[-85.637073,41.943494],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185990434":{"id":"n185990434","loc":[-85.6329028,41.9984292],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"railway":"level_crossing"}},"n1475284023":{"id":"n1475284023","loc":[-85.6336163,41.9435806],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475293222":{"id":"n1475293222","loc":[-85.6394045,41.953658],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293226":{"id":"n1475293226","loc":[-85.6364975,41.9638663],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293234":{"id":"n1475293234","loc":[-85.6390449,41.9565145],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293240":{"id":"n1475293240","loc":[-85.636943,41.9473114],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293252":{"id":"n1475293252","loc":[-85.6392115,41.9559003],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293254":{"id":"n1475293254","loc":[-85.6348931,41.9685127],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{"railway":"level_crossing"}},"n1475293260":{"id":"n1475293260","loc":[-85.6375999,41.9485401],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1475293261":{"id":"n1475293261","loc":[-85.6391256,41.9523817],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"railway":"level_crossing"}},"n1475293264":{"id":"n1475293264","loc":[-85.6394155,41.9546493],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"railway":"level_crossing"}},"n1819805614":{"id":"n1819805614","loc":[-85.6345652,41.9363097],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805618":{"id":"n1819805618","loc":[-85.6295334,41.9426862],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805622":{"id":"n1819805622","loc":[-85.6308208,41.9430773],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805626":{"id":"n1819805626","loc":[-85.6274734,41.9406592],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805629":{"id":"n1819805629","loc":[-85.6296943,41.9430533],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805632":{"id":"n1819805632","loc":[-85.6340931,41.9354477],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805636":{"id":"n1819805636","loc":[-85.6304131,41.9436598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805639":{"id":"n1819805639","loc":[-85.6304882,41.9426623],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805641":{"id":"n1819805641","loc":[-85.6336103,41.9367487],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805643":{"id":"n1819805643","loc":[-85.6300376,41.9418084],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805645":{"id":"n1819805645","loc":[-85.6365286,41.9336679],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805647":{"id":"n1819805647","loc":[-85.632016,41.9429221],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805666":{"id":"n1819805666","loc":[-85.6314753,41.9442663],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805669":{"id":"n1819805669","loc":[-85.6268619,41.9402203],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805673":{"id":"n1819805673","loc":[-85.6296728,41.9412099],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805676":{"id":"n1819805676","loc":[-85.6354557,41.932766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805680":{"id":"n1819805680","loc":[-85.632752,41.9431012],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805683":{"id":"n1819805683","loc":[-85.631147,41.9432014],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805687":{"id":"n1819805687","loc":[-85.635284,41.9343942],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805690":{"id":"n1819805690","loc":[-85.6249736,41.9405794],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805694":{"id":"n1819805694","loc":[-85.6294153,41.9417925],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805698":{"id":"n1819805698","loc":[-85.6323486,41.9426986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805702":{"id":"n1819805702","loc":[-85.6340287,41.9373871],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805707":{"id":"n1819805707","loc":[-85.6353698,41.9316326],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805711":{"id":"n1819805711","loc":[-85.6284176,41.940356],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805715":{"id":"n1819805715","loc":[-85.6291471,41.9412897],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805718":{"id":"n1819805718","loc":[-85.6311105,41.943979],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805722":{"id":"n1819805722","loc":[-85.6320868,41.9400128],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805724":{"id":"n1819805724","loc":[-85.635166,41.9324627],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805727":{"id":"n1819805727","loc":[-85.6344686,41.9350567],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805728":{"id":"n1819805728","loc":[-85.6357132,41.9332369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805731":{"id":"n1819805731","loc":[-85.629984,41.9434444],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805760":{"id":"n1819805760","loc":[-85.6330996,41.9378784],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805766":{"id":"n1819805766","loc":[-85.625274,41.9411141],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805770":{"id":"n1819805770","loc":[-85.6326321,41.9412173],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805774":{"id":"n1819805774","loc":[-85.6347047,41.9312096],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805777":{"id":"n1819805777","loc":[-85.6363569,41.9339552],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805780":{"id":"n1819805780","loc":[-85.6327392,41.941926],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805783":{"id":"n1819805783","loc":[-85.6357239,41.9338435],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805786":{"id":"n1819805786","loc":[-85.6356595,41.9346576],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805789":{"id":"n1819805789","loc":[-85.6316469,41.9436598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805792":{"id":"n1819805792","loc":[-85.6350587,41.9354557],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805795":{"id":"n1819805795","loc":[-85.6360028,41.9322791],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805798":{"id":"n1819805798","loc":[-85.63125,41.9443062],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805802":{"id":"n1819805802","loc":[-85.6263362,41.9408109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805805":{"id":"n1819805805","loc":[-85.6315075,41.9438753],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805808":{"id":"n1819805808","loc":[-85.6340008,41.9316051],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805810":{"id":"n1819805810","loc":[-85.6345545,41.9320557],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805812":{"id":"n1819805812","loc":[-85.6250809,41.9408587],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805814":{"id":"n1819805814","loc":[-85.6257783,41.9400926],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805834":{"id":"n1819805834","loc":[-85.6326408,41.9424363],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805838":{"id":"n1819805838","loc":[-85.6365607,41.9334365],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805842":{"id":"n1819805842","loc":[-85.6288253,41.9410343],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805846":{"id":"n1819805846","loc":[-85.6279133,41.9402921],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805849":{"id":"n1819805849","loc":[-85.6289433,41.9405156],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805852":{"id":"n1819805852","loc":[-85.6313787,41.9439152],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805858":{"id":"n1819805858","loc":[-85.6300805,41.9420398],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805861":{"id":"n1819805861","loc":[-85.6321941,41.9396297],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805864":{"id":"n1819805864","loc":[-85.6329129,41.9393903],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805868":{"id":"n1819805868","loc":[-85.632001,41.9434922],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805870":{"id":"n1819805870","loc":[-85.6314903,41.9431535],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805873":{"id":"n1819805873","loc":[-85.6251667,41.9401166],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805876":{"id":"n1819805876","loc":[-85.63287,41.939941],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805878":{"id":"n1819805878","loc":[-85.6307886,41.9437317],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805880":{"id":"n1819805880","loc":[-85.6321727,41.940348],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805883":{"id":"n1819805883","loc":[-85.6265872,41.940113],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805885":{"id":"n1819805885","loc":[-85.6268404,41.9406672],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805887":{"id":"n1819805887","loc":[-85.6325267,41.9389035],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805889":{"id":"n1819805889","loc":[-85.6364964,41.933189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805911":{"id":"n1819805911","loc":[-85.6248663,41.9401804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805922":{"id":"n1819805922","loc":[-85.633267,41.9387199],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805925":{"id":"n1819805925","loc":[-85.6293402,41.9408428],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819848849":{"id":"n1819848849","loc":[-85.6464957,41.9695178],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848850":{"id":"n1819848850","loc":[-85.6497642,41.9611355],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848851":{"id":"n1819848851","loc":[-85.6480943,41.9624818],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848854":{"id":"n1819848854","loc":[-85.6500362,41.9657367],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848855":{"id":"n1819848855","loc":[-85.6493673,41.9783496],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848856":{"id":"n1819848856","loc":[-85.6457409,41.9548007],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848857":{"id":"n1819848857","loc":[-85.651313,41.9760426],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848858":{"id":"n1819848858","loc":[-85.6495819,41.9784772],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848859":{"id":"n1819848859","loc":[-85.6495105,41.9833722],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848860":{"id":"n1819848860","loc":[-85.6405053,41.9492792],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848863":{"id":"n1819848863","loc":[-85.6502293,41.9786826],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848865":{"id":"n1819848865","loc":[-85.6406877,41.9495106],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848870":{"id":"n1819848870","loc":[-85.6493136,41.9704611],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848871":{"id":"n1819848871","loc":[-85.6372249,41.9441284],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819848873":{"id":"n1819848873","loc":[-85.6512379,41.9659441],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848875":{"id":"n1819848875","loc":[-85.6508087,41.9650187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848877":{"id":"n1819848877","loc":[-85.6487166,41.9605352],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848878":{"id":"n1819848878","loc":[-85.6506478,41.9760665],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848879":{"id":"n1819848879","loc":[-85.651431,41.9758512],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848886":{"id":"n1819848886","loc":[-85.6477617,41.9563945],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848889":{"id":"n1819848889","loc":[-85.6497895,41.9832286],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848892":{"id":"n1819848892","loc":[-85.6504868,41.9791931],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848893":{"id":"n1819848893","loc":[-85.6498002,41.9615085],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848894":{"id":"n1819848894","loc":[-85.6404302,41.9502846],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848901":{"id":"n1819848901","loc":[-85.6354412,41.9439886],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848903":{"id":"n1819848903","loc":[-85.6472145,41.9698528],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848904":{"id":"n1819848904","loc":[-85.6401979,41.9486233],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848905":{"id":"n1819848905","loc":[-85.6475042,41.963503],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848909":{"id":"n1819848909","loc":[-85.6343405,41.94358],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848914":{"id":"n1819848914","loc":[-85.6503474,41.9737773],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848915":{"id":"n1819848915","loc":[-85.6389533,41.9470992],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848916":{"id":"n1819848916","loc":[-85.6483625,41.9577907],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848917":{"id":"n1819848917","loc":[-85.6484768,41.9617419],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848918":{"id":"n1819848918","loc":[-85.644078,41.9545693],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848919":{"id":"n1819848919","loc":[-85.6437169,41.9543041],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848920":{"id":"n1819848920","loc":[-85.6478331,41.9627949],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848922":{"id":"n1819848922","loc":[-85.6499144,41.9785889],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848924":{"id":"n1819848924","loc":[-85.647633,41.9720066],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848926":{"id":"n1819848926","loc":[-85.6487987,41.978868],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848927":{"id":"n1819848927","loc":[-85.6495105,41.9730355],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848928":{"id":"n1819848928","loc":[-85.648223,41.9829654],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848929":{"id":"n1819848929","loc":[-85.6514846,41.9659122],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848931":{"id":"n1819848931","loc":[-85.6498753,41.9731871],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848932":{"id":"n1819848932","loc":[-85.640906,41.9508575],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848933":{"id":"n1819848933","loc":[-85.649775,41.9799767],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848934":{"id":"n1819848934","loc":[-85.6507014,41.9739927],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848937":{"id":"n1819848937","loc":[-85.6479763,41.9840899],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848938":{"id":"n1819848938","loc":[-85.6501113,41.9600884],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848939":{"id":"n1819848939","loc":[-85.6389962,41.9478253],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848941":{"id":"n1819848941","loc":[-85.637469,41.9445791],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848942":{"id":"n1819848942","loc":[-85.6494569,41.9601682],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848943":{"id":"n1819848943","loc":[-85.6368803,41.9439351],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819848945":{"id":"n1819848945","loc":[-85.6474398,41.9724213],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848946":{"id":"n1819848946","loc":[-85.6382629,41.9463666],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848948":{"id":"n1819848948","loc":[-85.6489633,41.9830771],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848952":{"id":"n1819848952","loc":[-85.6488882,41.9600326],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848953":{"id":"n1819848953","loc":[-85.6488094,41.9774324],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848954":{"id":"n1819848954","loc":[-85.6491135,41.9600485],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848955":{"id":"n1819848955","loc":[-85.6501435,41.9734583],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848956":{"id":"n1819848956","loc":[-85.6495534,41.960958],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848958":{"id":"n1819848958","loc":[-85.6474683,41.9561491],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848959":{"id":"n1819848959","loc":[-85.6401083,41.9485451],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848960":{"id":"n1819848960","loc":[-85.6481764,41.9678686],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848961":{"id":"n1819848961","loc":[-85.6484017,41.967382],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848962":{"id":"n1819848962","loc":[-85.6501328,41.959897],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848964":{"id":"n1819848964","loc":[-85.6403695,41.9504586],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848966":{"id":"n1819848966","loc":[-85.6398975,41.9491499],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848967":{"id":"n1819848967","loc":[-85.6412455,41.9510187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848968":{"id":"n1819848968","loc":[-85.6482622,41.9619493],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848969":{"id":"n1819848969","loc":[-85.6405841,41.9501474],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848970":{"id":"n1819848970","loc":[-85.6478583,41.9703394],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848971":{"id":"n1819848971","loc":[-85.6493388,41.9832845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848972":{"id":"n1819848972","loc":[-85.6485664,41.9829415],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848974":{"id":"n1819848974","loc":[-85.6491457,41.9779887],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848975":{"id":"n1819848975","loc":[-85.6468889,41.9697033],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848976":{"id":"n1819848976","loc":[-85.6452726,41.9546072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848977":{"id":"n1819848977","loc":[-85.6448435,41.9546072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848979":{"id":"n1819848979","loc":[-85.6485342,41.9763138],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848980":{"id":"n1819848980","loc":[-85.6495282,41.9664087],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848986":{"id":"n1819848986","loc":[-85.6486307,41.9603278],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848987":{"id":"n1819848987","loc":[-85.6492278,41.9791871],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848990":{"id":"n1819848990","loc":[-85.6501934,41.9800724],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848992":{"id":"n1819848992","loc":[-85.6482445,41.9819685],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848993":{"id":"n1819848993","loc":[-85.6481871,41.9704451],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848994":{"id":"n1819848994","loc":[-85.6371364,41.9457602],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848996":{"id":"n1819848996","loc":[-85.6500362,41.9801023],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849000":{"id":"n1819849000","loc":[-85.639007,41.9485914],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849001":{"id":"n1819849001","loc":[-85.6488882,41.9669253],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849002":{"id":"n1819849002","loc":[-85.6484698,41.9565062],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849004":{"id":"n1819849004","loc":[-85.6510769,41.9761064],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849005":{"id":"n1819849005","loc":[-85.6503581,41.9799029],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849006":{"id":"n1819849006","loc":[-85.6489381,41.9703893],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849008":{"id":"n1819849008","loc":[-85.6497457,41.9833588],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849011":{"id":"n1819849011","loc":[-85.6497358,41.9717593],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849012":{"id":"n1819849012","loc":[-85.6494676,41.9796796],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849019":{"id":"n1819849019","loc":[-85.6486093,41.9771034],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849021":{"id":"n1819849021","loc":[-85.6504546,41.9796556],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849022":{"id":"n1819849022","loc":[-85.6371294,41.9454154],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849023":{"id":"n1819849023","loc":[-85.6503436,41.9759249],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849025":{"id":"n1819849025","loc":[-85.6462382,41.9693822],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849026":{"id":"n1819849026","loc":[-85.6497573,41.983093],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849028":{"id":"n1819849028","loc":[-85.6497465,41.9602799],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849029":{"id":"n1819849029","loc":[-85.6374728,41.9460698],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849030":{"id":"n1819849030","loc":[-85.6486592,41.9566039],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849031":{"id":"n1819849031","loc":[-85.6515989,41.9654993],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849032":{"id":"n1819849032","loc":[-85.6387028,41.9482658],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849033":{"id":"n1819849033","loc":[-85.6464742,41.9688398],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849034":{"id":"n1819849034","loc":[-85.6495212,41.9589236],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849035":{"id":"n1819849035","loc":[-85.6490599,41.9790096],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849036":{"id":"n1819849036","loc":[-85.6489918,41.9800724],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849038":{"id":"n1819849038","loc":[-85.6499182,41.9659042],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849040":{"id":"n1819849040","loc":[-85.639758,41.9490143],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849041":{"id":"n1819849041","loc":[-85.6514846,41.9755241],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849042":{"id":"n1819849042","loc":[-85.6436633,41.9540647],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849045":{"id":"n1819849045","loc":[-85.6475541,41.9726387],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849046":{"id":"n1819849046","loc":[-85.6488308,41.9718331],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849047":{"id":"n1819849047","loc":[-85.6377694,41.9460953],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849048":{"id":"n1819849048","loc":[-85.6490706,41.9804452],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849049":{"id":"n1819849049","loc":[-85.6485449,41.9766248],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849051":{"id":"n1819849051","loc":[-85.6483625,41.9790256],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849052":{"id":"n1819849052","loc":[-85.6490706,41.9585167],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849053":{"id":"n1819849053","loc":[-85.6425008,41.9522874],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849054":{"id":"n1819849054","loc":[-85.6475793,41.9632158],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849055":{"id":"n1819849055","loc":[-85.6408631,41.9499399],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849056":{"id":"n1819849056","loc":[-85.6483373,41.9814681],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849057":{"id":"n1819849057","loc":[-85.6313548,41.9442876],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849058":{"id":"n1819849058","loc":[-85.6432663,41.9529796],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849059":{"id":"n1819849059","loc":[-85.6487128,41.9582873],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849060":{"id":"n1819849060","loc":[-85.6482338,41.9817612],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849062":{"id":"n1819849062","loc":[-85.6485664,41.9788661],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849063":{"id":"n1819849063","loc":[-85.6373081,41.9448824],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849064":{"id":"n1819849064","loc":[-85.6472215,41.9557582],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849065":{"id":"n1819849065","loc":[-85.6348984,41.9440414],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819849066":{"id":"n1819849066","loc":[-85.6501972,41.9647315],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849067":{"id":"n1819849067","loc":[-85.6489741,41.9808281],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849068":{"id":"n1819849068","loc":[-85.6420111,41.9515034],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849069":{"id":"n1819849069","loc":[-85.6397972,41.9488882],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849070":{"id":"n1819849070","loc":[-85.6499718,41.9593465],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849071":{"id":"n1819849071","loc":[-85.6486844,41.9811311],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849072":{"id":"n1819849072","loc":[-85.6390392,41.9474663],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849074":{"id":"n1819849074","loc":[-85.6495642,41.9616362],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849075":{"id":"n1819849075","loc":[-85.6483518,41.9791931],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849076":{"id":"n1819849076","loc":[-85.6478974,41.9833104],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849077":{"id":"n1819849077","loc":[-85.640155,41.948719],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849078":{"id":"n1819849078","loc":[-85.6399366,41.9487845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849079":{"id":"n1819849079","loc":[-85.6492959,41.9825348],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849080":{"id":"n1819849080","loc":[-85.6505083,41.9648352],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849081":{"id":"n1819849081","loc":[-85.6492959,41.9645241],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849082":{"id":"n1819849082","loc":[-85.6402049,41.9491835],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849083":{"id":"n1819849083","loc":[-85.6495175,41.9826963],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849084":{"id":"n1819849084","loc":[-85.6480836,41.9728361],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849085":{"id":"n1819849085","loc":[-85.6374349,41.9443425],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849086":{"id":"n1819849086","loc":[-85.6478331,41.9681238],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849089":{"id":"n1819849089","loc":[-85.639368,41.9486169],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849092":{"id":"n1819849092","loc":[-85.6503581,41.9788022],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849093":{"id":"n1819849093","loc":[-85.64862,41.9568014],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849094":{"id":"n1819849094","loc":[-85.6496999,41.9828877],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849095":{"id":"n1819849095","loc":[-85.647472,41.972198],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849096":{"id":"n1819849096","loc":[-85.6485771,41.9644523],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849097":{"id":"n1819849097","loc":[-85.6388353,41.9480488],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849099":{"id":"n1819849099","loc":[-85.6472752,41.9683312],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849104":{"id":"n1819849104","loc":[-85.6479548,41.9836035],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849105":{"id":"n1819849105","loc":[-85.6462489,41.9691668],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849107":{"id":"n1819849107","loc":[-85.6511912,41.9746328],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849108":{"id":"n1819849108","loc":[-85.6498646,41.9714881],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849111":{"id":"n1819849111","loc":[-85.6488239,41.961684],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849112":{"id":"n1819849112","loc":[-85.6469356,41.9553812],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849114":{"id":"n1819849114","loc":[-85.6479548,41.9640853],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849119":{"id":"n1819849119","loc":[-85.6491565,41.961692],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849121":{"id":"n1819849121","loc":[-85.651667,41.9656728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849124":{"id":"n1819849124","loc":[-85.6388423,41.9484414],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849126":{"id":"n1819849126","loc":[-85.6371686,41.9450978],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849127":{"id":"n1819849127","loc":[-85.6502615,41.9656728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849129":{"id":"n1819849129","loc":[-85.6498501,41.9613031],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849131":{"id":"n1819849131","loc":[-85.6513881,41.9653298],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849133":{"id":"n1819849133","loc":[-85.639883,41.9485291],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849139":{"id":"n1819849139","loc":[-85.6508693,41.9658264],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849140":{"id":"n1819849140","loc":[-85.6486806,41.9761642],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849141":{"id":"n1819849141","loc":[-85.6483159,41.9717613],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849144":{"id":"n1819849144","loc":[-85.6443714,41.9546232],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849146":{"id":"n1819849146","loc":[-85.641775,41.9513359],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849147":{"id":"n1819849147","loc":[-85.6495604,41.9757335],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849148":{"id":"n1819849148","loc":[-85.6465671,41.9551678],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849150":{"id":"n1819849150","loc":[-85.6485127,41.9794084],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849151":{"id":"n1819849151","loc":[-85.6499144,41.9757096],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849152":{"id":"n1819849152","loc":[-85.6433736,41.9531072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849154":{"id":"n1819849154","loc":[-85.6489741,41.9607426],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849155":{"id":"n1819849155","loc":[-85.640627,41.9507697],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849156":{"id":"n1819849156","loc":[-85.6509659,41.9743058],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849157":{"id":"n1819849157","loc":[-85.6486844,41.9704431],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849158":{"id":"n1819849158","loc":[-85.6498538,41.9711132],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849159":{"id":"n1819849159","loc":[-85.6358937,41.943719],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849160":{"id":"n1819849160","loc":[-85.6497358,41.9707702],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849161":{"id":"n1819849161","loc":[-85.6480476,41.9564842],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849162":{"id":"n1819849162","loc":[-85.6482982,41.9574556],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849163":{"id":"n1819849163","loc":[-85.6501757,41.9757794],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849164":{"id":"n1819849164","loc":[-85.6372973,41.9459916],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849165":{"id":"n1819849165","loc":[-85.6513773,41.9750775],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849166":{"id":"n1819849166","loc":[-85.6436418,41.9537455],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849167":{"id":"n1819849167","loc":[-85.6483625,41.9571524],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849169":{"id":"n1819849169","loc":[-85.647751,41.9727962],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849170":{"id":"n1819849170","loc":[-85.6504546,41.9656808],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849171":{"id":"n1819849171","loc":[-85.6479977,41.971839],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849172":{"id":"n1819849172","loc":[-85.6482767,41.9642449],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849174":{"id":"n1819849174","loc":[-85.6414317,41.9512086],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849176":{"id":"n1819849176","loc":[-85.6469034,41.9685287],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849179":{"id":"n1819849179","loc":[-85.6408631,41.9497564],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849182":{"id":"n1819849182","loc":[-85.6476721,41.96384],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849183":{"id":"n1819849183","loc":[-85.6479725,41.983111],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849184":{"id":"n1819849184","loc":[-85.640788,41.9500516],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849185":{"id":"n1819849185","loc":[-85.6427798,41.9528778],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849186":{"id":"n1819849186","loc":[-85.6435308,41.9534124],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849187":{"id":"n1819849187","loc":[-85.6483733,41.9821998],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849189":{"id":"n1819849189","loc":[-85.6351752,41.9440796],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819849191":{"id":"n1819849191","loc":[-85.6487021,41.9601463],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849192":{"id":"n1819849192","loc":[-85.6363811,41.9437605],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849193":{"id":"n1819849193","loc":[-85.6490883,41.9759728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849194":{"id":"n1819849194","loc":[-85.6423292,41.9520081],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849195":{"id":"n1819849195","loc":[-85.6500003,41.960242],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849196":{"id":"n1819849196","loc":[-85.6385778,41.9466443],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849197":{"id":"n1819849197","loc":[-85.6494032,41.9718789],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849198":{"id":"n1819849198","loc":[-85.6404339,41.9506501],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849199":{"id":"n1819849199","loc":[-85.6426226,41.9527083],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849200":{"id":"n1819849200","loc":[-85.6439101,41.9545035],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849201":{"id":"n1819849201","loc":[-85.6516563,41.9657845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{}},"n1819849202":{"id":"n1819849202","loc":[-85.6473395,41.9699585],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{}},"n1819858501":{"id":"n1819858501","loc":[-85.6361263,41.9437126],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858503":{"id":"n1819858503","loc":[-85.6350068,41.944034],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819858513":{"id":"n1819858513","loc":[-85.6371402,41.9453282],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858518":{"id":"n1819858518","loc":[-85.6348713,41.9432923],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858523":{"id":"n1819858523","loc":[-85.6357047,41.943799],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858526":{"id":"n1819858526","loc":[-85.6349947,41.9435756],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858531":{"id":"n1819858531","loc":[-85.6350376,41.943827],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1820937508":{"id":"n1820937508","loc":[-85.1026013,42.0881722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937509":{"id":"n1820937509","loc":[-85.0558088,42.102493],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937511":{"id":"n1820937511","loc":[-85.3030116,41.9724451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937513":{"id":"n1820937513","loc":[-85.0353221,42.1027398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937514":{"id":"n1820937514","loc":[-85.0835468,42.1015469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937515":{"id":"n1820937515","loc":[-85.2421298,42.0106305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937517":{"id":"n1820937517","loc":[-85.0090632,42.0910452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937518":{"id":"n1820937518","loc":[-85.086626,42.0948838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937520":{"id":"n1820937520","loc":[-85.2552039,42.0015448],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937521":{"id":"n1820937521","loc":[-85.3739614,41.9969917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937522":{"id":"n1820937522","loc":[-85.4831166,41.993898],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937523":{"id":"n1820937523","loc":[-85.0341084,42.0977657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937524":{"id":"n1820937524","loc":[-85.3272802,41.9710333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937525":{"id":"n1820937525","loc":[-85.2125568,42.0414521],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937526":{"id":"n1820937526","loc":[-85.3798022,41.9992458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937527":{"id":"n1820937527","loc":[-85.2652021,41.999768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937528":{"id":"n1820937528","loc":[-85.3852739,42.0004896],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937529":{"id":"n1820937529","loc":[-85.3911919,42.0030513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937530":{"id":"n1820937530","loc":[-85.5440349,41.9717109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937531":{"id":"n1820937531","loc":[-85.2790155,41.9911764],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937532":{"id":"n1820937532","loc":[-85.4723277,41.9950518],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937533":{"id":"n1820937533","loc":[-85.5690546,41.9653931],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937535":{"id":"n1820937535","loc":[-85.5674882,41.9649623],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937536":{"id":"n1820937536","loc":[-85.6362815,41.9189165],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937537":{"id":"n1820937537","loc":[-85.5659003,41.963638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937539":{"id":"n1820937539","loc":[-85.6391353,41.9122262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937540":{"id":"n1820937540","loc":[-85.4834385,41.9894803],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937541":{"id":"n1820937541","loc":[-85.6399078,41.9160744],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937542":{"id":"n1820937542","loc":[-85.632874,41.941031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937543":{"id":"n1820937543","loc":[-85.1307591,42.0726961],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937544":{"id":"n1820937544","loc":[-85.6444397,41.9128378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937545":{"id":"n1820937545","loc":[-85.6197204,41.9420365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937546":{"id":"n1820937546","loc":[-85.1164857,42.0864631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937547":{"id":"n1820937547","loc":[-85.6476111,41.9142222],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937548":{"id":"n1820937548","loc":[-85.2915747,41.9774223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937549":{"id":"n1820937549","loc":[-85.6430192,41.9102461],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937550":{"id":"n1820937550","loc":[-85.1597495,42.0639017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937551":{"id":"n1820937551","loc":[-85.5504079,41.9701793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937553":{"id":"n1820937553","loc":[-85.2781317,41.9948951],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937555":{"id":"n1820937555","loc":[-85.3724594,41.997518],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937556":{"id":"n1820937556","loc":[-85.5629434,41.9665155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937557":{"id":"n1820937557","loc":[-85.3791971,41.9990808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937558":{"id":"n1820937558","loc":[-85.001891,42.0878843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937560":{"id":"n1820937560","loc":[-85.3140838,41.9709056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937561":{"id":"n1820937561","loc":[-85.2468032,42.0146987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937563":{"id":"n1820937563","loc":[-85.0877378,42.097255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937564":{"id":"n1820937564","loc":[-85.2442498,42.0150654],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937566":{"id":"n1820937566","loc":[-85.3108973,41.9701478],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937568":{"id":"n1820937568","loc":[-85.0344584,42.1016572],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937569":{"id":"n1820937569","loc":[-85.2331025,42.0297387],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937570":{"id":"n1820937570","loc":[-85.5058446,41.9746996],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937571":{"id":"n1820937571","loc":[-85.5622739,41.9676427],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937572":{"id":"n1820937572","loc":[-85.2792687,41.9890337],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937574":{"id":"n1820937574","loc":[-84.9909302,42.08695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937575":{"id":"n1820937575","loc":[-85.6218233,41.9418609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937576":{"id":"n1820937576","loc":[-85.3577437,41.9931062],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937577":{"id":"n1820937577","loc":[-85.639028,41.9165853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937578":{"id":"n1820937578","loc":[-84.9956576,42.0865348],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937579":{"id":"n1820937579","loc":[-85.4828376,41.990198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937580":{"id":"n1820937580","loc":[-85.3244478,41.9720543],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937582":{"id":"n1820937582","loc":[-85.0517479,42.1035159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937583":{"id":"n1820937583","loc":[-85.225646,42.0338025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937584":{"id":"n1820937584","loc":[-84.9941019,42.0862163],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937586":{"id":"n1820937586","loc":[-85.1051762,42.0879452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937587":{"id":"n1820937587","loc":[-85.1245203,42.0753162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937588":{"id":"n1820937588","loc":[-85.3250808,41.9719506],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937589":{"id":"n1820937589","loc":[-85.2720109,41.997933],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937590":{"id":"n1820937590","loc":[-85.2556653,42.0027248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937591":{"id":"n1820937591","loc":[-85.0872483,42.0943544],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937592":{"id":"n1820937592","loc":[-85.2778353,41.9955023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937593":{"id":"n1820937593","loc":[-85.2984733,41.9735538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937594":{"id":"n1820937594","loc":[-85.101578,42.0889552],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937595":{"id":"n1820937595","loc":[-85.3888745,42.0016959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937596":{"id":"n1820937596","loc":[-84.9903508,42.0870654],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937597":{"id":"n1820937597","loc":[-85.6405558,41.9146261],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937598":{"id":"n1820937598","loc":[-85.6460704,41.9141311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937599":{"id":"n1820937599","loc":[-85.0377468,42.1037428],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937600":{"id":"n1820937600","loc":[-85.2298345,42.0312899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937601":{"id":"n1820937601","loc":[-85.1080958,42.0861964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937602":{"id":"n1820937602","loc":[-85.6325307,41.9402329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937603":{"id":"n1820937603","loc":[-85.1165984,42.0832184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937604":{"id":"n1820937604","loc":[-85.6354446,41.9190602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937605":{"id":"n1820937605","loc":[-85.1114592,42.0862959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937606":{"id":"n1820937606","loc":[-85.0858763,42.1001646],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937607":{"id":"n1820937607","loc":[-85.0472083,42.1015151],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937608":{"id":"n1820937608","loc":[-85.0802477,42.1027609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937610":{"id":"n1820937610","loc":[-85.0924585,42.0928564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937611":{"id":"n1820937611","loc":[-85.0329617,42.09827],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937612":{"id":"n1820937612","loc":[-85.2814617,41.993465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937613":{"id":"n1820937613","loc":[-85.3097708,41.9700282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937614":{"id":"n1820937614","loc":[-85.2809427,41.993695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937615":{"id":"n1820937615","loc":[-85.0583233,42.1026494],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937617":{"id":"n1820937617","loc":[-85.2801592,41.9840021],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937619":{"id":"n1820937619","loc":[-85.1064154,42.0863449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937620":{"id":"n1820937620","loc":[-85.0423173,42.1014662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937621":{"id":"n1820937621","loc":[-85.2168913,42.0398107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937622":{"id":"n1820937622","loc":[-85.2798481,41.9833401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937623":{"id":"n1820937623","loc":[-85.0575468,42.1028672],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937625":{"id":"n1820937625","loc":[-85.0130369,42.0893067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937626":{"id":"n1820937626","loc":[-85.0346985,42.1018256],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937627":{"id":"n1820937627","loc":[-85.2231569,42.0372768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937628":{"id":"n1820937628","loc":[-85.2956195,41.9732268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937629":{"id":"n1820937629","loc":[-85.1052312,42.086893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937630":{"id":"n1820937630","loc":[-85.4813356,41.9958436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937631":{"id":"n1820937631","loc":[-85.0961599,42.0914672],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937632":{"id":"n1820937632","loc":[-85.308419,41.9704749],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937633":{"id":"n1820937633","loc":[-85.295952,41.9715119],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937634":{"id":"n1820937634","loc":[-85.3310933,41.9703923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937635":{"id":"n1820937635","loc":[-85.2940745,41.9739686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937636":{"id":"n1820937636","loc":[-85.3803343,42.000484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937637":{"id":"n1820937637","loc":[-85.1174231,42.0845533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937638":{"id":"n1820937638","loc":[-85.0095836,42.089839],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937639":{"id":"n1820937639","loc":[-85.3179354,41.9705866],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937640":{"id":"n1820937640","loc":[-85.257708,42.0001189],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937641":{"id":"n1820937641","loc":[-85.2563522,42.0002771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937642":{"id":"n1820937642","loc":[-85.3181929,41.970419],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937643":{"id":"n1820937643","loc":[-85.2911884,41.9757154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937644":{"id":"n1820937644","loc":[-85.2714423,41.9975862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937645":{"id":"n1820937645","loc":[-85.0193669,42.089888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937646":{"id":"n1820937646","loc":[-85.3889818,42.0039921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937647":{"id":"n1820937647","loc":[-85.3408093,41.9853965],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937648":{"id":"n1820937648","loc":[-85.1258091,42.0748332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937649":{"id":"n1820937649","loc":[-85.5722561,41.962782],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937650":{"id":"n1820937650","loc":[-85.3266902,41.9721819],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937651":{"id":"n1820937651","loc":[-85.1473255,42.065192],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937652":{"id":"n1820937652","loc":[-85.1462526,42.0655106],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937653":{"id":"n1820937653","loc":[-85.4641051,42.0013929],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937654":{"id":"n1820937654","loc":[-85.5620379,41.9700677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937655":{"id":"n1820937655","loc":[-85.3226025,41.971121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937656":{"id":"n1820937656","loc":[-85.0200965,42.0899516],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937657":{"id":"n1820937657","loc":[-85.0624714,42.1044711],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937658":{"id":"n1820937658","loc":[-85.5649562,41.9637178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937659":{"id":"n1820937659","loc":[-85.2360315,42.0253315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937660":{"id":"n1820937660","loc":[-85.3881449,41.9994475],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937661":{"id":"n1820937661","loc":[-85.5032911,41.976263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937662":{"id":"n1820937662","loc":[-85.481297,41.9871414],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937663":{"id":"n1820937663","loc":[-85.1167056,42.0841898],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937664":{"id":"n1820937664","loc":[-85.2891714,41.9787223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937665":{"id":"n1820937665","loc":[-85.4393429,42.0058736],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937666":{"id":"n1820937666","loc":[-85.0077007,42.0895762],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937667":{"id":"n1820937667","loc":[-85.2736202,41.9979171],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937668":{"id":"n1820937668","loc":[-84.9935332,42.0859296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937669":{"id":"n1820937669","loc":[-85.0622769,42.1046713],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937670":{"id":"n1820937670","loc":[-85.2309031,42.0311249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937671":{"id":"n1820937671","loc":[-85.0343726,42.10069],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937672":{"id":"n1820937672","loc":[-85.0596551,42.1048612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937673":{"id":"n1820937673","loc":[-85.1338597,42.0707449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937674":{"id":"n1820937674","loc":[-85.3117663,41.9689194],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937675":{"id":"n1820937675","loc":[-85.0705649,42.1057499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937676":{"id":"n1820937676","loc":[-85.2441425,42.0180944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937677":{"id":"n1820937677","loc":[-85.1171174,42.0862692],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937678":{"id":"n1820937678","loc":[-85.0346824,42.1005519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937680":{"id":"n1820937680","loc":[-85.2389927,42.0229245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937681":{"id":"n1820937681","loc":[-85.0834892,42.1018642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937682":{"id":"n1820937682","loc":[-85.0619443,42.1049459],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937683":{"id":"n1820937683","loc":[-85.2845366,41.9811868],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937684":{"id":"n1820937684","loc":[-85.210411,42.0394123],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937685":{"id":"n1820937685","loc":[-85.4377383,42.0055942],"version":"2","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:51:01Z","tags":{}},"n1820937686":{"id":"n1820937686","loc":[-85.2882058,41.9789138],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937687":{"id":"n1820937687","loc":[-85.2741191,41.9955808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937688":{"id":"n1820937688","loc":[-85.3442211,41.9903575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937689":{"id":"n1820937689","loc":[-85.2641413,41.9995237],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937690":{"id":"n1820937690","loc":[-85.2804489,41.9829174],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937691":{"id":"n1820937691","loc":[-85.5593342,41.9729074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937692":{"id":"n1820937692","loc":[-85.3590912,41.9932601],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937694":{"id":"n1820937694","loc":[-85.4826445,41.9957479],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937695":{"id":"n1820937695","loc":[-85.4539127,42.0063041],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937696":{"id":"n1820937696","loc":[-85.2456767,42.0153683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937697":{"id":"n1820937697","loc":[-85.5794015,41.9489631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937698":{"id":"n1820937698","loc":[-85.4108686,42.0078507],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937699":{"id":"n1820937699","loc":[-85.0616386,42.1051529],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937700":{"id":"n1820937700","loc":[-85.4977979,41.978241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937701":{"id":"n1820937701","loc":[-85.2488417,42.0086319],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937702":{"id":"n1820937702","loc":[-85.5588836,41.9728116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937703":{"id":"n1820937703","loc":[-85.4557366,42.0051241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937705":{"id":"n1820937705","loc":[-85.0723151,42.1056094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937706":{"id":"n1820937706","loc":[-85.0057909,42.0887323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937707":{"id":"n1820937707","loc":[-85.0756786,42.105677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937708":{"id":"n1820937708","loc":[-85.0901504,42.0940001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937709":{"id":"n1820937709","loc":[-85.0979999,42.0910213],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937710":{"id":"n1820937710","loc":[-85.2376301,42.0239686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937711":{"id":"n1820937711","loc":[-85.2780671,41.9902299],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937712":{"id":"n1820937712","loc":[-85.251481,42.0113188],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937713":{"id":"n1820937713","loc":[-85.3114767,41.9690311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937714":{"id":"n1820937714","loc":[-85.2649621,41.9975662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937715":{"id":"n1820937715","loc":[-85.283807,41.9813383],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937716":{"id":"n1820937716","loc":[-85.5515451,41.9703867],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937717":{"id":"n1820937717","loc":[-85.1176605,42.0850896],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937718":{"id":"n1820937718","loc":[-85.1069317,42.0862441],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937719":{"id":"n1820937719","loc":[-85.2739314,41.9976938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937720":{"id":"n1820937720","loc":[-85.5550212,41.9702112],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937721":{"id":"n1820937721","loc":[-85.3076679,41.9719904],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937722":{"id":"n1820937722","loc":[-85.592319,41.9440316],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937723":{"id":"n1820937723","loc":[-85.3139979,41.9704031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937724":{"id":"n1820937724","loc":[-85.0421134,42.1013149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937725":{"id":"n1820937725","loc":[-85.2508373,42.0102741],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937726":{"id":"n1820937726","loc":[-85.0830922,42.1038821],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937727":{"id":"n1820937727","loc":[-85.6342473,41.9360031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937730":{"id":"n1820937730","loc":[-85.0500192,42.1024942],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937731":{"id":"n1820937731","loc":[-85.3498644,41.9926221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937732":{"id":"n1820937732","loc":[-85.0234117,42.0918903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937733":{"id":"n1820937733","loc":[-85.0464425,42.1009408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937734":{"id":"n1820937734","loc":[-85.033938,42.099886],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937736":{"id":"n1820937736","loc":[-85.0152752,42.0886009],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937737":{"id":"n1820937737","loc":[-85.0441894,42.1012671],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937738":{"id":"n1820937738","loc":[-85.4668731,41.9979804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937739":{"id":"n1820937739","loc":[-85.4407377,42.006033],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937740":{"id":"n1820937740","loc":[-85.2262253,42.0344878],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937741":{"id":"n1820937741","loc":[-85.2550001,42.0033706],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937742":{"id":"n1820937742","loc":[-85.3071422,41.9722617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937743":{"id":"n1820937743","loc":[-85.6147852,41.942228],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937744":{"id":"n1820937744","loc":[-85.0183853,42.0901825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937745":{"id":"n1820937745","loc":[-85.6323161,41.9228489],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937746":{"id":"n1820937746","loc":[-85.0095568,42.0901376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937747":{"id":"n1820937747","loc":[-85.2524037,42.0113826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937748":{"id":"n1820937748","loc":[-85.3186864,41.9708578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937749":{"id":"n1820937749","loc":[-85.2805669,41.9870883],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937750":{"id":"n1820937750","loc":[-85.0585768,42.1038144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937751":{"id":"n1820937751","loc":[-85.2970786,41.9715358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937752":{"id":"n1820937752","loc":[-85.1315758,42.0723445],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937753":{"id":"n1820937753","loc":[-85.2448291,42.0175444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937754":{"id":"n1820937754","loc":[-85.2446468,42.0174248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937755":{"id":"n1820937755","loc":[-85.229165,42.032129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937756":{"id":"n1820937756","loc":[-85.5612654,41.9724926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937757":{"id":"n1820937757","loc":[-85.2331776,42.030854],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937758":{"id":"n1820937758","loc":[-85.2271909,42.0334519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937759":{"id":"n1820937759","loc":[-85.1032396,42.0879214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937760":{"id":"n1820937760","loc":[-85.0638447,42.1044154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937761":{"id":"n1820937761","loc":[-85.1260706,42.0745556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937762":{"id":"n1820937762","loc":[-85.3454485,41.99132],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937763":{"id":"n1820937763","loc":[-85.2639321,41.9980088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937764":{"id":"n1820937764","loc":[-85.0837681,42.1013746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937765":{"id":"n1820937765","loc":[-85.2808137,41.9869368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937766":{"id":"n1820937766","loc":[-85.6338997,41.9309373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937767":{"id":"n1820937767","loc":[-85.2267403,42.0332766],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937768":{"id":"n1820937768","loc":[-85.0605831,42.1052074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937769":{"id":"n1820937769","loc":[-85.0259021,42.0930037],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937770":{"id":"n1820937770","loc":[-85.232963,42.0313162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937771":{"id":"n1820937771","loc":[-85.2404947,42.0125381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937772":{"id":"n1820937772","loc":[-85.0910892,42.0935742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937773":{"id":"n1820937773","loc":[-85.2554829,42.0019435],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937774":{"id":"n1820937774","loc":[-85.2799339,41.9867773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937775":{"id":"n1820937775","loc":[-85.1075432,42.0852767],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937776":{"id":"n1820937776","loc":[-85.1176927,42.0854001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937777":{"id":"n1820937777","loc":[-85.1067064,42.0863357],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937778":{"id":"n1820937778","loc":[-85.2517492,42.0106333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937779":{"id":"n1820937779","loc":[-85.0987174,42.0909031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937780":{"id":"n1820937780","loc":[-85.1160083,42.0863994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937781":{"id":"n1820937781","loc":[-85.1268645,42.0739703],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937782":{"id":"n1820937782","loc":[-85.0454702,42.1002852],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937783":{"id":"n1820937783","loc":[-85.1334145,42.0705418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937784":{"id":"n1820937784","loc":[-85.5866542,41.947431],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937786":{"id":"n1820937786","loc":[-85.2359886,42.0250366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937787":{"id":"n1820937787","loc":[-85.3138048,41.9698527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937788":{"id":"n1820937788","loc":[-85.1274291,42.0733081],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937790":{"id":"n1820937790","loc":[-85.6292905,41.9411267],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937791":{"id":"n1820937791","loc":[-85.5958809,41.9417333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937792":{"id":"n1820937792","loc":[-85.1271019,42.0737581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937793":{"id":"n1820937793","loc":[-85.2312679,42.0314437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937794":{"id":"n1820937794","loc":[-85.1081387,42.0863516],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937795":{"id":"n1820937795","loc":[-85.2424473,42.0212109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937796":{"id":"n1820937796","loc":[-85.2710654,41.9975236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937797":{"id":"n1820937797","loc":[-85.4798408,41.9863223],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820937798":{"id":"n1820937798","loc":[-85.035939,42.104296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937799":{"id":"n1820937799","loc":[-85.2178139,42.0395398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937800":{"id":"n1820937800","loc":[-85.0630709,42.1042614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937801":{"id":"n1820937801","loc":[-85.0440124,42.1014861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937802":{"id":"n1820937802","loc":[-85.1321874,42.0720458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937804":{"id":"n1820937804","loc":[-85.079427,42.1029121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937805":{"id":"n1820937805","loc":[-85.2962632,41.9738968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937806":{"id":"n1820937806","loc":[-85.6334748,41.9274627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937807":{"id":"n1820937807","loc":[-85.1057341,42.0872804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937808":{"id":"n1820937808","loc":[-85.4960169,41.9778263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937809":{"id":"n1820937809","loc":[-85.2821226,41.9910273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937810":{"id":"n1820937810","loc":[-85.0013868,42.0885054],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937811":{"id":"n1820937811","loc":[-85.2952547,41.9729795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937812":{"id":"n1820937812","loc":[-85.1298375,42.0667842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937813":{"id":"n1820937813","loc":[-85.1339201,42.0710025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937814":{"id":"n1820937814","loc":[-85.0374356,42.103691],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937815":{"id":"n1820937815","loc":[-85.0061115,42.0880607],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937817":{"id":"n1820937817","loc":[-85.2398402,42.0226934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937818":{"id":"n1820937818","loc":[-85.123501,42.076236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937819":{"id":"n1820937819","loc":[-85.1209489,42.0791294],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937820":{"id":"n1820937820","loc":[-85.0818624,42.1025778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937821":{"id":"n1820937821","loc":[-85.4428835,42.0054749],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937822":{"id":"n1820937822","loc":[-85.4710359,41.9961147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937823":{"id":"n1820937823","loc":[-85.4253354,42.006198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937824":{"id":"n1820937824","loc":[-85.5486483,41.9709451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937825":{"id":"n1820937825","loc":[-85.2303238,42.0310452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937826":{"id":"n1820937826","loc":[-85.6450405,41.9136361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937828":{"id":"n1820937828","loc":[-85.2606853,41.9964073],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937830":{"id":"n1820937830","loc":[-85.097383,42.0911447],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937831":{"id":"n1820937831","loc":[-85.0498207,42.102136],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937832":{"id":"n1820937832","loc":[-85.1232435,42.0763793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937833":{"id":"n1820937833","loc":[-85.394093,42.0055921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937834":{"id":"n1820937834","loc":[-85.3566665,41.9928295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937835":{"id":"n1820937835","loc":[-85.3543276,41.9920002],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937837":{"id":"n1820937837","loc":[-85.084668,42.1034932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937838":{"id":"n1820937838","loc":[-85.4400296,42.0060649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937839":{"id":"n1820937839","loc":[-85.2362246,42.025714],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937840":{"id":"n1820937840","loc":[-85.0409225,42.1012791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937841":{"id":"n1820937841","loc":[-85.2442283,42.019832],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937842":{"id":"n1820937842","loc":[-85.1123001,42.084824],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937843":{"id":"n1820937843","loc":[-85.1603074,42.0638061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937844":{"id":"n1820937844","loc":[-85.1359744,42.0650646],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937845":{"id":"n1820937845","loc":[-85.1757569,42.053849],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937846":{"id":"n1820937846","loc":[-85.5200925,41.9716686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937848":{"id":"n1820937848","loc":[-85.5525322,41.9701315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937849":{"id":"n1820937849","loc":[-85.0406489,42.10149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937850":{"id":"n1820937850","loc":[-85.0142547,42.088825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937851":{"id":"n1820937851","loc":[-85.343749,41.9881884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937852":{"id":"n1820937852","loc":[-85.074996,42.1060205],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937853":{"id":"n1820937853","loc":[-85.2436275,42.0136864],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937854":{"id":"n1820937854","loc":[-85.2641453,41.9980897],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937856":{"id":"n1820937856","loc":[-85.2802343,41.9870086],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937857":{"id":"n1820937857","loc":[-85.0099256,42.0909946],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937858":{"id":"n1820937858","loc":[-85.493957,41.9786079],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937859":{"id":"n1820937859","loc":[-85.0739405,42.1059795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937860":{"id":"n1820937860","loc":[-85.2331605,42.0301423],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937862":{"id":"n1820937862","loc":[-85.2035231,42.0438425],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937863":{"id":"n1820937863","loc":[-85.0884928,42.0986971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937864":{"id":"n1820937864","loc":[-85.131597,42.0690142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937865":{"id":"n1820937865","loc":[-85.3937454,42.0052677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937866":{"id":"n1820937866","loc":[-85.2212729,42.0378561],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937867":{"id":"n1820937867","loc":[-85.0886068,42.0982421],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937868":{"id":"n1820937868","loc":[-85.0875004,42.0968064],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937869":{"id":"n1820937869","loc":[-85.0771323,42.1042642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937870":{"id":"n1820937870","loc":[-85.0164554,42.0894887],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937871":{"id":"n1820937871","loc":[-85.6069102,41.9415577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937872":{"id":"n1820937872","loc":[-85.3273875,41.9704908],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937873":{"id":"n1820937873","loc":[-85.3890891,41.9997983],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937875":{"id":"n1820937875","loc":[-85.5091276,41.9723705],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937876":{"id":"n1820937876","loc":[-85.0770626,42.1047696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937877":{"id":"n1820937877","loc":[-85.612575,41.9419567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937878":{"id":"n1820937878","loc":[-85.3868146,42.0036094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937879":{"id":"n1820937879","loc":[-85.2722738,41.9981204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937880":{"id":"n1820937880","loc":[-85.3064878,41.9723733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937882":{"id":"n1820937882","loc":[-85.1270845,42.0727678],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937884":{"id":"n1820937884","loc":[-85.3316512,41.97923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937885":{"id":"n1820937885","loc":[-85.3932519,42.0042472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937886":{"id":"n1820937886","loc":[-85.2457411,42.0175444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937887":{"id":"n1820937887","loc":[-85.1397509,42.0648415],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937891":{"id":"n1820937891","loc":[-85.3196735,41.9719665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937892":{"id":"n1820937892","loc":[-85.3372473,41.9845033],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937894":{"id":"n1820937894","loc":[-85.3254778,41.9719745],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937897":{"id":"n1820937897","loc":[-85.3185148,41.9691268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937899":{"id":"n1820937899","loc":[-85.5419106,41.9714556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937901":{"id":"n1820937901","loc":[-85.3293509,41.9748368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937903":{"id":"n1820937903","loc":[-85.0798078,42.1028365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937905":{"id":"n1820937905","loc":[-85.3954191,42.0056025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937909":{"id":"n1820937909","loc":[-85.3417534,41.9857155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937913":{"id":"n1820937913","loc":[-84.9927822,42.0857107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937915":{"id":"n1820937915","loc":[-85.5444212,41.9712801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937917":{"id":"n1820937917","loc":[-85.259088,41.9981682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937921":{"id":"n1820937921","loc":[-85.2784576,41.9876358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937922":{"id":"n1820937922","loc":[-84.9971918,42.087753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937924":{"id":"n1820937924","loc":[-85.5310688,41.966899],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820937928":{"id":"n1820937928","loc":[-85.3766436,41.9979326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937930":{"id":"n1820937930","loc":[-85.5494852,41.9704346],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937933":{"id":"n1820937933","loc":[-85.5548281,41.9695412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937935":{"id":"n1820937935","loc":[-85.0768588,42.105088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937937":{"id":"n1820937937","loc":[-85.2646885,41.9978054],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937939":{"id":"n1820937939","loc":[-85.2441532,42.0176082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937941":{"id":"n1820937941","loc":[-85.105553,42.0877928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937943":{"id":"n1820937943","loc":[-85.0879457,42.0958909],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937944":{"id":"n1820937944","loc":[-85.3187015,41.9704402],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937945":{"id":"n1820937945","loc":[-85.5624456,41.970626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937946":{"id":"n1820937946","loc":[-85.0580176,42.1028644],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937948":{"id":"n1820937948","loc":[-85.3016061,41.9726286],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937949":{"id":"n1820937949","loc":[-85.4310388,42.0069418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937950":{"id":"n1820937950","loc":[-85.2945144,41.9740723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937951":{"id":"n1820937951","loc":[-85.1170222,42.082657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937952":{"id":"n1820937952","loc":[-85.0864503,42.0947632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937953":{"id":"n1820937953","loc":[-85.4285926,42.0059533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937970":{"id":"n1820937970","loc":[-85.3629965,41.9938023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937972":{"id":"n1820937972","loc":[-85.2438099,42.0199755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937974":{"id":"n1820937974","loc":[-85.1327654,42.0699285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937977":{"id":"n1820937977","loc":[-85.1515956,42.0611935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937978":{"id":"n1820937978","loc":[-85.0107369,42.0896638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937979":{"id":"n1820937979","loc":[-85.1152626,42.0862083],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937980":{"id":"n1820937980","loc":[-85.4531831,42.0062881],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937981":{"id":"n1820937981","loc":[-85.0341473,42.0985924],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937982":{"id":"n1820937982","loc":[-85.0877485,42.0960171],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937983":{"id":"n1820937983","loc":[-85.2756373,41.9951742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937984":{"id":"n1820937984","loc":[-85.2965421,41.9714401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937985":{"id":"n1820937985","loc":[-85.2409775,42.0226934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937986":{"id":"n1820937986","loc":[-85.0170723,42.0900579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937987":{"id":"n1820937987","loc":[-85.1034663,42.0880555],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937988":{"id":"n1820937988","loc":[-85.0585071,42.1031577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937990":{"id":"n1820937990","loc":[-85.0819174,42.1032373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937992":{"id":"n1820937992","loc":[-85.0546608,42.1030542],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937993":{"id":"n1820937993","loc":[-85.0100811,42.0906125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937995":{"id":"n1820937995","loc":[-85.6304278,41.9432655],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937997":{"id":"n1820937997","loc":[-85.0255628,42.092778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820938011":{"id":"n1820938011","loc":[-85.2316756,42.0317146],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938012":{"id":"n1820938012","loc":[-85.4067917,42.008042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938013":{"id":"n1820938013","loc":[-85.390398,42.0028759],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938014":{"id":"n1820938014","loc":[-85.0161604,42.0886527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938015":{"id":"n1820938015","loc":[-85.125337,42.0744589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938016":{"id":"n1820938016","loc":[-85.2151317,42.0404801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938017":{"id":"n1820938017","loc":[-85.3165085,41.9706025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938018":{"id":"n1820938018","loc":[-85.5641193,41.9640688],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938019":{"id":"n1820938019","loc":[-85.147583,42.0642203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938022":{"id":"n1820938022","loc":[-85.2803781,41.9947886],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938024":{"id":"n1820938024","loc":[-85.2692469,41.9982053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938026":{"id":"n1820938026","loc":[-85.4321975,42.0067505],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938028":{"id":"n1820938028","loc":[-85.572535,41.9633405],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938030":{"id":"n1820938030","loc":[-85.3237505,41.9716475],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938032":{"id":"n1820938032","loc":[-85.6487698,41.9141583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938033":{"id":"n1820938033","loc":[-85.0526371,42.1038315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938034":{"id":"n1820938034","loc":[-85.088069,42.0978731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938035":{"id":"n1820938035","loc":[-85.2516312,42.0102267],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938039":{"id":"n1820938039","loc":[-85.2731374,41.9982958],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938040":{"id":"n1820938040","loc":[-85.5453224,41.9713439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938041":{"id":"n1820938041","loc":[-85.4480548,42.0049647],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938043":{"id":"n1820938043","loc":[-85.2504081,42.010322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938045":{"id":"n1820938045","loc":[-85.2663447,41.99919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938046":{"id":"n1820938046","loc":[-85.0507287,42.102907],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938047":{"id":"n1820938047","loc":[-85.0408246,42.1024743],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938048":{"id":"n1820938048","loc":[-85.2796335,41.9866099],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938050":{"id":"n1820938050","loc":[-85.452475,42.0061127],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938051":{"id":"n1820938051","loc":[-85.2410569,42.0128147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938052":{"id":"n1820938052","loc":[-85.0413302,42.1011477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938053":{"id":"n1820938053","loc":[-85.6327409,41.9197627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938056":{"id":"n1820938056","loc":[-85.1072039,42.0857994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938057":{"id":"n1820938057","loc":[-85.2001114,42.0448145],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938058":{"id":"n1820938058","loc":[-85.2655347,41.9978186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938059":{"id":"n1820938059","loc":[-85.2330918,42.0304874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938060":{"id":"n1820938060","loc":[-85.2601113,41.9966545],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938061":{"id":"n1820938061","loc":[-85.5397863,41.9708494],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938062":{"id":"n1820938062","loc":[-85.2702085,41.9977217],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938063":{"id":"n1820938063","loc":[-85.2219982,42.03699],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938064":{"id":"n1820938064","loc":[-85.0668957,42.105121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938065":{"id":"n1820938065","loc":[-85.2328665,42.0270769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938066":{"id":"n1820938066","loc":[-85.3189654,41.9694778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938067":{"id":"n1820938067","loc":[-85.3814115,42.0022915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938068":{"id":"n1820938068","loc":[-85.2759108,41.9956008],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938069":{"id":"n1820938069","loc":[-85.0391938,42.1034853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938070":{"id":"n1820938070","loc":[-85.2850623,41.9810353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938071":{"id":"n1820938071","loc":[-85.538074,41.970855],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938073":{"id":"n1820938073","loc":[-85.1319661,42.0670932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938074":{"id":"n1820938074","loc":[-85.2816763,41.9913678],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938075":{"id":"n1820938075","loc":[-85.3182144,41.9700282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938076":{"id":"n1820938076","loc":[-85.5909028,41.9458989],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938077":{"id":"n1820938077","loc":[-85.4057617,42.0074361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938078":{"id":"n1820938078","loc":[-85.2620438,41.9967729],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938079":{"id":"n1820938079","loc":[-85.1122143,42.0851107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938080":{"id":"n1820938080","loc":[-85.2443785,42.0174567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938081":{"id":"n1820938081","loc":[-85.0319733,42.0953853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938082":{"id":"n1820938082","loc":[-85.0878276,42.09443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938083":{"id":"n1820938083","loc":[-85.0271789,42.0935809],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938084":{"id":"n1820938084","loc":[-85.0326399,42.0974222],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938085":{"id":"n1820938085","loc":[-85.3989167,42.0065592],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938086":{"id":"n1820938086","loc":[-85.3263361,41.9721261],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938087":{"id":"n1820938087","loc":[-85.2547855,42.0037134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938088":{"id":"n1820938088","loc":[-85.4373259,42.005746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938089":{"id":"n1820938089","loc":[-85.3094275,41.9699245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938090":{"id":"n1820938090","loc":[-85.2783246,41.9872793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938092":{"id":"n1820938092","loc":[-85.0815633,42.1025169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938093":{"id":"n1820938093","loc":[-85.1788511,42.0522134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938095":{"id":"n1820938095","loc":[-85.2830345,41.9816733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938096":{"id":"n1820938096","loc":[-85.0744984,42.1059835],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938097":{"id":"n1820938097","loc":[-85.2788396,41.9879333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938098":{"id":"n1820938098","loc":[-85.3640093,41.9946531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938099":{"id":"n1820938099","loc":[-85.291167,41.9787463],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938100":{"id":"n1820938100","loc":[-85.0772436,42.1038156],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938101":{"id":"n1820938101","loc":[-85.00563,42.0887482],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938102":{"id":"n1820938102","loc":[-85.0326881,42.0961245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938104":{"id":"n1820938104","loc":[-85.0530448,42.1038634],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938105":{"id":"n1820938105","loc":[-85.2625266,41.9970639],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938106":{"id":"n1820938106","loc":[-85.2827556,41.9823512],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938107":{"id":"n1820938107","loc":[-85.2784319,41.9910752],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938108":{"id":"n1820938108","loc":[-85.0882099,42.094393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938109":{"id":"n1820938109","loc":[-85.5718484,41.9645371],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938110":{"id":"n1820938110","loc":[-85.2559764,42.0099317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938111":{"id":"n1820938111","loc":[-85.2969284,41.973179],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938113":{"id":"n1820938113","loc":[-85.3875055,42.0019726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938114":{"id":"n1820938114","loc":[-85.4250779,42.0068199],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938115":{"id":"n1820938115","loc":[-85.0645367,42.104889],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938116":{"id":"n1820938116","loc":[-85.1636762,42.0623724],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938117":{"id":"n1820938117","loc":[-85.0757322,42.1055935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938118":{"id":"n1820938118","loc":[-85.3695197,41.9981559],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938120":{"id":"n1820938120","loc":[-85.1297516,42.0671027],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938121":{"id":"n1820938121","loc":[-85.1057448,42.0875551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938122":{"id":"n1820938122","loc":[-85.2805175,41.9943182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938123":{"id":"n1820938123","loc":[-85.2545173,42.0040722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938124":{"id":"n1820938124","loc":[-84.9966607,42.0871319],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938125":{"id":"n1820938125","loc":[-85.0099899,42.0904612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938126":{"id":"n1820938126","loc":[-85.2489919,42.0091102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938127":{"id":"n1820938127","loc":[-85.0342706,42.0979476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938128":{"id":"n1820938128","loc":[-85.1080891,42.0855884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938129":{"id":"n1820938129","loc":[-85.0128183,42.0905356],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938130":{"id":"n1820938130","loc":[-85.631608,41.9434251],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938131":{"id":"n1820938131","loc":[-85.2551975,42.0008524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938132":{"id":"n1820938132","loc":[-85.6421823,41.9096233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938133":{"id":"n1820938133","loc":[-85.0125059,42.0906284],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938134":{"id":"n1820938134","loc":[-85.5499358,41.9701793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938135":{"id":"n1820938135","loc":[-85.5472107,41.9712323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938136":{"id":"n1820938136","loc":[-85.2760758,41.9958691],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938137":{"id":"n1820938137","loc":[-85.276678,41.9960433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938138":{"id":"n1820938138","loc":[-85.0570319,42.1024731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938140":{"id":"n1820938140","loc":[-85.2394325,42.0227492],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938142":{"id":"n1820938142","loc":[-85.5666341,41.9638829],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938144":{"id":"n1820938144","loc":[-85.258101,41.9996353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938147":{"id":"n1820938147","loc":[-85.2129645,42.0413565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938149":{"id":"n1820938149","loc":[-84.9962369,42.0868373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938151":{"id":"n1820938151","loc":[-85.2570386,42.0084968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938153":{"id":"n1820938153","loc":[-85.3971142,42.0050285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938155":{"id":"n1820938155","loc":[-85.1072093,42.0855566],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938157":{"id":"n1820938157","loc":[-85.2840323,41.9920959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938159":{"id":"n1820938159","loc":[-85.1187924,42.0816458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938161":{"id":"n1820938161","loc":[-85.2681324,41.9985788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938163":{"id":"n1820938163","loc":[-85.0887034,42.0984969],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938165":{"id":"n1820938165","loc":[-85.4133405,42.0073141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938166":{"id":"n1820938166","loc":[-85.0097445,42.0902888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938167":{"id":"n1820938167","loc":[-85.0828133,42.1037388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938168":{"id":"n1820938168","loc":[-85.0549599,42.1030833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938169":{"id":"n1820938169","loc":[-85.4571528,42.0010421],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938178":{"id":"n1820938178","loc":[-85.2706644,41.9975941],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938180":{"id":"n1820938180","loc":[-85.2258606,42.0335794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938182":{"id":"n1820938182","loc":[-85.2832276,41.9814659],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938184":{"id":"n1820938184","loc":[-85.1082299,42.0860928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938185":{"id":"n1820938185","loc":[-85.3839392,42.0022381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938186":{"id":"n1820938186","loc":[-85.2772131,41.995905],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938187":{"id":"n1820938187","loc":[-85.1044895,42.0879214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938188":{"id":"n1820938188","loc":[-85.2135267,42.0407087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938189":{"id":"n1820938189","loc":[-85.2543993,42.0044628],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938190":{"id":"n1820938190","loc":[-85.1501793,42.0617351],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938191":{"id":"n1820938191","loc":[-85.3350587,41.9820469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938192":{"id":"n1820938192","loc":[-85.1350731,42.0655735],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938193":{"id":"n1820938193","loc":[-85.0404008,42.1028843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938194":{"id":"n1820938194","loc":[-85.6323161,41.943042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938195":{"id":"n1820938195","loc":[-85.1259593,42.0742837],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938196":{"id":"n1820938196","loc":[-85.4562988,42.0033758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938197":{"id":"n1820938197","loc":[-85.256824,42.0056826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938198":{"id":"n1820938198","loc":[-85.2742103,41.9963862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938199":{"id":"n1820938199","loc":[-85.0380888,42.1037877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938200":{"id":"n1820938200","loc":[-85.47404,41.9944721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938201":{"id":"n1820938201","loc":[-85.103021,42.087948],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938202":{"id":"n1820938202","loc":[-85.4030151,42.0065113],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938203":{"id":"n1820938203","loc":[-85.2113981,42.040735],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938204":{"id":"n1820938204","loc":[-85.2603433,41.9965137],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938206":{"id":"n1820938206","loc":[-85.1669378,42.0607634],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938207":{"id":"n1820938207","loc":[-85.0642027,42.1046076],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938208":{"id":"n1820938208","loc":[-85.2812428,41.9915696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938209":{"id":"n1820938209","loc":[-85.0839559,42.1038343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938210":{"id":"n1820938210","loc":[-85.1239946,42.0769368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938211":{"id":"n1820938211","loc":[-85.2311177,42.0283042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938212":{"id":"n1820938212","loc":[-85.2791614,41.9882682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938213":{"id":"n1820938213","loc":[-85.2674941,41.9987582],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938214":{"id":"n1820938214","loc":[-85.352787,41.9919579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938215":{"id":"n1820938215","loc":[-85.0874146,42.0952182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938216":{"id":"n1820938216","loc":[-85.0069711,42.0877092],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938217":{"id":"n1820938217","loc":[-85.2059049,42.0404004],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938218":{"id":"n1820938218","loc":[-85.2403552,42.0227332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938219":{"id":"n1820938219","loc":[-85.2492923,42.0098915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938220":{"id":"n1820938220","loc":[-85.269778,41.9979541],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938221":{"id":"n1820938221","loc":[-85.2097673,42.0389024],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938222":{"id":"n1820938222","loc":[-85.0845942,42.1032015],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938223":{"id":"n1820938223","loc":[-84.993206,42.0858142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938224":{"id":"n1820938224","loc":[-85.2108187,42.0402729],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938225":{"id":"n1820938225","loc":[-84.9893959,42.0873043],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938226":{"id":"n1820938226","loc":[-85.2952332,41.9719984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938227":{"id":"n1820938227","loc":[-85.4100961,42.0081536],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938228":{"id":"n1820938228","loc":[-85.3299088,41.9785696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938229":{"id":"n1820938229","loc":[-85.2258176,42.0340097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938230":{"id":"n1820938230","loc":[-85.3146739,41.9711449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938231":{"id":"n1820938231","loc":[-85.5447645,41.9712801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938232":{"id":"n1820938232","loc":[-85.5510087,41.9705941],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938233":{"id":"n1820938233","loc":[-85.5122389,41.9703445],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938234":{"id":"n1820938234","loc":[-85.2792687,41.9865381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938235":{"id":"n1820938235","loc":[-85.1475229,42.0630151],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938237":{"id":"n1820938237","loc":[-85.0332889,42.0996034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938238":{"id":"n1820938238","loc":[-85.2588882,41.9986877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938239":{"id":"n1820938239","loc":[-85.0656458,42.1050892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938240":{"id":"n1820938240","loc":[-84.9913915,42.086098],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938241":{"id":"n1820938241","loc":[-85.4752416,41.9944402],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938242":{"id":"n1820938242","loc":[-85.1214304,42.0791147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938243":{"id":"n1820938243","loc":[-85.0075183,42.0886925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938244":{"id":"n1820938244","loc":[-85.1052888,42.0872087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938245":{"id":"n1820938245","loc":[-85.3104252,41.9703393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938246":{"id":"n1820938246","loc":[-85.232109,42.0318158],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938247":{"id":"n1820938247","loc":[-85.0756075,42.1059528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938248":{"id":"n1820938248","loc":[-85.0075612,42.0890866],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938249":{"id":"n1820938249","loc":[-85.1013312,42.0897474],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938250":{"id":"n1820938250","loc":[-85.1168076,42.0828919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938251":{"id":"n1820938251","loc":[-85.2951367,41.9723334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938252":{"id":"n1820938252","loc":[-85.0879363,42.0976053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938253":{"id":"n1820938253","loc":[-85.0354763,42.1021838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938254":{"id":"n1820938254","loc":[-85.2379627,42.0236339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938255":{"id":"n1820938255","loc":[-85.1308245,42.0685364],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938256":{"id":"n1820938256","loc":[-85.0914446,42.0934774],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938257":{"id":"n1820938257","loc":[-85.2436812,42.014069],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938258":{"id":"n1820938258","loc":[-85.0682529,42.1056106],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938259":{"id":"n1820938259","loc":[-85.290652,41.9766805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938260":{"id":"n1820938260","loc":[-85.0133494,42.0897434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938261":{"id":"n1820938261","loc":[-85.2753047,41.9949429],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938262":{"id":"n1820938262","loc":[-85.0314691,42.0950788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938263":{"id":"n1820938263","loc":[-85.3444786,41.9908359],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938264":{"id":"n1820938264","loc":[-85.0443115,42.1009061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938265":{"id":"n1820938265","loc":[-85.0634853,42.1043159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938267":{"id":"n1820938267","loc":[-85.3978223,42.0053952],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938268":{"id":"n1820938268","loc":[-85.0228659,42.0911885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938269":{"id":"n1820938269","loc":[-85.0220237,42.0906272],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938270":{"id":"n1820938270","loc":[-85.1061525,42.0863369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938271":{"id":"n1820938271","loc":[-85.2382309,42.0233708],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938272":{"id":"n1820938272","loc":[-85.310672,41.9702755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938273":{"id":"n1820938273","loc":[-85.1448192,42.0652613],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938274":{"id":"n1820938274","loc":[-85.6036057,41.9403766],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938275":{"id":"n1820938275","loc":[-85.0778941,42.1032413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938276":{"id":"n1820938276","loc":[-85.1279374,42.0723974],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938277":{"id":"n1820938277","loc":[-85.2806635,41.9847836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938278":{"id":"n1820938278","loc":[-85.2653201,41.9976352],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938279":{"id":"n1820938279","loc":[-85.0351665,42.1001805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938280":{"id":"n1820938280","loc":[-85.0718269,42.1056253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938281":{"id":"n1820938281","loc":[-85.2574248,42.0075322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938282":{"id":"n1820938282","loc":[-85.126666,42.0740778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938283":{"id":"n1820938283","loc":[-85.077705,42.1034733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938284":{"id":"n1820938284","loc":[-85.3535552,41.9919045],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938286":{"id":"n1820938286","loc":[-85.2810711,41.9866657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938287":{"id":"n1820938287","loc":[-85.4567494,42.0019885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938288":{"id":"n1820938288","loc":[-85.2642419,41.9992936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938289":{"id":"n1820938289","loc":[-85.2643344,41.9980925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938290":{"id":"n1820938290","loc":[-85.3270335,41.9776125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938291":{"id":"n1820938291","loc":[-85.1200584,42.0795077],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938292":{"id":"n1820938292","loc":[-85.2290792,42.0340256],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938293":{"id":"n1820938293","loc":[-85.6015887,41.9401372],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938294":{"id":"n1820938294","loc":[-85.5370869,41.970488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938295":{"id":"n1820938295","loc":[-85.3108866,41.9698048],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938297":{"id":"n1820938297","loc":[-85.1556511,42.0628184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938298":{"id":"n1820938298","loc":[-85.0027922,42.0875221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938300":{"id":"n1820938300","loc":[-85.3873338,42.0040614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938301":{"id":"n1820938301","loc":[-85.0350753,42.1004034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938302":{"id":"n1820938302","loc":[-85.6239476,41.9411906],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938304":{"id":"n1820938304","loc":[-85.0118246,42.0897964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938306":{"id":"n1820938306","loc":[-85.4796877,41.995275],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938307":{"id":"n1820938307","loc":[-85.5388636,41.9707856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938309":{"id":"n1820938309","loc":[-85.2971902,41.9727773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938310":{"id":"n1820938310","loc":[-85.5426831,41.9715513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938311":{"id":"n1820938311","loc":[-85.2798373,41.9836671],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938312":{"id":"n1820938312","loc":[-85.2432198,42.0104017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938313":{"id":"n1820938313","loc":[-85.2650412,41.9987554],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938317":{"id":"n1820938317","loc":[-85.0015423,42.0882386],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938318":{"id":"n1820938318","loc":[-85.1409783,42.064879],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938319":{"id":"n1820938319","loc":[-85.1691908,42.058995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938320":{"id":"n1820938320","loc":[-85.1059165,42.0864882],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938321":{"id":"n1820938321","loc":[-85.3664941,41.9965771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938323":{"id":"n1820938323","loc":[-85.3143198,41.9710971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938324":{"id":"n1820938324","loc":[-85.0016067,42.0880675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938325":{"id":"n1820938325","loc":[-85.0148139,42.0887164],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938326":{"id":"n1820938326","loc":[-85.0324682,42.0959056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938327":{"id":"n1820938327","loc":[-85.0898661,42.0939921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938328":{"id":"n1820938328","loc":[-85.2556427,42.0004936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938329":{"id":"n1820938329","loc":[-85.6287112,41.9407437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938330":{"id":"n1820938330","loc":[-84.9913392,42.0866701],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938331":{"id":"n1820938331","loc":[-85.2685777,41.9984632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938332":{"id":"n1820938332","loc":[-85.0078884,42.0901614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938333":{"id":"n1820938333","loc":[-84.999642,42.0878616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938334":{"id":"n1820938334","loc":[-85.0188909,42.0899186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938335":{"id":"n1820938335","loc":[-85.2830238,41.9819843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938336":{"id":"n1820938336","loc":[-85.2491421,42.0096204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938337":{"id":"n1820938337","loc":[-85.0585701,42.1034295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938338":{"id":"n1820938338","loc":[-85.0651965,42.1051636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938339":{"id":"n1820938339","loc":[-85.0583944,42.104292],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938340":{"id":"n1820938340","loc":[-85.119876,42.0801567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938341":{"id":"n1820938341","loc":[-85.0943937,42.0931323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938342":{"id":"n1820938342","loc":[-85.1504583,42.0613209],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938343":{"id":"n1820938343","loc":[-85.0425426,42.1019836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938345":{"id":"n1820938345","loc":[-84.9991391,42.0878206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938346":{"id":"n1820938346","loc":[-85.2563841,42.0094614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938347":{"id":"n1820938347","loc":[-85.0515387,42.103297],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938348":{"id":"n1820938348","loc":[-85.0857261,42.1003636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938349":{"id":"n1820938349","loc":[-85.078971,42.1029241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938350":{"id":"n1820938350","loc":[-85.5699558,41.958931],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938351":{"id":"n1820938351","loc":[-85.3181285,41.9696533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938352":{"id":"n1820938352","loc":[-85.5998506,41.9402329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938353":{"id":"n1820938353","loc":[-85.2567277,42.000317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938354":{"id":"n1820938354","loc":[-85.3082795,41.9708338],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938355":{"id":"n1820938355","loc":[-85.3127856,41.9692784],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938356":{"id":"n1820938356","loc":[-85.0340775,42.1010721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938357":{"id":"n1820938357","loc":[-85.3158111,41.9706583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938359":{"id":"n1820938359","loc":[-85.2312035,42.0280412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938360":{"id":"n1820938360","loc":[-85.2448613,42.018477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938361":{"id":"n1820938361","loc":[-85.29077,41.9759068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938364":{"id":"n1820938364","loc":[-85.3677387,41.9976615],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938365":{"id":"n1820938365","loc":[-85.0785204,42.1030355],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938366":{"id":"n1820938366","loc":[-85.2262039,42.0333722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938367":{"id":"n1820938367","loc":[-85.1226011,42.0780902],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938368":{"id":"n1820938368","loc":[-85.3229673,41.971129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938369":{"id":"n1820938369","loc":[-85.385334,42.0000056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938370":{"id":"n1820938370","loc":[-85.000098,42.0879094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938372":{"id":"n1820938372","loc":[-85.3852481,42.0025091],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938373":{"id":"n1820938373","loc":[-85.3770513,41.9982515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938374":{"id":"n1820938374","loc":[-85.6278314,41.9405362],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938375":{"id":"n1820938375","loc":[-85.6355133,41.9344068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938376":{"id":"n1820938376","loc":[-85.635642,41.9324753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938377":{"id":"n1820938377","loc":[-85.3154463,41.970778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938378":{"id":"n1820938378","loc":[-85.0920334,42.093411],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938379":{"id":"n1820938379","loc":[-85.3269155,41.9722297],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938381":{"id":"n1820938381","loc":[-85.1134334,42.0849184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938382":{"id":"n1820938382","loc":[-85.005968,42.088585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938384":{"id":"n1820938384","loc":[-85.1245203,42.0757183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938385":{"id":"n1820938385","loc":[-85.020704,42.0905396],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938386":{"id":"n1820938386","loc":[-85.119585,42.0808984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938387":{"id":"n1820938387","loc":[-85.0072447,42.0880117],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938388":{"id":"n1820938388","loc":[-85.2742908,41.9960273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938389":{"id":"n1820938389","loc":[-85.3275807,41.9696852],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938390":{"id":"n1820938390","loc":[-85.2385635,42.0231556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938392":{"id":"n1820938392","loc":[-85.0202856,42.0900778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938393":{"id":"n1820938393","loc":[-85.2067847,42.0395398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938394":{"id":"n1820938394","loc":[-85.5183544,41.9713495],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938396":{"id":"n1820938396","loc":[-85.5073037,41.9736787],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938397":{"id":"n1820938397","loc":[-85.2519638,42.0114225],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938398":{"id":"n1820938398","loc":[-85.287487,41.9793285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938399":{"id":"n1820938399","loc":[-85.2298088,42.0336431],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938400":{"id":"n1820938400","loc":[-85.229444,42.0339141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938401":{"id":"n1820938401","loc":[-85.2421791,42.0220239],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938402":{"id":"n1820938402","loc":[-85.2976687,41.9737612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938403":{"id":"n1820938403","loc":[-85.3622069,41.993473],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938404":{"id":"n1820938404","loc":[-85.2465458,42.014906],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938405":{"id":"n1820938405","loc":[-85.5724663,41.9639412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938406":{"id":"n1820938406","loc":[-85.3708501,41.9982037],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938408":{"id":"n1820938408","loc":[-85.2564592,42.0055311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938409":{"id":"n1820938409","loc":[-85.1192846,42.0810856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938410":{"id":"n1820938410","loc":[-85.5623812,41.971663],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938411":{"id":"n1820938411","loc":[-85.3221948,41.9719665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938412":{"id":"n1820938412","loc":[-85.5168738,41.9710305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938413":{"id":"n1820938413","loc":[-85.4546852,42.0061127],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938414":{"id":"n1820938414","loc":[-85.5896153,41.9463617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938415":{"id":"n1820938415","loc":[-85.2978189,41.9722138],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938416":{"id":"n1820938416","loc":[-85.1021681,42.0883581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938417":{"id":"n1820938417","loc":[-85.2797193,41.9912984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938419":{"id":"n1820938419","loc":[-85.2362461,42.0248533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938420":{"id":"n1820938420","loc":[-85.4833639,41.9846252],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820938422":{"id":"n1820938422","loc":[-85.3281064,41.9689433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938424":{"id":"n1820938424","loc":[-85.2416963,42.0130088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938425":{"id":"n1820938425","loc":[-85.5718655,41.9564577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938426":{"id":"n1820938426","loc":[-85.0512812,42.1030701],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938427":{"id":"n1820938427","loc":[-85.1273527,42.0723616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938428":{"id":"n1820938428","loc":[-85.0215033,42.0904083],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938429":{"id":"n1820938429","loc":[-85.6169953,41.942228],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938430":{"id":"n1820938430","loc":[-85.2829165,41.9907243],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938431":{"id":"n1820938431","loc":[-85.2240796,42.0374203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938432":{"id":"n1820938432","loc":[-85.0167598,42.0898442],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938433":{"id":"n1820938433","loc":[-85.2132649,42.0411334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938434":{"id":"n1820938434","loc":[-85.2293839,42.031513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938435":{"id":"n1820938435","loc":[-85.1203374,42.0792608],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938436":{"id":"n1820938436","loc":[-85.109571,42.086268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938437":{"id":"n1820938437","loc":[-85.1079026,42.0853842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938438":{"id":"n1820938438","loc":[-85.109237,42.0862413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938439":{"id":"n1820938439","loc":[-85.2259936,42.0350831],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938440":{"id":"n1820938440","loc":[-85.3669705,41.99679],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938441":{"id":"n1820938441","loc":[-85.2418143,42.0223507],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938442":{"id":"n1820938442","loc":[-85.3101248,41.9702515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938443":{"id":"n1820938443","loc":[-85.069315,42.1059688],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938444":{"id":"n1820938444","loc":[-85.205862,42.0410378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938445":{"id":"n1820938445","loc":[-85.0388076,42.1036604],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938446":{"id":"n1820938446","loc":[-85.2225389,42.0370115],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938447":{"id":"n1820938447","loc":[-85.3241474,41.9719346],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938448":{"id":"n1820938448","loc":[-85.3125496,41.9690789],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938449":{"id":"n1820938449","loc":[-85.1146497,42.0857039],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938450":{"id":"n1820938450","loc":[-85.1333944,42.0714963],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938451":{"id":"n1820938451","loc":[-85.5619306,41.9720937],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938452":{"id":"n1820938452","loc":[-85.2553651,42.0006479],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938453":{"id":"n1820938453","loc":[-85.3151137,41.9710093],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938454":{"id":"n1820938454","loc":[-85.2592315,41.9977947],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938455":{"id":"n1820938455","loc":[-85.2655723,41.9995966],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938456":{"id":"n1820938456","loc":[-85.4820652,41.9959233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938459":{"id":"n1820938459","loc":[-85.450737,42.0055068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938460":{"id":"n1820938460","loc":[-85.2428658,42.0205573],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938461":{"id":"n1820938461","loc":[-85.0835576,42.1021559],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938462":{"id":"n1820938462","loc":[-85.244636,42.0194733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938463":{"id":"n1820938463","loc":[-85.5702562,41.9581332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938465":{"id":"n1820938465","loc":[-85.5680031,41.9659515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938467":{"id":"n1820938467","loc":[-85.2798752,41.9948353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938468":{"id":"n1820938468","loc":[-85.0477407,42.1015537],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938469":{"id":"n1820938469","loc":[-85.6403842,41.913732],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938470":{"id":"n1820938470","loc":[-85.0396029,42.103289],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938471":{"id":"n1820938471","loc":[-85.2824702,41.9907777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938472":{"id":"n1820938472","loc":[-85.2969284,41.9735538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938474":{"id":"n1820938474","loc":[-85.401041,42.0070853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938475":{"id":"n1820938475","loc":[-85.4116625,42.0073883],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938476":{"id":"n1820938476","loc":[-85.0437764,42.1016214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938477":{"id":"n1820938477","loc":[-85.3643269,41.9958436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938478":{"id":"n1820938478","loc":[-85.3895182,42.0009465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938479":{"id":"n1820938479","loc":[-85.636157,41.9333373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938480":{"id":"n1820938480","loc":[-85.2811355,41.9858044],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938481":{"id":"n1820938481","loc":[-85.0239052,42.092153],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938482":{"id":"n1820938482","loc":[-85.2558798,42.0053557],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938483":{"id":"n1820938483","loc":[-85.2544422,42.0047339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938484":{"id":"n1820938484","loc":[-85.4864683,41.9843183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938485":{"id":"n1820938485","loc":[-85.2554185,42.0031075],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938486":{"id":"n1820938486","loc":[-85.3082795,41.9712486],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938487":{"id":"n1820938487","loc":[-85.2433378,42.0133436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938488":{"id":"n1820938488","loc":[-85.0216696,42.0904162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938489":{"id":"n1820938489","loc":[-85.2546138,42.0050289],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938490":{"id":"n1820938490","loc":[-85.2717521,41.9977349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938491":{"id":"n1820938491","loc":[-85.0100489,42.0908195],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938492":{"id":"n1820938492","loc":[-85.207879,42.0392211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938493":{"id":"n1820938493","loc":[-85.0007363,42.0882836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938494":{"id":"n1820938494","loc":[-85.5775303,41.9504097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938495":{"id":"n1820938495","loc":[-85.1131584,42.0847683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938496":{"id":"n1820938496","loc":[-85.0887825,42.0941633],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938497":{"id":"n1820938497","loc":[-85.1185926,42.0818938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938498":{"id":"n1820938498","loc":[-85.2748487,41.9948712],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938499":{"id":"n1820938499","loc":[-85.2566952,42.0090788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938500":{"id":"n1820938500","loc":[-85.0774757,42.1036234],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938501":{"id":"n1820938501","loc":[-85.4190869,42.008903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938502":{"id":"n1820938502","loc":[-85.1140395,42.0850577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938503":{"id":"n1820938503","loc":[-85.1136104,42.0848627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938504":{"id":"n1820938504","loc":[-85.5828089,41.9480638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938505":{"id":"n1820938505","loc":[-85.625514,41.9405202],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938506":{"id":"n1820938506","loc":[-85.2063384,42.0398322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938507":{"id":"n1820938507","loc":[-85.3395476,41.9851636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938508":{"id":"n1820938508","loc":[-85.0328853,42.0963606],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938510":{"id":"n1820938510","loc":[-85.1170369,42.0843702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938511":{"id":"n1820938511","loc":[-85.2784748,41.9868487],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938512":{"id":"n1820938512","loc":[-85.6310501,41.9435528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938514":{"id":"n1820938514","loc":[-85.0334284,42.0981028],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938515":{"id":"n1820938515","loc":[-84.9912091,42.0868226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938516":{"id":"n1820938516","loc":[-85.2806141,41.9940351],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938517":{"id":"n1820938517","loc":[-85.1233025,42.0776734],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938518":{"id":"n1820938518","loc":[-85.2047891,42.0429023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938519":{"id":"n1820938519","loc":[-85.1475443,42.0648312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938520":{"id":"n1820938520","loc":[-85.2644685,41.9990891],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938521":{"id":"n1820938521","loc":[-85.1056281,42.0872553],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938522":{"id":"n1820938522","loc":[-85.4813184,41.9930105],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938523":{"id":"n1820938523","loc":[-85.321551,41.9722936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938524":{"id":"n1820938524","loc":[-85.1564664,42.0631211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938525":{"id":"n1820938525","loc":[-85.4149885,42.0079144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938527":{"id":"n1820938527","loc":[-85.2861888,41.9803653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938528":{"id":"n1820938528","loc":[-85.1301379,42.0682178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938529":{"id":"n1820938529","loc":[-85.4156537,42.0084247],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938530":{"id":"n1820938530","loc":[-85.245151,42.0176082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938531":{"id":"n1820938531","loc":[-85.457818,42.0001651],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938532":{"id":"n1820938532","loc":[-85.310951,41.9694538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938533":{"id":"n1820938533","loc":[-85.1509089,42.0611298],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938534":{"id":"n1820938534","loc":[-85.1108249,42.086321],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938535":{"id":"n1820938535","loc":[-85.1260344,42.0740687],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938536":{"id":"n1820938536","loc":[-85.4561228,42.0042791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938537":{"id":"n1820938537","loc":[-85.2805082,41.9945761],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938538":{"id":"n1820938538","loc":[-85.273352,41.9981921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938539":{"id":"n1820938539","loc":[-85.1084216,42.0864364],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938540":{"id":"n1820938540","loc":[-85.5009737,41.9773637],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938541":{"id":"n1820938541","loc":[-85.3960843,42.0051879],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938542":{"id":"n1820938542","loc":[-85.3425088,41.9865034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938545":{"id":"n1820938545","loc":[-84.9937907,42.0860849],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938546":{"id":"n1820938546","loc":[-85.1084176,42.086065],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938547":{"id":"n1820938547","loc":[-85.3492851,41.9924786],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938548":{"id":"n1820938548","loc":[-85.2512235,42.0101147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938549":{"id":"n1820938549","loc":[-85.3717298,41.9979326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938551":{"id":"n1820938551","loc":[-85.2573712,42.0064081],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938552":{"id":"n1820938552","loc":[-85.2514596,42.010139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938553":{"id":"n1820938553","loc":[-85.416512,42.0088073],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938554":{"id":"n1820938554","loc":[-85.4365964,42.0061606],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938555":{"id":"n1820938555","loc":[-85.4552431,42.0057301],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938556":{"id":"n1820938556","loc":[-85.2916283,41.9778769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938557":{"id":"n1820938557","loc":[-85.100709,42.0902968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938558":{"id":"n1820938558","loc":[-85.4703064,41.9965771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938559":{"id":"n1820938559","loc":[-85.3134722,41.9696134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938560":{"id":"n1820938560","loc":[-85.4834213,41.9885768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938561":{"id":"n1820938561","loc":[-85.2740641,41.9975236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938562":{"id":"n1820938562","loc":[-85.148334,42.0623405],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938563":{"id":"n1820938563","loc":[-85.2358598,42.0263675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938565":{"id":"n1820938565","loc":[-85.2902979,41.9790892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938566":{"id":"n1820938566","loc":[-85.2528865,42.0112869],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938567":{"id":"n1820938567","loc":[-85.2595319,41.9973003],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938568":{"id":"n1820938568","loc":[-85.071151,42.105689],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938570":{"id":"n1820938570","loc":[-85.299278,41.9732188],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938571":{"id":"n1820938571","loc":[-85.0354669,42.1024771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938583":{"id":"n1820938583","loc":[-85.3313937,41.972562],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938585":{"id":"n1820938585","loc":[-85.0756933,42.1058334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938587":{"id":"n1820938587","loc":[-85.3130324,41.9694219],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938590":{"id":"n1820938590","loc":[-85.0934227,42.0931681],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938592":{"id":"n1820938592","loc":[-85.3517956,41.9922553],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938593":{"id":"n1820938593","loc":[-85.4023971,42.0065169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938594":{"id":"n1820938594","loc":[-85.3506798,41.9925583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938595":{"id":"n1820938595","loc":[-85.3673524,41.9971193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938596":{"id":"n1820938596","loc":[-85.1073608,42.0853523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938597":{"id":"n1820938597","loc":[-85.2976579,41.972477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938598":{"id":"n1820938598","loc":[-85.5616517,41.9694295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938599":{"id":"n1820938599","loc":[-85.3552074,41.9921915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938600":{"id":"n1820938600","loc":[-85.4665126,41.9999953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938601":{"id":"n1820938601","loc":[-85.2740695,41.9966226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938602":{"id":"n1820938602","loc":[-85.279376,41.9886669],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938603":{"id":"n1820938603","loc":[-85.0771109,42.1040413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938604":{"id":"n1820938604","loc":[-85.2636049,41.9977895],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938605":{"id":"n1820938605","loc":[-85.3762145,41.9976456],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938606":{"id":"n1820938606","loc":[-85.2321369,42.0289577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938620":{"id":"n1820938620","loc":[-85.4947724,41.9776189],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938622":{"id":"n1820938622","loc":[-85.1547069,42.0622768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938624":{"id":"n1820938624","loc":[-85.0005056,42.0880249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938626":{"id":"n1820938626","loc":[-85.0735596,42.1059357],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938628":{"id":"n1820938628","loc":[-85.4665298,41.99932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938629":{"id":"n1820938629","loc":[-85.434515,42.0065273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938630":{"id":"n1820938630","loc":[-85.117462,42.0823823],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938631":{"id":"n1820938631","loc":[-85.0131777,42.0890707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938632":{"id":"n1820938632","loc":[-85.0875326,42.0961934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938634":{"id":"n1820938634","loc":[-85.6433839,41.9112042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938635":{"id":"n1820938635","loc":[-85.1366181,42.064969],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938636":{"id":"n1820938636","loc":[-85.073109,42.1057925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938638":{"id":"n1820938638","loc":[-85.161406,42.0632541],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938640":{"id":"n1820938640","loc":[-85.6343932,41.9188845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938642":{"id":"n1820938642","loc":[-85.2500004,42.010306],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938644":{"id":"n1820938644","loc":[-85.291918,41.9753166],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938663":{"id":"n1820938663","loc":[-85.2841611,41.9916812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938664":{"id":"n1820938664","loc":[-85.1052955,42.0868134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938665":{"id":"n1820938665","loc":[-85.4606118,42.0005534],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938666":{"id":"n1820938666","loc":[-85.5672736,41.9642922],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938667":{"id":"n1820938667","loc":[-85.6348481,41.9316932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938668":{"id":"n1820938668","loc":[-85.0224904,42.0909576],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938669":{"id":"n1820938669","loc":[-85.0133856,42.0899755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938670":{"id":"n1820938670","loc":[-85.344779,41.991139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938671":{"id":"n1820938671","loc":[-85.632874,41.9425313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938673":{"id":"n1820938673","loc":[-85.4941501,41.9779698],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938675":{"id":"n1820938675","loc":[-85.0862559,42.0997519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938676":{"id":"n1820938676","loc":[-85.0097874,42.0898032],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938678":{"id":"n1820938678","loc":[-84.9913553,42.0863675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938680":{"id":"n1820938680","loc":[-85.0533666,42.1038315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938682":{"id":"n1820938682","loc":[-85.2950294,41.9743914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938684":{"id":"n1820938684","loc":[-85.2517385,42.0104499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938686":{"id":"n1820938686","loc":[-85.0247971,42.0922514],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938688":{"id":"n1820938688","loc":[-85.0807037,42.1026017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938690":{"id":"n1820938690","loc":[-85.52462,41.9722748],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938694":{"id":"n1820938694","loc":[-85.2586535,41.9988818],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938695":{"id":"n1820938695","loc":[-85.0931612,42.092948],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938697":{"id":"n1820938697","loc":[-85.2470822,42.016564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938698":{"id":"n1820938698","loc":[-85.4143018,42.0075158],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938699":{"id":"n1820938699","loc":[-85.0771484,42.104487],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938700":{"id":"n1820938700","loc":[-85.0291208,42.0942775],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938701":{"id":"n1820938701","loc":[-85.6367964,41.9185971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938702":{"id":"n1820938702","loc":[-85.085419,42.1010693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938703":{"id":"n1820938703","loc":[-85.0583877,42.1040584],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938705":{"id":"n1820938705","loc":[-85.2573379,42.0003182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938706":{"id":"n1820938706","loc":[-85.2655937,41.9981575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938707":{"id":"n1820938707","loc":[-85.023181,42.0915758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938708":{"id":"n1820938708","loc":[-85.2318687,42.0274674],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938709":{"id":"n1820938709","loc":[-85.1056389,42.0866184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938710":{"id":"n1820938710","loc":[-85.5276265,41.9700978],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820938711":{"id":"n1820938711","loc":[-85.0864128,42.0945761],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938712":{"id":"n1820938712","loc":[-84.9897071,42.0871888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938714":{"id":"n1820938714","loc":[-85.1328845,42.0665611],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938715":{"id":"n1820938715","loc":[-85.0336537,42.0991377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938716":{"id":"n1820938716","loc":[-85.087597,42.0986692],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938717":{"id":"n1820938717","loc":[-85.1241394,42.0761882],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938718":{"id":"n1820938718","loc":[-85.1176002,42.0847723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938719":{"id":"n1820938719","loc":[-85.2423615,42.0216572],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938721":{"id":"n1820938721","loc":[-85.2196378,42.0387908],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938722":{"id":"n1820938722","loc":[-85.0164272,42.0890082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938723":{"id":"n1820938723","loc":[-85.5917182,41.9451807],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938724":{"id":"n1820938724","loc":[-85.2458806,42.0086638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938725":{"id":"n1820938725","loc":[-85.1264474,42.0740527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938726":{"id":"n1820938726","loc":[-85.1961631,42.04738],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938727":{"id":"n1820938727","loc":[-85.2784643,41.9943648],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938728":{"id":"n1820938728","loc":[-85.2905554,41.9763216],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938729":{"id":"n1820938729","loc":[-85.2913386,41.9771511],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938730":{"id":"n1820938730","loc":[-85.0112519,42.0895683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938732":{"id":"n1820938732","loc":[-85.4290261,42.0064531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938733":{"id":"n1820938733","loc":[-85.3867073,42.0031629],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938734":{"id":"n1820938734","loc":[-85.4943647,41.9836005],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938735":{"id":"n1820938735","loc":[-85.4900303,41.9860728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938736":{"id":"n1820938736","loc":[-85.0866153,42.0944539],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938737":{"id":"n1820938737","loc":[-85.0869532,42.0990911],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938738":{"id":"n1820938738","loc":[-85.6321659,41.9208851],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938739":{"id":"n1820938739","loc":[-85.5930485,41.9433453],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938740":{"id":"n1820938740","loc":[-85.0406851,42.102733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938741":{"id":"n1820938741","loc":[-85.1051131,42.0869846],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938742":{"id":"n1820938742","loc":[-85.1377554,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938743":{"id":"n1820938743","loc":[-85.2795694,41.994604],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938745":{"id":"n1820938745","loc":[-85.4948153,41.9826594],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938746":{"id":"n1820938746","loc":[-85.4488916,42.0050923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938747":{"id":"n1820938747","loc":[-85.1052526,42.0866144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938748":{"id":"n1820938748","loc":[-85.1468749,42.0653991],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938749":{"id":"n1820938749","loc":[-85.0856886,42.1006104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938750":{"id":"n1820938750","loc":[-85.2144022,42.0404004],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938751":{"id":"n1820938751","loc":[-85.277771,41.9907458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938752":{"id":"n1820938752","loc":[-85.1474542,42.0636149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938753":{"id":"n1820938753","loc":[-85.0820515,42.1028075],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938754":{"id":"n1820938754","loc":[-85.1122948,42.08525],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938756":{"id":"n1820938756","loc":[-85.0173352,42.0901933],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938757":{"id":"n1820938757","loc":[-85.2259721,42.0354018],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938758":{"id":"n1820938758","loc":[-85.0872389,42.0987795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938759":{"id":"n1820938759","loc":[-85.2291436,42.031874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938760":{"id":"n1820938760","loc":[-85.3802485,42.0016002],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938761":{"id":"n1820938761","loc":[-85.3945822,42.0057938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938762":{"id":"n1820938762","loc":[-85.5273237,41.9713017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938763":{"id":"n1820938763","loc":[-85.2868862,41.9798629],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938764":{"id":"n1820938764","loc":[-85.2516677,42.0107899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938766":{"id":"n1820938766","loc":[-85.3183002,41.9693103],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938768":{"id":"n1820938768","loc":[-85.2159042,42.0401932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938770":{"id":"n1820938770","loc":[-85.0094481,42.0911141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938771":{"id":"n1820938771","loc":[-85.0244538,42.0922155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938772":{"id":"n1820938772","loc":[-85.231697,42.028862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938773":{"id":"n1820938773","loc":[-85.2102394,42.0390617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938774":{"id":"n1820938774","loc":[-85.2463419,42.0151212],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938775":{"id":"n1820938775","loc":[-85.0726195,42.1056424],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938776":{"id":"n1820938776","loc":[-85.0060431,42.0883262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938778":{"id":"n1820938778","loc":[-85.425889,42.0056982],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938779":{"id":"n1820938779","loc":[-85.1183042,42.0820638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938780":{"id":"n1820938780","loc":[-85.441596,42.0058257],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938781":{"id":"n1820938781","loc":[-85.1124879,42.0847086],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938782":{"id":"n1820938782","loc":[-85.2452733,42.0153894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938783":{"id":"n1820938783","loc":[-85.2741191,41.9969244],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938784":{"id":"n1820938784","loc":[-85.2829487,41.9822236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938785":{"id":"n1820938785","loc":[-85.3202743,41.972142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938786":{"id":"n1820938786","loc":[-85.2345402,42.0266465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938787":{"id":"n1820938787","loc":[-85.3037626,41.9724611],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938789":{"id":"n1820938789","loc":[-85.2474792,42.0161973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938790":{"id":"n1820938790","loc":[-85.2951045,41.9727323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938791":{"id":"n1820938791","loc":[-85.322345,41.9712726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938792":{"id":"n1820938792","loc":[-85.2402372,42.0110394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938793":{"id":"n1820938793","loc":[-85.5135693,41.9698659],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938794":{"id":"n1820938794","loc":[-85.4695339,41.9967366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938796":{"id":"n1820938796","loc":[-85.0418492,42.1011131],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938797":{"id":"n1820938797","loc":[-85.3334107,41.9806337],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938798":{"id":"n1820938798","loc":[-85.5625314,41.9711685],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938799":{"id":"n1820938799","loc":[-85.3755707,41.9973585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938800":{"id":"n1820938800","loc":[-85.5227532,41.9722429],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938801":{"id":"n1820938801","loc":[-85.4267687,42.0052836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938803":{"id":"n1820938803","loc":[-85.0284704,42.0940837],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938804":{"id":"n1820938804","loc":[-85.015585,42.0885305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938805":{"id":"n1820938805","loc":[-85.0765905,42.1053865],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938806":{"id":"n1820938806","loc":[-85.2614953,41.9964551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938808":{"id":"n1820938808","loc":[-85.0307355,42.0947313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938810":{"id":"n1820938810","loc":[-85.3894753,42.0003565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938812":{"id":"n1820938812","loc":[-85.0868848,42.095006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938813":{"id":"n1820938813","loc":[-85.3854198,42.0009465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938814":{"id":"n1820938814","loc":[-85.2659692,41.9993534],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938815":{"id":"n1820938815","loc":[-85.1234259,42.0765266],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938816":{"id":"n1820938816","loc":[-85.1426906,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938818":{"id":"n1820938818","loc":[-85.1014533,42.0893067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938819":{"id":"n1820938819","loc":[-85.0883064,42.098067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938820":{"id":"n1820938820","loc":[-85.0503156,42.102704],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938821":{"id":"n1820938821","loc":[-85.1179649,42.0821884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938822":{"id":"n1820938822","loc":[-85.3484697,41.9921596],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938823":{"id":"n1820938823","loc":[-85.3732962,41.9970874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938824":{"id":"n1820938824","loc":[-85.2784104,41.9898312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938825":{"id":"n1820938825","loc":[-85.4441709,42.0052198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938826":{"id":"n1820938826","loc":[-85.3925438,42.0038326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938829":{"id":"n1820938829","loc":[-85.5717582,41.9621861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938830":{"id":"n1820938830","loc":[-85.0866314,42.0995051],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938831":{"id":"n1820938831","loc":[-85.576672,41.9522769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938832":{"id":"n1820938832","loc":[-85.1587238,42.0636205],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938833":{"id":"n1820938833","loc":[-85.3804245,41.9999155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938834":{"id":"n1820938834","loc":[-85.280083,41.9948843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938836":{"id":"n1820938836","loc":[-85.561892,41.9686693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938837":{"id":"n1820938837","loc":[-85.0158975,42.0885253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938838":{"id":"n1820938838","loc":[-85.4248204,42.007633],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938839":{"id":"n1820938839","loc":[-85.0352738,42.1039657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938840":{"id":"n1820938840","loc":[-85.211956,42.0411812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938841":{"id":"n1820938841","loc":[-85.4816575,41.9908997],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938842":{"id":"n1820938842","loc":[-85.3807635,42.0020308],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938843":{"id":"n1820938843","loc":[-85.0100865,42.0898521],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938844":{"id":"n1820938844","loc":[-85.0103936,42.0897434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938848":{"id":"n1820938848","loc":[-85.2430052,42.0131363],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938849":{"id":"n1820938849","loc":[-85.112559,42.0853723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938851":{"id":"n1820938851","loc":[-85.3641553,41.9952535],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938852":{"id":"n1820938852","loc":[-85.2087373,42.0390777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938853":{"id":"n1820938853","loc":[-85.2473933,42.0148263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938854":{"id":"n1820938854","loc":[-85.0213464,42.090509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938855":{"id":"n1820938855","loc":[-85.0673208,42.1052353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938856":{"id":"n1820938856","loc":[-85.1003053,42.0905528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938857":{"id":"n1820938857","loc":[-85.2617367,41.9965389],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938858":{"id":"n1820938858","loc":[-85.280363,41.9916015],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938859":{"id":"n1820938859","loc":[-85.0038866,42.0873469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938860":{"id":"n1820938860","loc":[-85.2476401,42.0151451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938861":{"id":"n1820938861","loc":[-85.193717,42.0499294],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938862":{"id":"n1820938862","loc":[-85.3478689,41.9917609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938863":{"id":"n1820938863","loc":[-85.5638017,41.9648881],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938864":{"id":"n1820938864","loc":[-85.4356308,42.0064476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938865":{"id":"n1820938865","loc":[-85.0561722,42.1023509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938867":{"id":"n1820938867","loc":[-85.2256031,42.0356034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938868":{"id":"n1820938868","loc":[-85.6102576,41.9420844],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938869":{"id":"n1820938869","loc":[-85.2285213,42.0339938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938870":{"id":"n1820938870","loc":[-85.0326238,42.0978003],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938871":{"id":"n1820938871","loc":[-85.0131389,42.0903736],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938872":{"id":"n1820938872","loc":[-85.2550859,42.0012259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938873":{"id":"n1820938873","loc":[-85.1130029,42.0846966],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938874":{"id":"n1820938874","loc":[-85.1579041,42.06336],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938875":{"id":"n1820938875","loc":[-85.0430522,42.1020234],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938876":{"id":"n1820938876","loc":[-85.2786679,41.9865935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938877":{"id":"n1820938877","loc":[-85.1221666,42.0788706],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938878":{"id":"n1820938878","loc":[-85.2554614,42.0103303],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938879":{"id":"n1820938879","loc":[-85.2349801,42.0265748],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938880":{"id":"n1820938880","loc":[-85.0997434,42.0907864],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938881":{"id":"n1820938881","loc":[-85.0045464,42.0878167],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938882":{"id":"n1820938882","loc":[-85.2728048,41.9982519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938883":{"id":"n1820938883","loc":[-85.3111333,41.9691587],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938884":{"id":"n1820938884","loc":[-85.3219802,41.9721899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938885":{"id":"n1820938885","loc":[-85.3091378,41.9699325],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938887":{"id":"n1820938887","loc":[-85.4242367,42.0085203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938888":{"id":"n1820938888","loc":[-84.9968377,42.0874504],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938890":{"id":"n1820938890","loc":[-85.5443139,41.9714078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938891":{"id":"n1820938891","loc":[-85.6404013,41.9154676],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938892":{"id":"n1820938892","loc":[-85.3644986,41.9962582],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938893":{"id":"n1820938893","loc":[-85.0496772,42.1018323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938894":{"id":"n1820938894","loc":[-85.297261,41.9737373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938895":{"id":"n1820938895","loc":[-85.0327096,42.098071],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938896":{"id":"n1820938896","loc":[-85.3856773,41.9996867],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938897":{"id":"n1820938897","loc":[-85.0493862,42.1015509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938898":{"id":"n1820938898","loc":[-84.9969879,42.0876614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938899":{"id":"n1820938899","loc":[-85.0848625,42.1013587],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938900":{"id":"n1820938900","loc":[-85.5853195,41.9479201],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938901":{"id":"n1820938901","loc":[-85.6329169,41.9387964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938902":{"id":"n1820938902","loc":[-85.0843046,42.1029468],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938903":{"id":"n1820938903","loc":[-85.1228747,42.0778474],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938904":{"id":"n1820938904","loc":[-85.4855456,41.984095],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938905":{"id":"n1820938905","loc":[-85.0573269,42.1026801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938906":{"id":"n1820938906","loc":[-85.2425868,42.0131523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938907":{"id":"n1820938907","loc":[-85.1149622,42.0860053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938908":{"id":"n1820938908","loc":[-85.4833097,41.9951578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938909":{"id":"n1820938909","loc":[-85.075979,42.1056372],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938910":{"id":"n1820938910","loc":[-85.0338509,42.0977139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938911":{"id":"n1820938911","loc":[-85.6384272,41.9115715],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938912":{"id":"n1820938912","loc":[-85.0458363,42.1004074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938913":{"id":"n1820938913","loc":[-85.0592138,42.1048305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938914":{"id":"n1820938914","loc":[-85.2807493,41.9916653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938915":{"id":"n1820938915","loc":[-85.1103274,42.0864193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938916":{"id":"n1820938916","loc":[-85.6267156,41.9404404],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938918":{"id":"n1820938918","loc":[-85.0331374,42.0982911],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938919":{"id":"n1820938919","loc":[-85.5637331,41.965409],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938920":{"id":"n1820938920","loc":[-85.5457515,41.9714237],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938922":{"id":"n1820938922","loc":[-85.082073,42.1030104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938923":{"id":"n1820938923","loc":[-85.0780765,42.103102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938924":{"id":"n1820938924","loc":[-85.4208035,42.0089508],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938925":{"id":"n1820938925","loc":[-85.3469934,41.9914795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938926":{"id":"n1820938926","loc":[-85.0322,42.095619],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938927":{"id":"n1820938927","loc":[-85.4784431,41.9949401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938928":{"id":"n1820938928","loc":[-85.1303095,42.0667523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938929":{"id":"n1820938929","loc":[-85.2463784,42.0084781],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938930":{"id":"n1820938930","loc":[-85.6299986,41.9427707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938931":{"id":"n1820938931","loc":[-85.6325907,41.9238499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938932":{"id":"n1820938932","loc":[-85.4808464,41.9914476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938934":{"id":"n1820938934","loc":[-85.2411599,42.0105292],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938935":{"id":"n1820938935","loc":[-85.0163213,42.0892379],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938936":{"id":"n1820938936","loc":[-85.3290934,41.9682322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938937":{"id":"n1820938937","loc":[-85.4925623,41.9853231],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938938":{"id":"n1820938938","loc":[-85.0338294,42.09892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938940":{"id":"n1820938940","loc":[-85.4174561,42.008903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938941":{"id":"n1820938941","loc":[-85.1165595,42.0838845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938942":{"id":"n1820938942","loc":[-85.2954585,41.9717192],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938943":{"id":"n1820938943","loc":[-85.6330199,41.9257338],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938944":{"id":"n1820938944","loc":[-85.2294654,42.0324478],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938945":{"id":"n1820938945","loc":[-85.5601282,41.9728914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938946":{"id":"n1820938946","loc":[-85.1176324,42.08568],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938947":{"id":"n1820938947","loc":[-85.0210245,42.0906005],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938948":{"id":"n1820938948","loc":[-85.0251887,42.09253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938949":{"id":"n1820938949","loc":[-85.0895832,42.0939551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938950":{"id":"n1820938950","loc":[-84.9915109,42.085842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938951":{"id":"n1820938951","loc":[-85.2187366,42.0393486],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938952":{"id":"n1820938952","loc":[-85.006605,42.087579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938953":{"id":"n1820938953","loc":[-85.046641,42.1012393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938954":{"id":"n1820938954","loc":[-85.052102,42.103695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938955":{"id":"n1820938955","loc":[-85.283925,41.9912825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938956":{"id":"n1820938956","loc":[-85.2326626,42.0316349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938957":{"id":"n1820938957","loc":[-85.1174298,42.0859694],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938958":{"id":"n1820938958","loc":[-85.3802056,41.9994794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938959":{"id":"n1820938959","loc":[-85.4586334,41.9999737],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938960":{"id":"n1820938960","loc":[-85.4302234,42.0069418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938961":{"id":"n1820938961","loc":[-85.092201,42.0930674],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938962":{"id":"n1820938962","loc":[-85.3684511,41.9979382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938963":{"id":"n1820938963","loc":[-85.4618735,42.0011856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938964":{"id":"n1820938964","loc":[-85.4828205,41.9877793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938965":{"id":"n1820938965","loc":[-85.0837789,42.1025726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938966":{"id":"n1820938966","loc":[-85.0176195,42.090253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938967":{"id":"n1820938967","loc":[-85.3801627,42.001074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938968":{"id":"n1820938968","loc":[-85.4767007,41.994488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938969":{"id":"n1820938969","loc":[-85.274268,41.9957495],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938970":{"id":"n1820938970","loc":[-85.2977438,41.9719506],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938971":{"id":"n1820938971","loc":[-85.2425546,42.0208682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938972":{"id":"n1820938972","loc":[-85.2557082,42.002382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938973":{"id":"n1820938973","loc":[-85.3187937,41.9691986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938975":{"id":"n1820938975","loc":[-85.2448077,42.0153045],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938977":{"id":"n1820938977","loc":[-85.0343015,42.0997718],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938978":{"id":"n1820938978","loc":[-85.2449364,42.01874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938979":{"id":"n1820938979","loc":[-85.2598391,41.9969602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938980":{"id":"n1820938980","loc":[-85.4294724,42.0067665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938981":{"id":"n1820938981","loc":[-85.428082,42.0055124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938983":{"id":"n1820938983","loc":[-85.5436315,41.9717484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938985":{"id":"n1820938985","loc":[-85.5978336,41.9407437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938986":{"id":"n1820938986","loc":[-85.491661,41.9860249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938987":{"id":"n1820938987","loc":[-85.4942789,41.9801392],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938988":{"id":"n1820938988","loc":[-85.0416306,42.1010841],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938989":{"id":"n1820938989","loc":[-85.2653644,41.9984433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938990":{"id":"n1820938990","loc":[-85.1028266,42.0881124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938991":{"id":"n1820938991","loc":[-85.0163146,42.0887932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938992":{"id":"n1820938992","loc":[-85.5282209,41.9678112],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820938993":{"id":"n1820938993","loc":[-85.5442752,41.9715888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938994":{"id":"n1820938994","loc":[-85.5634327,41.9658558],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938995":{"id":"n1820938995","loc":[-85.0384227,42.1037627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938996":{"id":"n1820938996","loc":[-85.1144258,42.0854439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938997":{"id":"n1820938997","loc":[-85.1870651,42.0506305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938998":{"id":"n1820938998","loc":[-85.1256159,42.0747376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938999":{"id":"n1820938999","loc":[-85.3272695,41.9715836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939000":{"id":"n1820939000","loc":[-85.0543067,42.103098],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939001":{"id":"n1820939001","loc":[-85.4678173,41.9973585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939003":{"id":"n1820939003","loc":[-85.0266626,42.0933154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939004":{"id":"n1820939004","loc":[-85.0353046,42.1019728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939005":{"id":"n1820939005","loc":[-85.1237961,42.0762798],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939006":{"id":"n1820939006","loc":[-85.2812214,41.9826702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939007":{"id":"n1820939007","loc":[-85.2927763,41.9747343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939008":{"id":"n1820939008","loc":[-85.3270979,41.9720862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939009":{"id":"n1820939009","loc":[-85.488657,41.9856581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939010":{"id":"n1820939010","loc":[-85.3087301,41.9701399],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939011":{"id":"n1820939011","loc":[-85.0276939,42.093768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939012":{"id":"n1820939012","loc":[-85.2956516,41.9748779],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939013":{"id":"n1820939013","loc":[-85.1298579,42.0726443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939014":{"id":"n1820939014","loc":[-85.105144,42.0870893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939015":{"id":"n1820939015","loc":[-85.0677486,42.1053917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939016":{"id":"n1820939016","loc":[-85.0333681,42.0993459],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939017":{"id":"n1820939017","loc":[-85.6384272,41.910805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939018":{"id":"n1820939018","loc":[-85.399496,42.006894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939019":{"id":"n1820939019","loc":[-85.2648427,41.9998318],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939020":{"id":"n1820939020","loc":[-85.1237424,42.0766779],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939021":{"id":"n1820939021","loc":[-85.2515025,42.0109442],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939022":{"id":"n1820939022","loc":[-85.5566306,41.9718385],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939023":{"id":"n1820939023","loc":[-85.090644,42.0938369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939024":{"id":"n1820939024","loc":[-85.1245525,42.074914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939025":{"id":"n1820939025","loc":[-85.1099934,42.0863926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939026":{"id":"n1820939026","loc":[-85.1251653,42.0744589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939027":{"id":"n1820939027","loc":[-85.401792,42.0068143],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939028":{"id":"n1820939028","loc":[-85.0094763,42.0899584],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939029":{"id":"n1820939029","loc":[-85.1330779,42.0705605],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939030":{"id":"n1820939030","loc":[-85.4935064,41.984398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939031":{"id":"n1820939031","loc":[-85.5713334,41.9613939],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939032":{"id":"n1820939032","loc":[-85.0873945,42.0964669],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939033":{"id":"n1820939033","loc":[-85.0886497,42.0986481],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939034":{"id":"n1820939034","loc":[-85.3276343,41.9758897],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939035":{"id":"n1820939035","loc":[-85.1304386,42.0727387],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939036":{"id":"n1820939036","loc":[-85.2551932,42.0052999],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939037":{"id":"n1820939037","loc":[-85.2206936,42.0384458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939038":{"id":"n1820939038","loc":[-85.2313645,42.0286389],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939039":{"id":"n1820939039","loc":[-85.0754586,42.1059835],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939040":{"id":"n1820939040","loc":[-85.0663324,42.1050812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939041":{"id":"n1820939041","loc":[-85.2406234,42.0106887],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939042":{"id":"n1820939042","loc":[-85.0685962,42.1058175],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939043":{"id":"n1820939043","loc":[-85.0689462,42.1059437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939044":{"id":"n1820939044","loc":[-85.0586144,42.1046144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939045":{"id":"n1820939045","loc":[-85.3650565,41.9965452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939047":{"id":"n1820939047","loc":[-85.5752558,41.9536014],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939048":{"id":"n1820939048","loc":[-85.5110159,41.9710624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939050":{"id":"n1820939050","loc":[-85.2832641,41.9926477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939051":{"id":"n1820939051","loc":[-85.0078402,42.0898947],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939052":{"id":"n1820939052","loc":[-85.3882737,42.0017916],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939053":{"id":"n1820939053","loc":[-85.1718945,42.0564937],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939054":{"id":"n1820939054","loc":[-85.0947048,42.0929293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939055":{"id":"n1820939055","loc":[-85.4456944,42.0051082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939056":{"id":"n1820939056","loc":[-85.3139872,41.9706903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939057":{"id":"n1820939057","loc":[-85.3893895,42.0034021],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939058":{"id":"n1820939058","loc":[-85.2425332,42.0106089],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939059":{"id":"n1820939059","loc":[-85.6085624,41.9420844],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939060":{"id":"n1820939060","loc":[-85.210411,42.0397789],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939061":{"id":"n1820939061","loc":[-85.2762542,41.9960473],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939062":{"id":"n1820939062","loc":[-85.4686584,41.9969973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939063":{"id":"n1820939063","loc":[-85.3860421,42.0018394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939064":{"id":"n1820939064","loc":[-85.5636944,41.9644414],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939065":{"id":"n1820939065","loc":[-85.3267331,41.9766554],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939066":{"id":"n1820939066","loc":[-85.0868996,42.0943822],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939067":{"id":"n1820939067","loc":[-85.104861,42.0880038],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939068":{"id":"n1820939068","loc":[-85.5537123,41.9695093],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939069":{"id":"n1820939069","loc":[-85.6325092,41.9396743],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939070":{"id":"n1820939070","loc":[-85.3869648,42.0024454],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939071":{"id":"n1820939071","loc":[-85.2775349,41.9957335],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939072":{"id":"n1820939072","loc":[-85.2055616,42.0421533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939073":{"id":"n1820939073","loc":[-85.4731431,41.9946531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939074":{"id":"n1820939074","loc":[-85.0399609,42.1030833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939075":{"id":"n1820939075","loc":[-85.3055758,41.9725169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939076":{"id":"n1820939076","loc":[-85.4834599,41.994488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939077":{"id":"n1820939077","loc":[-85.3819866,42.0023018],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939078":{"id":"n1820939078","loc":[-85.1218756,42.0789992],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939079":{"id":"n1820939079","loc":[-85.2793159,41.9944458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939080":{"id":"n1820939080","loc":[-85.2495498,42.0101466],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939081":{"id":"n1820939081","loc":[-85.0035969,42.0872434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939082":{"id":"n1820939082","loc":[-85.1054243,42.0865626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939083":{"id":"n1820939083","loc":[-85.0917665,42.0934774],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939084":{"id":"n1820939084","loc":[-85.3442211,41.988938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939086":{"id":"n1820939086","loc":[-85.273989,41.9953588],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939087":{"id":"n1820939087","loc":[-85.1142541,42.0852488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939089":{"id":"n1820939089","loc":[-85.1526684,42.0615758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939090":{"id":"n1820939090","loc":[-85.2538843,42.0110159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939091":{"id":"n1820939091","loc":[-85.28341,41.9909635],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939092":{"id":"n1820939092","loc":[-85.3963178,42.0050217],"version":"2","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:29Z","tags":{}},"n1820939093":{"id":"n1820939093","loc":[-85.0851682,42.1012472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939095":{"id":"n1820939095","loc":[-85.2811784,41.986243],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939096":{"id":"n1820939096","loc":[-85.4274125,42.0052995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939097":{"id":"n1820939097","loc":[-85.0871262,42.0951652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939099":{"id":"n1820939099","loc":[-85.1314253,42.0671665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939100":{"id":"n1820939100","loc":[-85.2778997,41.991001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939101":{"id":"n1820939101","loc":[-85.112107,42.0862812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939102":{"id":"n1820939102","loc":[-85.299911,41.9729955],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939103":{"id":"n1820939103","loc":[-85.639822,41.9094796],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939104":{"id":"n1820939104","loc":[-85.122294,42.0785334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939105":{"id":"n1820939105","loc":[-85.2476294,42.015719],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939106":{"id":"n1820939106","loc":[-85.4946007,41.9814631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939107":{"id":"n1820939107","loc":[-85.0879524,42.0986919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939108":{"id":"n1820939108","loc":[-85.0342814,42.098274],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939109":{"id":"n1820939109","loc":[-85.2450695,42.0095463],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939110":{"id":"n1820939110","loc":[-85.3847546,42.0024135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939111":{"id":"n1820939111","loc":[-85.2961344,41.9742558],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939112":{"id":"n1820939112","loc":[-85.27899,41.994317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939114":{"id":"n1820939114","loc":[-85.1017644,42.0886618],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939115":{"id":"n1820939115","loc":[-85.076215,42.1056333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939116":{"id":"n1820939116","loc":[-85.1198009,42.0805349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939117":{"id":"n1820939117","loc":[-85.11988,42.0798513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939118":{"id":"n1820939118","loc":[-85.147819,42.0625476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939119":{"id":"n1820939119","loc":[-85.0585969,42.1029042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939120":{"id":"n1820939120","loc":[-85.1248596,42.0745744],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939121":{"id":"n1820939121","loc":[-85.3023786,41.9725249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939123":{"id":"n1820939123","loc":[-85.0119332,42.0900699],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939124":{"id":"n1820939124","loc":[-85.2466852,42.0170343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939125":{"id":"n1820939125","loc":[-85.0033019,42.0872792],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939126":{"id":"n1820939126","loc":[-85.0042084,42.0875778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939128":{"id":"n1820939128","loc":[-85.0052961,42.0885424],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939130":{"id":"n1820939130","loc":[-85.0647942,42.10508],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939131":{"id":"n1820939131","loc":[-85.2824123,41.9825107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939132":{"id":"n1820939132","loc":[-85.3210039,41.9723255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939133":{"id":"n1820939133","loc":[-85.0491033,42.1014184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939134":{"id":"n1820939134","loc":[-85.1127776,42.0855168],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939135":{"id":"n1820939135","loc":[-85.1243768,42.0759322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939137":{"id":"n1820939137","loc":[-85.125974,42.0747547],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939138":{"id":"n1820939138","loc":[-85.1071248,42.0859973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939139":{"id":"n1820939139","loc":[-85.5326175,41.9674833],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1820939140":{"id":"n1820939140","loc":[-85.1338715,42.0660833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939142":{"id":"n1820939142","loc":[-85.649671,41.9135675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939144":{"id":"n1820939144","loc":[-85.0236545,42.0920444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939145":{"id":"n1820939145","loc":[-85.1084391,42.0859376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939146":{"id":"n1820939146","loc":[-85.1539988,42.0618626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939147":{"id":"n1820939147","loc":[-85.2354521,42.026511],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939148":{"id":"n1820939148","loc":[-85.2362246,42.0260408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939149":{"id":"n1820939149","loc":[-85.2401342,42.0115233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939150":{"id":"n1820939150","loc":[-85.295319,41.9747423],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939151":{"id":"n1820939151","loc":[-85.1164696,42.0835409],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939152":{"id":"n1820939152","loc":[-85.3232891,41.9712885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939153":{"id":"n1820939153","loc":[-85.2574463,42.0068944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939155":{"id":"n1820939155","loc":[-85.5704064,41.9598246],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939156":{"id":"n1820939156","loc":[-85.0349077,42.0998116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939157":{"id":"n1820939157","loc":[-85.0949529,42.0925619],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939159":{"id":"n1820939159","loc":[-85.0179829,42.0902343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939160":{"id":"n1820939160","loc":[-85.0405832,42.1016942],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939161":{"id":"n1820939161","loc":[-85.2534015,42.0111833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939162":{"id":"n1820939162","loc":[-85.0839881,42.102708],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939163":{"id":"n1820939163","loc":[-85.0341996,42.1008385],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939164":{"id":"n1820939164","loc":[-85.1037761,42.0879731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939173":{"id":"n1820939173","loc":[-85.0460616,42.1005786],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939177":{"id":"n1820939177","loc":[-85.0061651,42.0878059],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939181":{"id":"n1820939181","loc":[-85.1456775,42.0654684],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939183":{"id":"n1820939183","loc":[-85.1325508,42.0718439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939185":{"id":"n1820939185","loc":[-85.2485842,42.008329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939187":{"id":"n1820939187","loc":[-85.2744128,41.9949322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939189":{"id":"n1820939189","loc":[-85.2579025,41.9999542],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939191":{"id":"n1820939191","loc":[-85.3358998,41.9828987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939193":{"id":"n1820939193","loc":[-85.3192658,41.9716714],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939194":{"id":"n1820939194","loc":[-85.6400795,41.9130725],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939195":{"id":"n1820939195","loc":[-85.3278489,41.9780591],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939196":{"id":"n1820939196","loc":[-85.2800197,41.983061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939197":{"id":"n1820939197","loc":[-85.3278167,41.9692943],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939198":{"id":"n1820939198","loc":[-85.3366894,41.9838653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939199":{"id":"n1820939199","loc":[-85.0328383,42.0969923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939201":{"id":"n1820939201","loc":[-85.3259284,41.9720383],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939217":{"id":"n1820939217","loc":[-85.1840181,42.0503277],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939220":{"id":"n1820939220","loc":[-85.422563,42.0089986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939222":{"id":"n1820939222","loc":[-85.555386,41.9707856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939224":{"id":"n1820939224","loc":[-85.3830809,42.002254],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939226":{"id":"n1820939226","loc":[-84.9917938,42.0857517],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939227":{"id":"n1820939227","loc":[-85.2936775,41.9740484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939228":{"id":"n1820939228","loc":[-85.2632133,41.9975024],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939229":{"id":"n1820939229","loc":[-85.2809424,41.9853259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939230":{"id":"n1820939230","loc":[-85.242104,42.0131204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939232":{"id":"n1820939232","loc":[-85.2610246,41.9963901],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939233":{"id":"n1820939233","loc":[-85.2335531,42.0268378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939234":{"id":"n1820939234","loc":[-85.3188839,41.9713575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939235":{"id":"n1820939235","loc":[-85.2413637,42.0225658],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939237":{"id":"n1820939237","loc":[-85.0010796,42.0887215],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939239":{"id":"n1820939239","loc":[-85.2241697,42.0362624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939243":{"id":"n1820939243","loc":[-85.0368456,42.1040134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939244":{"id":"n1820939244","loc":[-85.1327986,42.069524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939260":{"id":"n1820939260","loc":[-85.5408163,41.9711206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939261":{"id":"n1820939261","loc":[-85.2959199,41.9746546],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939262":{"id":"n1820939262","loc":[-85.3298659,41.9683598],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939263":{"id":"n1820939263","loc":[-85.2240581,42.0358425],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939264":{"id":"n1820939264","loc":[-85.2438206,42.0101944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939265":{"id":"n1820939265","loc":[-85.3984489,42.0059589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939266":{"id":"n1820939266","loc":[-85.2330811,42.0294279],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939268":{"id":"n1820939268","loc":[-85.1126877,42.0857704],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939271":{"id":"n1820939271","loc":[-85.254925,42.0106253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939273":{"id":"n1820939273","loc":[-85.4328046,42.0064662],"version":"2","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:51:01Z","tags":{}},"n1820939277":{"id":"n1820939277","loc":[-85.289622,41.9789616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939279":{"id":"n1820939279","loc":[-85.4574532,42.0004043],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939281":{"id":"n1820939281","loc":[-85.4803486,41.9867211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939283":{"id":"n1820939283","loc":[-85.157475,42.0631848],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939285":{"id":"n1820939285","loc":[-85.2571458,42.0059935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939287":{"id":"n1820939287","loc":[-85.2818544,41.9825984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939289":{"id":"n1820939289","loc":[-85.2298302,42.0328781],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939291":{"id":"n1820939291","loc":[-85.4819523,41.984821],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820939301":{"id":"n1820939301","loc":[-85.3139765,41.9701159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939304":{"id":"n1820939304","loc":[-85.0424447,42.101742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939306":{"id":"n1820939306","loc":[-85.6360283,41.9338482],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939310":{"id":"n1820939310","loc":[-85.3463025,41.9913622],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939312":{"id":"n1820939312","loc":[-85.4664869,41.9988097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939314":{"id":"n1820939314","loc":[-85.149364,42.0622449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939316":{"id":"n1820939316","loc":[-85.2460415,42.0153125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939318":{"id":"n1820939318","loc":[-85.4806103,41.9924523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939320":{"id":"n1820939320","loc":[-85.2449042,42.0190987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939322":{"id":"n1820939322","loc":[-85.5280165,41.9689263],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939324":{"id":"n1820939324","loc":[-85.0051204,42.0882625],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939326":{"id":"n1820939326","loc":[-85.1240925,42.0771546],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939329":{"id":"n1820939329","loc":[-85.2261653,42.0342225],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939331":{"id":"n1820939331","loc":[-85.5259933,41.972211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939333":{"id":"n1820939333","loc":[-85.0074754,42.0883183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939335":{"id":"n1820939335","loc":[-85.0764014,42.1055549],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939336":{"id":"n1820939336","loc":[-85.2908773,41.9769597],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939337":{"id":"n1820939337","loc":[-85.4095382,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939346":{"id":"n1820939346","loc":[-85.2514166,42.0111753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939348":{"id":"n1820939348","loc":[-85.0030377,42.0873799],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939350":{"id":"n1820939350","loc":[-85.3659362,41.9964974],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939352":{"id":"n1820939352","loc":[-85.226058,42.0348281],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939355":{"id":"n1820939355","loc":[-85.1902408,42.0507101],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939357":{"id":"n1820939357","loc":[-85.2781854,41.9946001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939359":{"id":"n1820939359","loc":[-85.2139988,42.0405175],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939361":{"id":"n1820939361","loc":[-85.0086609,42.0908262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939363":{"id":"n1820939363","loc":[-85.0627128,42.1043398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939365":{"id":"n1820939365","loc":[-85.1311346,42.072501],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939369":{"id":"n1820939369","loc":[-85.248198,42.0082652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939370":{"id":"n1820939370","loc":[-84.99792,42.087794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939371":{"id":"n1820939371","loc":[-85.2786775,41.9942783],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939372":{"id":"n1820939372","loc":[-85.0342103,42.1013957],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939373":{"id":"n1820939373","loc":[-85.2022357,42.0444799],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939374":{"id":"n1820939374","loc":[-85.2279205,42.0337388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939375":{"id":"n1820939375","loc":[-85.1337699,42.0712614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939376":{"id":"n1820939376","loc":[-85.317517,41.9707062],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939377":{"id":"n1820939377","loc":[-85.1326326,42.070218],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939394":{"id":"n1820939394","loc":[-85.0197746,42.0899118],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939397":{"id":"n1820939397","loc":[-85.2590076,41.9984632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939399":{"id":"n1820939399","loc":[-85.2469964,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939400":{"id":"n1820939400","loc":[-85.2470929,42.0146668],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939401":{"id":"n1820939401","loc":[-84.9984095,42.0878087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939402":{"id":"n1820939402","loc":[-85.2372653,42.0243273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939403":{"id":"n1820939403","loc":[-85.2454986,42.0091955],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939404":{"id":"n1820939404","loc":[-85.0539205,42.1035995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939405":{"id":"n1820939405","loc":[-85.550601,41.9706101],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939406":{"id":"n1820939406","loc":[-85.0351343,42.0999656],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939407":{"id":"n1820939407","loc":[-85.0082908,42.0905755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939408":{"id":"n1820939408","loc":[-85.0132904,42.0902251],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939410":{"id":"n1820939410","loc":[-85.0892546,42.094012],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939412":{"id":"n1820939412","loc":[-85.0350793,42.1030315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939416":{"id":"n1820939416","loc":[-85.0012406,42.0886777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939418":{"id":"n1820939418","loc":[-85.0577453,42.1029229],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939420":{"id":"n1820939420","loc":[-85.1230786,42.0776722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939422":{"id":"n1820939422","loc":[-85.571136,41.9649304],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939436":{"id":"n1820939436","loc":[-85.1137968,42.0848997],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939437":{"id":"n1820939437","loc":[-85.3559584,41.9925105],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939438":{"id":"n1820939438","loc":[-85.0080172,42.0903565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939439":{"id":"n1820939439","loc":[-85.0048897,42.0880913],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939441":{"id":"n1820939441","loc":[-85.0406959,42.1018574],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939443":{"id":"n1820939443","loc":[-85.3897328,42.0029078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939445":{"id":"n1820939445","loc":[-85.122349,42.0782814],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939448":{"id":"n1820939448","loc":[-85.4872193,41.985036],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939450":{"id":"n1820939450","loc":[-85.0120459,42.0904919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939452":{"id":"n1820939452","loc":[-85.6320543,41.921982],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939456":{"id":"n1820939456","loc":[-85.0844749,42.1036843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939458":{"id":"n1820939458","loc":[-85.0968037,42.091296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939463":{"id":"n1820939463","loc":[-85.5339747,41.9681841],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939465":{"id":"n1820939465","loc":[-85.4125423,42.0072129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939467":{"id":"n1820939467","loc":[-85.6335563,41.9303626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939469":{"id":"n1820939469","loc":[-85.2821014,41.9932126],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939471":{"id":"n1820939471","loc":[-85.374691,41.9969917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939485":{"id":"n1820939485","loc":[-85.4471321,42.0049806],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939487":{"id":"n1820939487","loc":[-85.3752532,41.9972206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939489":{"id":"n1820939489","loc":[-85.4517283,42.005927],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939492":{"id":"n1820939492","loc":[-85.4662552,42.0005693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939494":{"id":"n1820939494","loc":[-85.0120083,42.0902928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939496":{"id":"n1820939496","loc":[-85.044463,42.1004631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939498":{"id":"n1820939498","loc":[-85.418293,42.0089667],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939500":{"id":"n1820939500","loc":[-85.0554762,42.1027358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939504":{"id":"n1820939504","loc":[-85.1246289,42.0746858],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939507":{"id":"n1820939507","loc":[-85.0408139,42.1021838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939508":{"id":"n1820939508","loc":[-85.1236204,42.0775169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939509":{"id":"n1820939509","loc":[-85.0350109,42.1037428],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939510":{"id":"n1820939510","loc":[-85.0551583,42.1029878],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939511":{"id":"n1820939511","loc":[-85.0956771,42.0916662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939512":{"id":"n1820939512","loc":[-85.2323408,42.0273638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939513":{"id":"n1820939513","loc":[-85.1232771,42.0762388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939531":{"id":"n1820939531","loc":[-85.264608,41.9997828],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939533":{"id":"n1820939533","loc":[-85.4198808,42.0087914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939535":{"id":"n1820939535","loc":[-85.3080864,41.9715677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939536":{"id":"n1820939536","loc":[-85.1189426,42.0812596],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939537":{"id":"n1820939537","loc":[-85.2642741,41.9996764],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939538":{"id":"n1820939538","loc":[-85.2572531,42.0079627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939539":{"id":"n1820939539","loc":[-85.2907807,41.9790174],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939540":{"id":"n1820939540","loc":[-85.3171415,41.9707301],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939541":{"id":"n1820939541","loc":[-85.08777,42.0953841],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939542":{"id":"n1820939542","loc":[-85.1239262,42.0773218],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939543":{"id":"n1820939543","loc":[-84.9973956,42.0877968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939544":{"id":"n1820939544","loc":[-85.011606,42.0896161],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939545":{"id":"n1820939545","loc":[-85.4077358,42.0082971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939546":{"id":"n1820939546","loc":[-85.3614945,41.9933717],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939547":{"id":"n1820939547","loc":[-85.3189118,41.9697649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939550":{"id":"n1820939550","loc":[-85.1262691,42.0740221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939551":{"id":"n1820939551","loc":[-85.3863639,41.9994635],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939552":{"id":"n1820939552","loc":[-85.2836034,41.9923953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939554":{"id":"n1820939554","loc":[-85.3222377,41.9715916],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939555":{"id":"n1820939555","loc":[-85.0122658,42.0906312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939556":{"id":"n1820939556","loc":[-85.0022652,42.0877581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939557":{"id":"n1820939557","loc":[-85.1011314,42.0899954],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939559":{"id":"n1820939559","loc":[-85.0008181,42.0885293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939561":{"id":"n1820939561","loc":[-85.3637046,41.9942488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939562":{"id":"n1820939562","loc":[-85.4500117,42.0052892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939563":{"id":"n1820939563","loc":[-85.0537636,42.1036365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939565":{"id":"n1820939565","loc":[-85.2367503,42.0246939],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939566":{"id":"n1820939566","loc":[-85.0448479,42.1002653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939567":{"id":"n1820939567","loc":[-85.6337065,41.9295006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939568":{"id":"n1820939568","loc":[-85.0879792,42.095623],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939569":{"id":"n1820939569","loc":[-85.6347623,41.9352369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939570":{"id":"n1820939570","loc":[-85.1497931,42.0620378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939571":{"id":"n1820939571","loc":[-85.5676169,41.9656324],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939572":{"id":"n1820939572","loc":[-85.638041,41.9166971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939573":{"id":"n1820939573","loc":[-85.4993429,41.9781293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939574":{"id":"n1820939574","loc":[-85.5352831,41.9692127],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939575":{"id":"n1820939575","loc":[-84.9924429,42.0857118],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939577":{"id":"n1820939577","loc":[-85.0581101,42.1026721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939578":{"id":"n1820939578","loc":[-85.641088,41.9094477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939579":{"id":"n1820939579","loc":[-85.2548821,42.0052282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939580":{"id":"n1820939580","loc":[-85.1124463,42.0859734],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939581":{"id":"n1820939581","loc":[-85.1083479,42.0857624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939583":{"id":"n1820939583","loc":[-85.1387424,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939584":{"id":"n1820939584","loc":[-85.5152645,41.9700892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939585":{"id":"n1820939585","loc":[-85.5463738,41.9713439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939586":{"id":"n1820939586","loc":[-85.360207,41.9933717],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939587":{"id":"n1820939587","loc":[-85.2402372,42.0120917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939588":{"id":"n1820939588","loc":[-85.3936381,42.0047255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939589":{"id":"n1820939589","loc":[-85.3310246,41.973784],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939590":{"id":"n1820939590","loc":[-85.0329403,42.096642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939591":{"id":"n1820939591","loc":[-85.0097271,42.0910981],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939593":{"id":"n1820939593","loc":[-85.0446562,42.1003437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939595":{"id":"n1820939595","loc":[-85.0856671,42.1008452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939596":{"id":"n1820939596","loc":[-85.4087228,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939597":{"id":"n1820939597","loc":[-85.0609519,42.1052564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939598":{"id":"n1820939598","loc":[-85.3432126,41.9874548],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939599":{"id":"n1820939599","loc":[-85.4041738,42.0067027],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939600":{"id":"n1820939600","loc":[-85.0825437,42.1035768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939601":{"id":"n1820939601","loc":[-85.048422,42.101498],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939602":{"id":"n1820939602","loc":[-85.0336256,42.0999031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939603":{"id":"n1820939603","loc":[-85.046818,42.1014104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939605":{"id":"n1820939605","loc":[-85.2856524,41.98078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939607":{"id":"n1820939607","loc":[-85.1118173,42.0864245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939609":{"id":"n1820939609","loc":[-85.0443397,42.1006263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939610":{"id":"n1820939610","loc":[-85.0336698,42.0978361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939611":{"id":"n1820939611","loc":[-85.4630322,42.0014248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939612":{"id":"n1820939612","loc":[-85.0613127,42.1052353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939613":{"id":"n1820939613","loc":[-85.0137571,42.0887801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939614":{"id":"n1820939614","loc":[-85.272487,41.9982013],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939616":{"id":"n1820939616","loc":[-85.4665727,41.9983791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939617":{"id":"n1820939617","loc":[-85.1288078,42.0725476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939618":{"id":"n1820939618","loc":[-85.4653282,42.00109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939619":{"id":"n1820939619","loc":[-85.2314717,42.0276746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939620":{"id":"n1820939620","loc":[-85.255982,42.0003569],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939621":{"id":"n1820939621","loc":[-85.2886779,41.9787223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939622":{"id":"n1820939622","loc":[-85.22438,42.0367509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939623":{"id":"n1820939623","loc":[-85.0334713,42.0998382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939624":{"id":"n1820939624","loc":[-85.2236504,42.037484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939625":{"id":"n1820939625","loc":[-85.636908,41.9175162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939627":{"id":"n1820939627","loc":[-85.2669187,41.9989707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939628":{"id":"n1820939628","loc":[-85.3247268,41.9720702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939629":{"id":"n1820939629","loc":[-85.3785104,41.9987299],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939630":{"id":"n1820939630","loc":[-85.5267658,41.9720515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939631":{"id":"n1820939631","loc":[-85.2445116,42.0098811],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939632":{"id":"n1820939632","loc":[-85.1271448,42.0725077],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939633":{"id":"n1820939633","loc":[-85.0345751,42.099724],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939634":{"id":"n1820939634","loc":[-85.4217476,42.0089986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939635":{"id":"n1820939635","loc":[-85.3121848,41.9689433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939636":{"id":"n1820939636","loc":[-85.2826419,41.9929985],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939637":{"id":"n1820939637","loc":[-85.3160257,41.9706344],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939638":{"id":"n1820939638","loc":[-85.5684967,41.9657919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939640":{"id":"n1820939640","loc":[-85.225131,42.0356194],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939642":{"id":"n1820939642","loc":[-85.1324124,42.0693328],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939644":{"id":"n1820939644","loc":[-84.9994073,42.0878843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939645":{"id":"n1820939645","loc":[-85.1087596,42.0863329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939646":{"id":"n1820939646","loc":[-85.2915532,41.9782996],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939647":{"id":"n1820939647","loc":[-84.9988708,42.0877808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939648":{"id":"n1820939648","loc":[-85.2243628,42.0356728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939649":{"id":"n1820939649","loc":[-85.0427397,42.1020524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939650":{"id":"n1820939650","loc":[-85.6388392,41.9100752],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939651":{"id":"n1820939651","loc":[-85.0133709,42.0888557],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939652":{"id":"n1820939652","loc":[-85.318798,41.9701211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939653":{"id":"n1820939653","loc":[-85.6335778,41.9190602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939654":{"id":"n1820939654","loc":[-85.6338396,41.9370247],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939655":{"id":"n1820939655","loc":[-85.0939069,42.0931988],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939656":{"id":"n1820939656","loc":[-85.5702347,41.9651378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939657":{"id":"n1820939657","loc":[-85.4235286,42.0088392],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939658":{"id":"n1820939658","loc":[-85.2740856,41.9972206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939659":{"id":"n1820939659","loc":[-85.4824299,41.9934195],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939660":{"id":"n1820939660","loc":[-85.3857846,42.0014408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939661":{"id":"n1820939661","loc":[-85.0451658,42.10028],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939662":{"id":"n1820939662","loc":[-85.3893036,42.001377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939664":{"id":"n1820939664","loc":[-85.2455845,42.0088607],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939665":{"id":"n1820939665","loc":[-85.2741071,41.9951116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939666":{"id":"n1820939666","loc":[-85.1298375,42.0677718],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939667":{"id":"n1820939667","loc":[-85.5491848,41.9707377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939669":{"id":"n1820939669","loc":[-85.2780298,41.995238],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939670":{"id":"n1820939670","loc":[-85.1330068,42.0716926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939671":{"id":"n1820939671","loc":[-85.0811342,42.1025129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939672":{"id":"n1820939672","loc":[-85.2325124,42.0290135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939673":{"id":"n1820939673","loc":[-85.2975077,41.9716953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939674":{"id":"n1820939674","loc":[-85.0951729,42.0922394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939676":{"id":"n1820939676","loc":[-85.0363252,42.1043119],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939677":{"id":"n1820939677","loc":[-85.2960057,41.97349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939678":{"id":"n1820939678","loc":[-85.3701849,41.9982515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939679":{"id":"n1820939679","loc":[-85.3381486,41.9848861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939680":{"id":"n1820939680","loc":[-85.2058448,42.0417286],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939682":{"id":"n1820939682","loc":[-85.0819335,42.1034443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939683":{"id":"n1820939683","loc":[-85.3872223,41.9993359],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939684":{"id":"n1820939684","loc":[-85.095366,42.091909],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939685":{"id":"n1820939685","loc":[-85.2327914,42.0291888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939686":{"id":"n1820939686","loc":[-85.0433459,42.1018773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939687":{"id":"n1820939687","loc":[-85.0585339,42.1027318],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939688":{"id":"n1820939688","loc":[-85.0062885,42.0876347],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939689":{"id":"n1820939689","loc":[-85.246299,42.017377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939690":{"id":"n1820939690","loc":[-85.2932376,41.9742877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939691":{"id":"n1820939691","loc":[-85.2962846,41.9736815],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939692":{"id":"n1820939692","loc":[-85.6052365,41.9409193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939693":{"id":"n1820939693","loc":[-85.2570536,42.0003341],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939694":{"id":"n1820939694","loc":[-85.0488458,42.1014064],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939695":{"id":"n1820939695","loc":[-85.4050321,42.0069578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939696":{"id":"n1820939696","loc":[-85.4847517,41.9845894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939697":{"id":"n1820939697","loc":[-85.0844655,42.1013826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939698":{"id":"n1820939698","loc":[-85.1437206,42.0650008],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939699":{"id":"n1820939699","loc":[-85.1168183,42.0864034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939700":{"id":"n1820939700","loc":[-85.5479831,41.9711366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939701":{"id":"n1820939701","loc":[-85.0349948,42.1034124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939702":{"id":"n1820939702","loc":[-85.0835589,42.1038821],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939703":{"id":"n1820939703","loc":[-85.0203875,42.0902649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939704":{"id":"n1820939704","loc":[-85.0371191,42.1038184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939705":{"id":"n1820939705","loc":[-85.1273312,42.0735681],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939707":{"id":"n1820939707","loc":[-85.1272239,42.0730226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939710":{"id":"n1820939710","loc":[-85.0349881,42.1019012],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939712":{"id":"n1820939712","loc":[-85.2440459,42.0178313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939713":{"id":"n1820939713","loc":[-85.2444751,42.0182618],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939714":{"id":"n1820939714","loc":[-85.0539996,42.1032863],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939715":{"id":"n1820939715","loc":[-85.2215905,42.0373246],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939716":{"id":"n1820939716","loc":[-85.0649712,42.1051994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939717":{"id":"n1820939717","loc":[-85.0927146,42.0927581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939718":{"id":"n1820939718","loc":[-85.3884668,42.0042312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939719":{"id":"n1820939719","loc":[-85.0840672,42.1013241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939720":{"id":"n1820939720","loc":[-85.304739,41.9725408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939721":{"id":"n1820939721","loc":[-85.2243585,42.0371334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939722":{"id":"n1820939722","loc":[-85.0599823,42.1049686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939723":{"id":"n1820939723","loc":[-85.0298825,42.0944288],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939724":{"id":"n1820939724","loc":[-85.0366095,42.1042443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939725":{"id":"n1820939725","loc":[-85.0698783,42.1058135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939726":{"id":"n1820939726","loc":[-85.1054551,42.0873361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939727":{"id":"n1820939727","loc":[-84.9952324,42.0864285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939728":{"id":"n1820939728","loc":[-85.3442211,41.9897993],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939729":{"id":"n1820939729","loc":[-85.4386134,42.0056822],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939730":{"id":"n1820939730","loc":[-85.2438528,42.0146589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939731":{"id":"n1820939731","loc":[-85.0355581,42.1041846],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939732":{"id":"n1820939732","loc":[-85.557682,41.9724447],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939734":{"id":"n1820939734","loc":[-85.2299418,42.033314],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939735":{"id":"n1820939735","loc":[-85.6297412,41.9419088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939736":{"id":"n1820939736","loc":[-85.2645101,41.9980259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939738":{"id":"n1820939738","loc":[-85.082195,42.1035649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939739":{"id":"n1820939739","loc":[-85.234272,42.0267102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939740":{"id":"n1820939740","loc":[-85.0130758,42.0895006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939741":{"id":"n1820939741","loc":[-85.4594702,42.0000375],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939742":{"id":"n1820939742","loc":[-84.9946745,42.0863687],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939743":{"id":"n1820939743","loc":[-85.6438775,41.9120186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939744":{"id":"n1820939744","loc":[-85.6372685,41.9168089],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939745":{"id":"n1820939745","loc":[-85.2789468,41.9893208],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939747":{"id":"n1820939747","loc":[-85.3775019,41.998427],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939749":{"id":"n1820939749","loc":[-85.0993571,42.0909178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939750":{"id":"n1820939750","loc":[-85.1308503,42.0669339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939751":{"id":"n1820939751","loc":[-85.4802566,41.9856659],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820939752":{"id":"n1820939752","loc":[-85.2543563,42.0108804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939753":{"id":"n1820939753","loc":[-85.1041033,42.0878815],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939755":{"id":"n1820939755","loc":[-85.4000969,42.0071651],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939757":{"id":"n1820939757","loc":[-85.3858275,42.0022381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939758":{"id":"n1820939758","loc":[-85.3653998,41.996609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939759":{"id":"n1820939759","loc":[-85.2432949,42.0202305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939760":{"id":"n1820939760","loc":[-85.3878874,42.0042472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939761":{"id":"n1820939761","loc":[-85.2516741,42.0114145],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939762":{"id":"n1820939762","loc":[-85.2788825,41.9865142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939763":{"id":"n1820939763","loc":[-85.0009147,42.0886686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939764":{"id":"n1820939764","loc":[-85.3918142,42.003434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939765":{"id":"n1820939765","loc":[-85.5532832,41.9696848],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939766":{"id":"n1820939766","loc":[-85.5545063,41.969254],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939768":{"id":"n1820939768","loc":[-85.1327989,42.0704769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939770":{"id":"n1820939770","loc":[-85.0588558,42.1047696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939772":{"id":"n1820939772","loc":[-85.555798,41.9713017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939773":{"id":"n1820939773","loc":[-85.0565853,42.1023589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939774":{"id":"n1820939774","loc":[-85.2582941,41.9992765],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939775":{"id":"n1820939775","loc":[-85.3007264,41.9727642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939776":{"id":"n1820939776","loc":[-85.2477045,42.0082652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939777":{"id":"n1820939777","loc":[-85.2415247,42.0104973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1821006698":{"id":"n1821006698","loc":[-85.6345227,41.9382009],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006700":{"id":"n1821006700","loc":[-85.6344894,41.938975],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006704":{"id":"n1821006704","loc":[-85.6351181,41.9370157],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006706":{"id":"n1821006706","loc":[-85.6357554,41.9361657],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006708":{"id":"n1821006708","loc":[-85.6351235,41.9368481],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006710":{"id":"n1821006710","loc":[-85.6352844,41.9364211],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006712":{"id":"n1821006712","loc":[-85.6351503,41.937307],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006716":{"id":"n1821006716","loc":[-85.6350366,41.9379774],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006725":{"id":"n1821006725","loc":[-85.6352147,41.9375903],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821137607":{"id":"n1821137607","loc":[-85.5297057,41.9669915],"version":"1","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1821137608":{"id":"n1821137608","loc":[-85.5288598,41.9673094],"version":"1","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1821139530":{"id":"n1821139530","loc":[-85.4832228,41.9881686],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139531":{"id":"n1821139531","loc":[-85.4812101,41.9851258],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139532":{"id":"n1821139532","loc":[-85.4799127,41.9860244],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139533":{"id":"n1821139533","loc":[-85.4800313,41.9865555],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1841425201":{"id":"n1841425201","loc":[-85.4334577,42.0063713],"version":"1","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:50:57Z","tags":{}},"n1841425222":{"id":"n1841425222","loc":[-85.4382449,42.0055785],"version":"1","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:50:58Z","tags":{}},"n1914861007":{"id":"n1914861007","loc":[-85.394959,42.0057472],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:21Z","tags":{}},"n1914861057":{"id":"n1914861057","loc":[-85.3967185,42.0049695],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:22Z","tags":{}},"n1914861112":{"id":"n1914861112","loc":[-85.394179,42.0056906],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:24Z","tags":{}},"n1914861306":{"id":"n1914861306","loc":[-85.3900226,42.0028488],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:27Z","tags":{}},"n2114807565":{"id":"n2114807565","loc":[-85.6385979,41.9577824],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807568":{"id":"n2114807568","loc":[-85.6325097,41.9775713],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807572":{"id":"n2114807572","loc":[-85.6328996,41.9980965],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807578":{"id":"n2114807578","loc":[-85.6344818,41.9696956],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807583":{"id":"n2114807583","loc":[-85.6326289,41.9757853],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807593":{"id":"n2114807593","loc":[-85.6360828,41.9650674],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2130304159":{"id":"n2130304159","loc":[-85.6352537,41.9450015],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"railway":"level_crossing"}},"n2139795852":{"id":"n2139795852","loc":[-85.6374708,41.9311633],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139858882":{"id":"n2139858882","loc":[-85.635178,41.9356158],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858883":{"id":"n2139858883","loc":[-85.63533,41.9355886],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858884":{"id":"n2139858884","loc":[-85.6353819,41.93556],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858885":{"id":"n2139858885","loc":[-85.6353665,41.9355157],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858886":{"id":"n2139858886","loc":[-85.6353165,41.9354971],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858887":{"id":"n2139858887","loc":[-85.6352454,41.9355328],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858888":{"id":"n2139858888","loc":[-85.6350184,41.9357846],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858889":{"id":"n2139858889","loc":[-85.634978,41.9359448],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858890":{"id":"n2139858890","loc":[-85.6347723,41.9361523],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858891":{"id":"n2139858891","loc":[-85.6347165,41.9362667],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858892":{"id":"n2139858892","loc":[-85.6346992,41.9364312],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858893":{"id":"n2139858893","loc":[-85.634603,41.9366329],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858894":{"id":"n2139858894","loc":[-85.6345973,41.9367488],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858895":{"id":"n2139858895","loc":[-85.6345127,41.9369734],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858896":{"id":"n2139858896","loc":[-85.634478,41.9371923],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858897":{"id":"n2139858897","loc":[-85.6344838,41.9373768],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858898":{"id":"n2139858898","loc":[-85.6346242,41.9375299],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858899":{"id":"n2139858899","loc":[-85.6347723,41.9376357],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858900":{"id":"n2139858900","loc":[-85.6347607,41.9377788],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858901":{"id":"n2139858901","loc":[-85.6346204,41.9379533],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858902":{"id":"n2139858902","loc":[-85.6344184,41.9380105],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858903":{"id":"n2139858903","loc":[-85.6341627,41.9380406],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858904":{"id":"n2139858904","loc":[-85.634005,41.9381679],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858905":{"id":"n2139858905","loc":[-85.63393,41.9383353],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858906":{"id":"n2139858906","loc":[-85.6338588,41.9384597],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858907":{"id":"n2139858907","loc":[-85.6336627,41.9387759],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858908":{"id":"n2139858908","loc":[-85.6335127,41.9389361],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858933":{"id":"n2139858933","loc":[-85.6353118,41.9432646],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858934":{"id":"n2139858934","loc":[-85.6353952,41.9433002],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858935":{"id":"n2139858935","loc":[-85.6356496,41.9433255],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858936":{"id":"n2139858936","loc":[-85.6363128,41.9433373],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858937":{"id":"n2139858937","loc":[-85.6365467,41.9433779],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858938":{"id":"n2139858938","loc":[-85.6368692,41.9435265],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858939":{"id":"n2139858939","loc":[-85.6370986,41.9437039],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858940":{"id":"n2139858940","loc":[-85.6372371,41.9437732],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858941":{"id":"n2139858941","loc":[-85.6374756,41.9438171],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858942":{"id":"n2139858942","loc":[-85.6376164,41.9439286],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858943":{"id":"n2139858943","loc":[-85.6377504,41.944138],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858944":{"id":"n2139858944","loc":[-85.6384204,41.9443137],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858945":{"id":"n2139858945","loc":[-85.6385726,41.9444506],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858946":{"id":"n2139858946","loc":[-85.638702,41.9445739],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858947":{"id":"n2139858947","loc":[-85.6387179,41.9446516],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858948":{"id":"n2139858948","loc":[-85.6387088,41.9447985],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858949":{"id":"n2139858949","loc":[-85.6387656,41.9449877],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858950":{"id":"n2139858950","loc":[-85.638777,41.9451448],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858951":{"id":"n2139858951","loc":[-85.6387088,41.9452631],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858964":{"id":"n2139858964","loc":[-85.6383346,41.9442912],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858966":{"id":"n2139858966","loc":[-85.6384724,41.9443605],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858967":{"id":"n2139858967","loc":[-85.6354078,41.9434285],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858968":{"id":"n2139858968","loc":[-85.635271,41.943654],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858969":{"id":"n2139858969","loc":[-85.6352657,41.9437437],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858970":{"id":"n2139858970","loc":[-85.635271,41.9438195],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858971":{"id":"n2139858971","loc":[-85.6351563,41.9438906],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858972":{"id":"n2139858972","loc":[-85.6351384,41.9438882],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858973":{"id":"n2139858973","loc":[-85.6351514,41.9438034],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858974":{"id":"n2139858974","loc":[-85.6351237,41.9436641],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858975":{"id":"n2139858975","loc":[-85.6351498,41.9436108],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858976":{"id":"n2139858976","loc":[-85.6351058,41.9435345],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858977":{"id":"n2139858977","loc":[-85.6349641,41.9432051],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858986":{"id":"n2139858986","loc":[-85.6341205,41.9380746],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858990":{"id":"n2139858990","loc":[-85.6345671,41.9381816],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858995":{"id":"n2139858995","loc":[-85.6339783,41.9382273],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139859003":{"id":"n2139859003","loc":[-85.6340477,41.9373489],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{}},"n2139859004":{"id":"n2139859004","loc":[-85.6339784,41.9374752],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{}},"n2139870406":{"id":"n2139870406","loc":[-85.6342265,41.9432605],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139877106":{"id":"n2139877106","loc":[-85.6346323,41.9438746],"version":"1","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n2139982399":{"id":"n2139982399","loc":[-85.6324055,41.9408537],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982400":{"id":"n2139982400","loc":[-85.632488,41.941063],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{"leisure":"slipway"}},"n2139982401":{"id":"n2139982401","loc":[-85.6327261,41.9415366],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982402":{"id":"n2139982402","loc":[-85.6326391,41.9413598],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982403":{"id":"n2139982403","loc":[-85.6327041,41.9414391],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982405":{"id":"n2139982405","loc":[-85.6322891,41.9406009],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982406":{"id":"n2139982406","loc":[-85.6325412,41.9425257],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139989333":{"id":"n2139989333","loc":[-85.6340584,41.9431731],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2140006331":{"id":"n2140006331","loc":[-85.6361751,41.9459744],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006334":{"id":"n2140006334","loc":[-85.636528,41.9459751],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006336":{"id":"n2140006336","loc":[-85.6370918,41.9458926],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006338":{"id":"n2140006338","loc":[-85.6378806,41.9456474],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006340":{"id":"n2140006340","loc":[-85.6385831,41.9454343],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006342":{"id":"n2140006342","loc":[-85.639341,41.945157],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006344":{"id":"n2140006344","loc":[-85.6393497,41.9450232],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006346":{"id":"n2140006346","loc":[-85.6388245,41.9450145],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006348":{"id":"n2140006348","loc":[-85.6388167,41.9441739],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006351":{"id":"n2140006351","loc":[-85.6382915,41.9441797],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006353":{"id":"n2140006353","loc":[-85.63828,41.9438109],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006355":{"id":"n2140006355","loc":[-85.6381949,41.9436009],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006357":{"id":"n2140006357","loc":[-85.6371904,41.9435918],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006359":{"id":"n2140006359","loc":[-85.6366966,41.9432727],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006361":{"id":"n2140006361","loc":[-85.6353755,41.9432744],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006365":{"id":"n2140006365","loc":[-85.6350906,41.9435472],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006366":{"id":"n2140006366","loc":[-85.6343461,41.9441573],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006395":{"id":"n2140006395","loc":[-85.6351171,41.9437175],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006397":{"id":"n2140006397","loc":[-85.635352,41.9450206],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006399":{"id":"n2140006399","loc":[-85.6358194,41.9454937],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006401":{"id":"n2140006401","loc":[-85.6348693,41.9445739],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006431":{"id":"n2140006431","loc":[-85.6376737,41.9438023],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006437":{"id":"n2140006437","loc":[-85.6382631,41.9442724],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2189123379":{"id":"n2189123379","loc":[-85.6342671,41.9352665],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"w203974076":{"id":"w203974076","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870442","n2139870457","n2139870458","n2139870459","n2139870460","n2139870452"]},"w170989131":{"id":"w170989131","version":"5","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:30Z","tags":{"name":"St Joseph River","source":"Bing Imagery","waterway":"river"},"nodes":["n1820938225","n1820938712","n1820937596","n1820937574","n1820938515","n1820938330","n1820938678","n1820938240","n1820938950","n1820939226","n1820939575","n1820937913","n1820938223","n1820937668","n1820938545","n1820937584","n1820939742","n1820939727","n1820937578","n1820938149","n1820938124","n1820938888","n1820938898","n1820937922","n1820939543","n1820939370","n1820939401","n1820939647","n1820938345","n1820939644","n1820938333","n1820938370","n1820938624","n1820938493","n1820939559","n1820939763","n1820939237","n1820939416","n1820937810","n1820938317","n1820938324","n1820937558","n1820939556","n1820938298","n1820939348","n1820939125","n1820939081","n1820938859","n1820939126","n1820938881","n1820939439","n1820939324","n1820939128","n1820938101","n1820937706","n1820938382","n1820938776","n1820937815","n1820939177","n1820939688","n1820938952","n1820938216","n1820938387","n1820939333","n1820938243","n1820938248","n1820937666","n1820939051","n1820938332","n1820939438","n1820939407","n1820939361","n1820937517","n1820938770","n1820939591","n1820937857","n1820938491","n1820937993","n1820938125","n1820938166","n1820937746","n1820939028","n1820937638","n1820938676","n1820938843","n1820938844","n1820937978","n1820938730","n1820939544","n1820938304","n1820939123","n1820939494","n1820939450","n1820939555","n1820938133","n1820938129","n1820938871","n1820939408","n1820938669","n1820938260","n1820939740","n1820937625","n1820938631","n1820939651","n1820939613","n1820937850","n1820938325","n1820937736","n1820938804","n1820938837","n1820938014","n1820938991","n1820938722","n1820938935","n1820937870","n1820938432","n1820937986","n1820938756","n1820938966","n1820939159","n1820937744","n1820938334","n1820937645","n1820939394","n1820937656","n1820938392","n1820939703","n1820938385","n1820938947","n1820938854","n1820938428","n1820938488","n1820938269","n1820938668","n1820938268","n1820938707","n1820937732","n1820939144","n1820938481","n1820938771","n1820938686","n1820938948","n1820937997","n1820937769","n1820939003","n1820938083","n1820939011","n1820938803","n1820938700","n1820939723","n1820938808","n1820938262","n1820938081","n1820938926","n1820938326","n1820938102","n1820938508","n1820939590","n1820939199","n1820938084","n1820938870","n1820938895","n1820937611","n1820938918","n1820938514","n1820939610","n1820938910","n1820937523","n1820938127","n1820939108","n1820937981","n1820938938","n1820938715","n1820939016","n1820938237","n1820939623","n1820939602","n1820937734","n1820938977","n1820939633","n1820939156","n1820939406","n1820938279","n1820938301","n1820937678","n1820937671","n1820939163","n1820938356","n1820939372","n1820937568","n1820937626","n1820939710","n1820939004","n1820938253","n1820938571","n1820937513","n1820939412","n1820939701","n1820939509","n1820938839","n1820939731","n1820937798","n1820939676","n1820939724","n1820939243","n1820939704","n1820937814","n1820937599","n1820938199","n1820938995","n1820938445","n1820938069","n1820938470","n1820939074","n1820938193","n1820938740","n1820938047","n1820939507","n1820939441","n1820939160","n1820937849","n1820937840","n1820938052","n1820938988","n1820938796","n1820937724","n1820937620","n1820939304","n1820938343","n1820939649","n1820938875","n1820939686","n1820938476","n1820937801","n1820937737","n1820938264","n1820939609","n1820939496","n1820939593","n1820939566","n1820939661","n1820937782","n1820938912","n1820939173","n1820937733","n1820938953","n1820939603","n1820937607","n1820938468","n1820939601","n1820939694","n1820939133","n1820938897","n1820938893","n1820937831","n1820937730","n1820938820","n1820938046","n1820938426","n1820938347","n1820937582","n1820938954","n1820938033","n1820938104","n1820938680","n1820939563","n1820939404","n1820939714","n1820939000","n1820937992","n1820938168","n1820939510","n1820939500","n1820937509","n1820938865","n1820939773","n1820938138","n1820938905","n1820937623","n1820939418","n1820937946","n1820939577","n1820937615","n1820939687","n1820939119","n1820937988","n1820938337","n1820937750","n1820938703","n1820938339","n1820939044","n1820939770","n1820938913","n1820937672","n1820939722","n1820937768","n1820939597","n1820939612","n1820937699","n1820937682","n1820937669","n1820937657","n1820939363","n1820937800","n1820938265","n1820937760","n1820938207","n1820938115","n1820939130","n1820939716","n1820938338","n1820938239","n1820939040","n1820938064","n1820938855","n1820939015","n1820938258","n1820939042","n1820939043","n1820938443","n1820939725","n1820937675","n1820938568","n1820938280","n1820937705","n1820938775","n1820938636","n1820938626","n1820937859","n1820938096","n1820937852","n1820939039","n1820938247","n1820938585","n1820937707","n1820938117","n1820938909","n1820939115","n1820939335","n1820938805","n1820937935","n1820937876","n1820938699","n1820937869","n1820938603","n1820938100","n1820938500","n1820938283","n1820938275","n1820938923","n1820938365","n1820938349","n1820937804","n1820937903","n1820937608","n1820938688","n1820939671","n1820938092","n1820937820","n1820938753","n1820938922","n1820937990","n1820939682","n1820939738","n1820939600","n1820938167","n1820937726","n1820939702","n1820938209","n1820939456","n1820937837","n1820938222","n1820938902","n1820939162","n1820938965","n1820938461","n1820937681","n1820937514","n1820937764","n1820939719","n1820939697","n1820938899","n1820939093","n1820938702","n1820939595","n1820938749","n1820938348","n1820937606","n1820938675","n1820938830","n1820938737","n1820938758","n1820938716","n1820939107","n1820937863","n1820939033","n1820938163","n1820937867","n1820938819","n1820938034","n1820938252","n1820937563","n1820937868","n1820939032","n1820938632","n1820937982","n1820937943","n1820939568","n1820939541","n1820938215","n1820939097","n1820938812","n1820937518","n1820937952","n1820938711","n1820938736","n1820939066","n1820937591","n1820938082","n1820938108","n1820938496","n1820939410","n1820938949","n1820938327","n1820937708","n1820939023","n1820937772","n1820938256","n1820939083","n1820938378","n1820938961","n1820937610","n1820939717","n1820938695","n1820938590","n1820939655","n1820938341","n1820939054","n1820939157","n1820939674","n1820939684","n1820939511","n1820937631","n1820939458","n1820937830","n1820937709","n1820937779","n1820939749","n1820938880","n1820938856","n1820938557","n1820939557","n1820938249","n1820938818","n1820937594","n1820939114","n1820938416","n1820937508","n1820938990","n1820938201","n1820937759","n1820937987","n1820939164","n1820939753","n1820938187","n1820939067","n1820937586","n1820937941","n1820938121","n1820937807","n1820938521","n1820939726","n1820938244","n1820939014","n1820938741","n1820937629","n1820938664","n1820938747","n1820939082","n1820938709","n1820938320","n1820938270","n1820937619","n1820937777","n1820937718","n1820939138","n1820938056","n1820938155","n1820938596","n1820937775","n1820938437","n1820938128","n1820939581","n1820939145","n1820938546","n1820938184","n1820937601","n1820937794","n1820938539","n1820939645","n1820938438","n1820938436","n1820939025","n1820938915","n1820938534","n1820937605","n1820939607","n1820939101","n1820939580","n1820939268","n1820939134","n1820938849","n1820938754","n1820938079","n1820937842","n1820938781","n1820938873","n1820938495","n1820938381","n1820938503","n1820939436","n1820938502","n1820939087","n1820938996","n1820938449","n1820938907","n1820937979","n1820937780","n1820937546","n1820939699","n1820937677","n1820938957","n1820938946","n1820937776","n1820937717","n1820938718","n1820937637","n1820938510","n1820937663","n1820938941","n1820939151","n1820937603","n1820938250","n1820937951","n1820938630","n1820938821","n1820938779","n1820938497","n1820938159","n1820939536","n1820938409","n1820938386","n1820939116","n1820938340","n1820939117","n1820938291","n1820938435","n1820937819","n1820938242","n1820939078","n1820938877","n1820939104","n1820939445","n1820938367","n1820938903","n1820939420","n1820938517","n1820939508","n1820939542","n1820939326","n1820938210","n1820939020","n1820938815","n1820937832","n1820939513","n1820937818","n1820939005","n1820938717","n1820939135","n1820938384","n1820937587","n1820939024","n1820939504","n1820939120","n1820939026","n1820938015","n1820938998","n1820937648","n1820939137","n1820937761","n1820938195","n1820938535","n1820939550","n1820938725","n1820938282","n1820937781","n1820937792","n1820939705","n1820937788","n1820939707","n1820937882","n1820939632","n1820938427","n1820938276","n1820939617","n1820939013","n1820939035","n1820937543","n1820939365","n1820937752","n1820937802","n1820939183","n1820939670","n1820938450","n1820939375","n1820937813","n1820937673","n1820937783","n1820939029","n1820939768","n1820939377","n1820937974","n1820939244","n1820939642","n1820937864","n1820938255","n1820938528","n1820939666","n1820938120","n1820937812","n1820938928","n1820939750","n1820939099","n1820938073","n1820938714","n1820939140","n1820938192","n1820937844","n1820938635","n1820938742","n1820939583","n1820937887","n1820938318","n1820938816","n1820939698","n1820938273","n1820939181","n1820937652","n1820938748","n1820937651","n1820938519","n1820938019","n1820938752","n1820938235","n1820939118","n1820938562","n1820939314","n1820939570","n1820938190","n1820938342","n1820938533","n1820937977","n1820939089","n1820939146","n1820938622","n1820938297","n1820938524","n1820939283","n1820938874","n1820938832","n1820937550","n1820937843","n1820938638","n1820938116","n1820938206","n1820938319","n1820939053","n1820937845","n1820938093","n1820939217","n1820938997","n1820939355","n1820938861","n1820938726","n1820938057","n1820939373","n1820937862","n1820938518","n1820939072","n1820939680","n1820938444","n1820938217","n1820938506","n1820938393","n1820938492","n1820938852","n1820938221","n1820938773","n1820937684","n1820939060","n1820938224","n1820938203","n1820938840","n1820937525","n1820938147","n1820938433","n1820938188","n1820939359","n1820938750","n1820938016","n1820938768","n1820937621","n1820937799","n1820938951","n1820938721","n1820939037","n1820937866","n1820939715","n1820938063","n1820938446","n1820937627","n1820939624","n1820938431","n1820939721","n1820939622","n1820939239","n1820939263","n1820939648","n1820939640","n1820938867","n1820938757","n1820938439","n1820939352","n1820937740","n1820939329","n1820938229","n1820937583","n1820938180","n1820938366","n1820937767","n1820937758","n1820939374","n1820938869","n1820938292","n1820938400","n1820938399","n1820939734","n1820939289","n1820938944","n1820937755","n1820938759","n1820938434","n1820937600","n1820937825","n1820937670","n1820937793","n1820938011","n1820938246","n1820938956","n1820937770","n1820937757","n1820938059","n1820937860","n1820937569","n1820939266","n1820939685","n1820939672","n1820938606","n1820938772","n1820939038","n1820938211","n1820938359","n1820939619","n1820938708","n1820939512","n1820938065","n1820939233","n1820939739","n1820938786","n1820938879","n1820939147","n1820938563","n1820939148","n1820937839","n1820937659","n1820937786","n1820938419","n1820939565","n1820939402","n1820937710","n1820938254","n1820938271","n1820938390","n1820937680","n1820938140","n1820937817","n1820938218","n1820937985","n1820939235","n1820938441","n1820938401","n1820938719","n1820937795","n1820938971","n1820938460","n1820939759","n1820937972","n1820937841","n1820938462","n1820939320","n1820938978","n1820938360","n1820939713","n1820937676","n1820939712","n1820937939","n1820938080","n1820937754","n1820937753","n1820938530","n1820937886","n1820939689","n1820939124","n1820938697","n1820938789","n1820939105","n1820938860","n1820938853","n1820939400","n1820937561","n1820938404","n1820938774","n1820939316","n1820937696","n1820938782","n1820938975","n1820937564","n1820939730","n1820938257","n1820937853","n1820938487","n1820938848","n1820938906","n1820939230","n1820938424","n1820938051","n1820937771","n1820939587","n1820939149","n1820938792","n1820939041","n1820938934","n1820939777","n1820937515","n1820939058","n1820938312","n1820939264","n1820939631","n1820939109","n1820939403","n1820939664","n1820938724","n1820938929","n1820939399","n1820939776","n1820939369","n1820939185","n1820937701","n1820938126","n1820938336","n1820938219","n1820939080","n1820938642","n1820938043","n1820937725","n1820938548","n1820938552","n1820938035","n1820938684","n1820937778","n1820938764","n1820939021","n1820939346","n1820937712","n1820939761","n1820938397","n1820937747","n1820938566","n1820939161","n1820939090","n1820939752","n1820939271","n1820938878","n1820938110","n1820938346","n1820938499","n1820938151","n1820939538","n1820938281","n1820939153","n1820938551","n1820939285","n1820938197","n1820938408","n1820938482","n1820939036","n1820939579","n1820938489","n1820938483","n1820938189","n1820938123","n1820938087","n1820937741","n1820938485","n1820937590","n1820938972","n1820937773","n1820937520","n1820938872","n1820938131","n1820938452","n1820938328","n1820939620","n1820937641","n1820938353","n1820939693","n1820938705","n1820937640","n1820939189","n1820938144","n1820939774","n1820938694","n1820938238","n1820939397","n1820937917","n1820938454","n1820938567","n1820938979","n1820938060","n1820938204","n1820937828","n1820939232","n1820938806","n1820938857","n1820938078","n1820938105","n1820939228","n1820938604","n1820937763","n1820937854","n1820938289","n1820939736","n1820937937","n1820937714","n1820938278","n1820938058","n1820938706","n1820938989","n1820938313","n1820938520","n1820938288","n1820937689","n1820939537","n1820939531","n1820939019","n1820937527","n1820938455","n1820938814","n1820938045","n1820939627","n1820938213","n1820938161","n1820938331","n1820938024","n1820938220","n1820938062","n1820938178","n1820937796","n1820937644","n1820938490","n1820937589","n1820937879","n1820939614","n1820938882","n1820938039","n1820938538","n1820937667","n1820937719","n1820938561","n1820939658","n1820938783","n1820938601","n1820938198","n1820938388","n1820938969","n1820937687","n1820939086","n1820939665","n1820939187","n1820938498","n1820938261","n1820937983","n1820938068","n1820938136","n1820939061","n1820938137","n1820938186","n1820939071","n1820937592","n1820939669","n1820937553","n1820939357","n1820938727","n1820939371","n1820939112","n1820939079","n1820938743","n1820938467","n1820938834","n1820938022","n1820938537","n1820938122","n1820938516","n1820937614","n1820937612","n1820939469","n1820939636","n1820939050","n1820939552","n1820938157","n1820938663","n1820938955","n1820939091","n1820938430","n1820938471","n1820937809","n1820938074","n1820938208","n1820938914","n1820938858","n1820938417","n1820937531","n1820938107","n1820939100","n1820938751","n1820937711","n1820938824","n1820939745","n1820937572","n1820938602","n1820938212","n1820938097","n1820937921","n1820938090","n1820938511","n1820938876","n1820939762","n1820938234","n1820938048","n1820937774","n1820937856","n1820937749","n1820937765","n1820938286","n1820939095","n1820938480","n1820939229","n1820938277","n1820937617","n1820938311","n1820937622","n1820939196","n1820937690","n1820939006","n1820939287","n1820939131","n1820938106","n1820938784","n1820938335","n1820938095","n1820938182","n1820937715","n1820937683","n1820938070","n1820939605","n1820938527","n1820938763","n1820938398","n1820937686","n1820939621","n1820937664","n1820939277","n1820938565","n1820939539","n1820938099","n1820939646","n1820938556","n1820937548","n1820938729","n1820939336","n1820938259","n1820938728","n1820938361","n1820937643","n1820938644","n1820939007","n1820939690","n1820939227","n1820937635","n1820937950","n1820938682","n1820939150","n1820939012","n1820939261","n1820939111","n1820937805","n1820939691","n1820939677","n1820937628","n1820937811","n1820938790","n1820938251","n1820938226","n1820938942","n1820937633","n1820937984","n1820937751","n1820939673","n1820938970","n1820938415","n1820938597","n1820938309","n1820938111","n1820938472","n1820938894","n1820938402","n1820937593","n1820938570","n1820939102","n1820939775","n1820937948","n1820939121","n1820937511","n1820938787","n1820939720","n1820939075","n1820937880","n1820937742","n1820937721","n1820939535","n1820938486","n1820938354","n1820937632","n1820939010","n1820938885","n1820938089","n1820937613","n1820938442","n1820938245","n1820938272","n1820937566","n1820938295","n1820938532","n1820938883","n1820937713","n1820937674","n1820939635","n1820938448","n1820938355","n1820938587","n1820938559","n1820937787","n1820939301","n1820937723","n1820939056","n1820937560","n1820938323","n1820938230","n1820938453","n1820938377","n1820938357","n1820939637","n1820938017","n1820939540","n1820939376","n1820937639","n1820937642","n1820938075","n1820938351","n1820938766","n1820937897","n1820938973","n1820938066","n1820939547","n1820939652","n1820937944","n1820937748","n1820939234","n1820939193","n1820937891","n1820938785","n1820939132","n1820938523","n1820938884","n1820938411","n1820939554","n1820938791","n1820937655","n1820938368","n1820939152","n1820938030","n1820938447","n1820937580","n1820939628","n1820937588","n1820937894","n1820939201","n1820938086","n1820937650","n1820938379","n1820939008","n1820938999","n1820937524","n1820937872","n1820938389","n1820939197","n1820938422","n1820938936","n1820939262","n1820937634","n1820938583","n1820939589","n1820937901","n1820939034","n1820939065","n1820938290","n1820939195","n1820938228","n1820937884","n1820938797","n1820938191","n1820939191","n1820939198","n1820937892","n1820939679","n1820938507","n1820937647","n1820937909","n1820938542","n1820939598","n1820937851","n1820939084","n1820939728","n1820937688","n1820938263","n1820938670","n1820937762","n1820939310","n1820938925","n1820938862","n1820938822","n1820938547","n1820937731","n1820938594","n1820938592","n1820938214","n1820938284","n1820937835","n1820938599","n1820939437","n1820937834","n1820937576","n1820937692","n1820939586","n1820939546","n1820938403","n1820937970","n1820939561","n1820938098","n1820938851","n1820938477","n1820938892","n1820939045","n1820939758","n1820939350","n1820938321","n1820938440","n1820938595","n1820938364","n1820938962","n1820938118","n1820939678","n1820938406","n1820938549","n1820937555","n1820938823","n1820937521","n1820939471","n1820939487","n1820938799","n1820938605","n1820937928","n1820938373","n1820939747","n1820939629","n1820937557","n1820937526","n1820938958","n1820938833","n1820937636","n1820938967","n1820938760","n1820938842","n1820938067","n1820939077","n1820939224","n1820938185","n1820939110","n1820938372","n1820939757","n1820939063","n1820939660","n1820938813","n1820937528","n1820938369","n1820938896","n1820939551","n1820939683","n1820937660","n1820937873","n1820938810","n1820938478","n1820939662","n1820937595","n1820939052","n1820938113","n1820939070","n1820938733","n1820937878","n1820938300","n1820939760","n1820939718","n1820937646","n1820939057","n1820939443","n1914861306","n1820938013","n1820937529","n1820939764","n1820938826","n1820937885","n1820939588","n1820937865","n1820937833","n1914861112","n1820938761","n1914861007","n1820937905","n1820938541","n1820939092","n1914861057","n1820938153","n1820938267","n1820939265","n1820938085","n1820939018","n1820939755","n1820938474","n1820939027","n1820938593","n1820938202","n1820939599","n1820939695","n1820938077","n1820938012","n1820939545","n1820939596","n1820939337","n1820938227","n1820937698","n1820938475","n1820939465","n1820938165","n1820938698","n1820938525","n1820938529","n1820938553","n1820938940","n1820939498","n1820938501","n1820939533","n1820938924","n1820939634","n1820939220","n1820939657","n1820938887","n1820938838","n1820938114","n1820937823","n1820938778","n1820938801","n1820939096","n1820938981","n1820937953","n1820938732","n1820938980","n1820938960","n1820937949","n1820938026","n1820939273","n1841425201","n1820938629","n1820938864","n1820938554","n1820938088","n1820937685","n1841425222","n1820939729","n1820937665","n1820937838","n1820937739","n1820938780","n1820937821","n1820938825","n1820939055","n1820939485","n1820938041","n1820938746","n1820939562","n1820938459","n1820939489","n1820938050","n1820937980","n1820937695","n1820938413","n1820938555","n1820937703","n1820938536","n1820938196","n1820938287","n1820938169","n1820939279","n1820938531","n1820938959","n1820939741","n1820938665","n1820938963","n1820939611","n1820937653","n1820939618","n1820939492","n1820938600","n1820938628","n1820939312","n1820939616","n1820937738","n1820939001","n1820939062","n1820938794","n1820938558","n1820937822","n1820937532","n1820939073","n1820938200","n1820938241","n1820938968","n1820938927","n1820938306","n1820937630","n1820938456","n1820937694","n1820938908","n1820939076","n1820937522","n1820939659","n1820938522","n1820939318","n1820938932","n1820938841","n1820937579","n1820937540","n1820938560","n1821139530","n1820938964","n1820937662","n1820939281","n1821139533","n1820937797","n1821139532","n1820939751","n1821139531","n1820939291","n1820938420","n1820939696","n1820938904","n1820938484","n1820939448","n1820939009","n1820938735","n1820938986","n1820938937","n1820939030","n1820938734","n1820938745","n1820939106","n1820938987","n1820937858","n1820938673","n1820938620","n1820937808","n1820937700","n1820939573","n1820938540","n1820937661","n1820937570","n1820938396","n1820937875","n1820939048","n1820938233","n1820938793","n1820939584","n1820938412","n1820938394","n1820937846","n1820938800","n1820938690","n1820939331","n1820939630","n1820938762","n1820938710","n1820939322","n1820938992","n1821137608","n1821137607","n1820937924","n1820939139","n1820939463","n1820939574","n1820938294","n1820938071","n1820938307","n1820938061","n1820939260","n1820937899","n1820938310","n1820938983","n1820937530","n1820938993","n1820938890","n1820937915","n1820938231","n1820938040","n1820938920","n1820939585","n1820938135","n1820939700","n1820937824","n1820939667","n1820937930","n1820938134","n1820937551","n1820939405","n1820938232","n1820937716","n1820937848","n1820939765","n1820939068","n1820939766","n1820937933","n1820937720","n1820939222","n1820939772","n1820939022","n1820939732","n1820937702","n1820937691","n1820938945","n1820937756","n1820938451","n1820938410","n1820938798","n1820937945","n1820937654","n1820938598","n1820938836","n1820937571","n1820937556","n1820938994","n1820938919","n1820938863","n1820939064","n1820938018","n1820937658","n1820937537","n1820938142","n1820938666","n1820937535","n1820939571","n1820938465","n1820939638","n1820937533","n1820939656","n1820939422","n1820938109","n1820938405","n1820938028","n1820937649","n1820938829","n1820939031","n1820939155","n1820938350","n1820938463","n1820938425","n1820939047","n1820938831","n1820938494","n1820937697","n1820938504","n1820938900","n1820937784","n1820938414","n1820938076","n1820938723","n1820937722","n1820938739","n1820937791","n1820938985","n1820938352","n1820938293","n1820938274","n1820939692","n1820937871","n1820939059","n1820938868","n1820937877","n1820937743","n1820938429","n1820937545","n1820937575","n1820938302","n1820938505","n1820938916","n1820938374","n1820938329","n1820937790","n1820939735","n1820938930","n1820937995","n1820938512","n1820938130","n1820938194","n1820938671","n1820938802","n1820937542","n1820937602","n1820939069","n1820938901","n1820939654","n1820937727","n1820939569","n1820938375","n1820939306","n1820938479","n1820938376","n1820938667","n1820937766","n1820939467","n1820939567","n1820937806","n1820938943","n1820938931","n1820937745","n1820939452","n1820938738","n1820938053","n1820939653","n1820938640","n1820937604","n1820937536","n1820938701","n1820939625","n1820939744","n1820939572","n1820937577","n1820937541","n1820938891","n1820937597","n1820938469","n1820939194","n1820937539","n1820938911","n1820939017","n1820939650","n1820939103","n1820939578","n1820938132","n1820937549","n1820938634","n1820939743","n1820937544","n1820937826","n1820937598","n1820937547","n1820938032","n1820939142"]},"w17963021":{"id":"w17963021","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:22:17Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331667","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185948706","n185948708","n185948710"]},"w203974069":{"id":"w203974069","version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:34Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139870431","n2139870432","n2139870433","n2139870434","n2139870431"]},"w209816575":{"id":"w209816575","version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199856288","n2199856289","n2199856290","n2199856291","n2199856292","n2199856293","n2199856294","n2199856295","n2199856296","n2199856297","n2199856298","n2199856299","n2199856300","n2199856301","n2199856302","n2199856303","n2199856288"]},"w203841838":{"id":"w203841838","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","natural":"water"},"nodes":["n2138493826","n2138493827","n2138493828","n2138493829","n2138493830","n2138493831","n2138493833","n2138493832","n2138493826"]},"w203972937":{"id":"w203972937","version":"2","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:26Z","tags":{"highway":"path","name":"Riverwalk Trail","surface":"asphalt","width":"3"},"nodes":["n2139858882","n2139858883","n2139858884","n2139858885","n2139858886","n2139858887","n2139858882","n2139858888","n2139858889","n2139858890","n2139858891","n2139858892","n2139858893","n2139858894","n2139858895","n2139858896","n2139858897","n2139858898","n2139858899","n2139858900","n2139858901","n2139858902","n2139858903","n2139858986","n2139858904","n2139858995","n2139858905","n2139858906","n2139858907","n2139858908","n2139858909","n2139858910","n2139858911","n2139858912","n2139858913","n2139858914","n2139858915","n2139858916","n2139858917","n2139858918","n2139858919","n2139858920","n2139858921","n2139858922","n2139858923","n2139858924","n2139858925","n2139858926","n2139858927","n2139858982","n2139858928","n2139858929","n2139858930","n2139858931","n2139858932","n2139858981","n2139858933","n2139858934","n2139858935","n2139858936","n2139858937","n2139858938","n2139858939","n2139858940","n2139858941","n2139858942","n2139858943","n2140006437","n2139858964","n2139858944","n2139858966","n2139858945","n2139858946","n2139858947","n2139858948","n2139858949","n2139858950","n2139858951"]},"w17964015":{"id":"w17964015","version":"2","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326005:15326006","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185954680","n185954683","n185954685","n185954687","n185954689","n185954690","n185954691","n2139870379","n2139870456","n185954692","n185954693","n185954695"]},"w17967315":{"id":"w17967315","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"South Andrews Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Andrews","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981999","n185974477","n185964963"]},"w203974071":{"id":"w203974071","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870439","n2139870440","n2139870441","n2139870442","n2139870443","n2139870444","n2139870445","n2139870446","n2139870447","n2139870448","n2139870449"]},"w170848824":{"id":"w170848824","version":"3","changeset":"15276848","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:54:30Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819858503","n1819858531","n1819858526","n1819858518","n1819858505","n1819858508","n1819858512","n1819858514","n1819858528","n1819858509","n1819858511","n1819858507","n1819858521"]},"w203986458":{"id":"w203986458","version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139989357","n2139989359","n2139989360","n2139989362","n2139989357"]},"w170844917":{"id":"w170844917","version":"7","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"source":"Bing","waterway":"riverbank"},"nodes":["n1819805911","n1819805690","n1819805812","n1819805766","n1819805802","n1819805885","n1819805626","n1819805842","n1819805715","n1819805694","n1819805618","n1819805629","n1819805731","n1819805636","n1819805878","n1819805718","n1819805798","n1819849057","n1819805666","n1819805852","n1819805805","n1819805789","n1819805868","n1819805680","n1819805918","n1819848888","n1819805762","n2139989328","n1819805907","n2139989330","n1819805915","n1819858521","n1819805854","n1819805876","n1819805864","n1819805922","n2139859004","n1819805702","n2139859003","n1819805614","n1819805792","n1819805786","n1819805777","n1819805645","n1819805838","n1819805889","n1819805795","n1819805707","n1819805774","n1819805808","n1819805810","n1819805724","n1819805676","n1819805728","n1819805783","n1819805687","n1819805727","n2189123379","n1819805632","n1819805641","n1819805760","n1819805887","n1819805861","n1819805722","n1819805880","n2139982405","n2139982399","n2139982400","n1819805770","n2139982402","n2139982403","n2139982401","n1819805780","n1819805834","n2139982406","n1819805698","n1819805647","n1819805870","n1819805683","n1819805622","n1819805639","n1819805858","n1819805643","n1819805673","n1819805925","n1819805849","n1819805711","n1819805846","n1819805669","n1819805883","n1819805814","n1819805873","n1819805911"]},"w17967326":{"id":"w17967326","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"North Constantine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185985217","n185985219","n185985221","n185985222","n185985223","n185985225","n2140006431","n185985227","n185985229","n185985231","n185985233","n185985235","n185985238","n185985240","n2140018998","n185964965"]},"w134150789":{"id":"w134150789","version":"5","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964971","n2139870406","n185964972"]},"w17966400":{"id":"w17966400","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"tertiary","name":"South Constantine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958672","n185964965"]},"w203974066":{"id":"w203974066","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139870417","n2139870418","n2139870420","n2139870419"]},"w17965998":{"id":"w17965998","version":"5","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:53Z","tags":{"name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no"},"nodes":["n185972775","n185972777","n185972779","n185972781","n185972783","n185972785","n185972787","n185972788","n185972789","n185972790","n185972791","n185972793","n185972795","n185972797","n185972798","n185972800","n185972802","n185972805","n185972807","n185972809","n185972811","n185972813","n185972814","n185972815","n185972816","n185972817","n185972819","n185972821","n185972824","n185972826","n185972830","n185972832","n185972834","n185972835","n185972836","n185972839","n185990434","n2114807572","n2114807568","n185972845","n2114807583","n185972847","n185972849","n185972851","n2114807578","n1475293254","n2114807593","n1475293226","n185972862","n2114807565","n185951869","n1475293234","n1475293252","n185972868","n1475293264","n1475293222","n185972878","n1475293261","n185972882","n185972885","n1475293260","n1475293240","n185972891","n185972895","n185972897","n185972899","n2130304159","n1475284023","n185972903"]},"w134150795":{"id":"w134150795","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"bridge":"yes","highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964970","n185964971"]},"w203974067":{"id":"w203974067","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139870420","n2139870421"]},"w170995908":{"id":"w170995908","version":"3","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:15Z","tags":{"highway":"residential","name":"Thomas Street","source":"Bing"},"nodes":["n1821006702","n1821006700","n1821006698","n2139858990","n1821006716","n1821006725","n1821006712","n1821006704","n1821006708","n1821006710","n1821006706"]},"w17965834":{"id":"w17965834","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"Spring Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Spring","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185971361","n185971364","n185971366","n185971368","n185954695","n185964968"]},"w203974070":{"id":"w203974070","version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:34Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139870435","n2139870436","n2139870437","n2139870438","n2139870435"]},"w203989879":{"id":"w203989879","version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"highway":"service"},"nodes":["n2140018998","n2140018999","n2140019000"]},"w203974062":{"id":"w203974062","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870387","n2139870388","n2139870389","n2139870390","n2139870391","n2139870392","n2139870397","n2139870393","n2139870396","n2139870395","n2139870394","n2139870387"]},"w203974061":{"id":"w203974061","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"footway"},"nodes":["n2139870382","n2139870383"]},"w203049587":{"id":"w203049587","version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"area":"yes","name":"Scidmore Park Petting Zoo","tourism":"zoo","zoo":"petting_zoo"},"nodes":["n2130304133","n2130304136","n2130304138","n2130304140","n2130304142","n2130304144","n2130304146","n2130304147","n2130304148","n2130304149","n2130304150","n2130304151","n2130304133"]},"w203972941":{"id":"w203972941","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path"},"nodes":["n2139858982","n2139858983","n2139858984","n2139858985","n2139858927"]},"w203974065":{"id":"w203974065","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service"},"nodes":["n2139870406","n2139870407","n2139870408","n2139870417","n2139870409","n2139870410","n2139870411","n2139870412","n2139870426","n2139870413","n2139870414","n2139870415","n2139870419","n2139870416","n2139870421","n2139870408"]},"w203972940":{"id":"w203972940","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858934","n2139858967","n2139858968","n2139858969","n2139858970","n2139858971","n2139858972","n2139858973","n2139858974","n2139858975","n2139858976","n2139858977","n2139858978","n2139858979","n2139858980","n2139858981"]},"w203974072":{"id":"w203974072","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139858925","n2139870450","n2139870453","n2139870451","n2139870452","n2139870441"]},"w203974074":{"id":"w203974074","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870454","n2139870456","n2139870429"]},"w203974060":{"id":"w203974060","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"footway"},"nodes":["n2139870383","n2139870384","n2139870422","n2139870385","n2139870386","n2139870388"]},"w203841837":{"id":"w203841837","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","natural":"water"},"nodes":["n2138493807","n2138493808","n2138493809","n2138493810","n2138493811","n2138493812","n2138493813","n2138493814","n2138493815","n2138493816","n2138493825","n2138493817","n2138493824","n2138493818","n2138493819","n2138493820","n2138493821","n2138493822","n2138493823","n2138493807"]},"w134150845":{"id":"w134150845","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{"bridge":"yes","name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15324560:15329061:15329062:15333515:15333516:15333517:15328802:15312982:15312984:15312980:15326010:15326011:15313203:15322169:15324562:15312971:15312973:15312977:15328799:15328907:15328908:15322175:15329059:15333626:15333627:15325105:15322549:15337756:153","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185972903","n185972905"]},"w203974059":{"id":"w203974059","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"footway"},"nodes":["n2139870430","n2139870439","n2139870429","n2139870428","n2139870379","n2139870455","n2139870380","n2139870381","n2139858925","n2139870382"]},"w203986457":{"id":"w203986457","version":"2","changeset":"15287771","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T21:56:30Z","tags":{"area":"yes","ele":"241","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417887","gnis:state_id":"26","leisure":"park","name":"Scidmore Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2139989333","n2139989335","n2139989337","n2139989339","n1819805762","n2139989328","n1819805907","n2139989330","n1819805915","n2139989341","n2139989344","n2139989346","n2139989348","n2139989350","n2139989351","n2139989353","n2139989355","n2139989333"]},"w170848331":{"id":"w170848331","version":"4","changeset":"15276848","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:54:29Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819848937","n1819849104","n1819849076","n1819849183","n1819848928","n1819848972","n1819848948","n1819848971","n1819848859","n1819849008","n1819848889","n1819849026","n1819849094","n1819849083","n1819849079","n1819849187","n1819848992","n1819849060","n1819849056","n1819849071","n1819849067","n1819849048","n1819849036","n1819849150","n1819849075","n1819849051","n1819849062","n1819848926","n1819849035","n1819848987","n1819849012","n1819848933","n1819848996","n1819848990","n1819849005","n1819849021","n1819848892","n1819849092","n1819848863","n1819848922","n1819848858","n1819848855","n1819848974","n1819848953","n1819849019","n1819849049","n1819848979","n1819849140","n1819849193","n1819849147","n1819849151","n1819849163","n1819849023","n1819848878","n1819849004","n1819848857","n1819848879","n1819849041","n1819849165","n1819849107","n1819849156","n1819848934","n1819848914","n1819848955","n1819848931","n1819848927","n1819849084","n1819849169","n1819849045","n1819848945","n1819849095","n1819848924","n1819849171","n1819849141","n1819849046","n1819849197","n1819849011","n1819849108","n1819849158","n1819849160","n1819848870","n1819849006","n1819849157","n1819848993","n1819848970","n1819849202","n1819848903","n1819848975","n1819848849","n1819849025","n1819849105","n1819849033","n1819849176","n1819849099","n1819849086","n1819848960","n1819848961","n1819849001","n1819848980","n1819849038","n1819848854","n1819849127","n1819849170","n1819849139","n1819848873","n1819848929","n1819849201","n1819849121","n1819849031","n1819849131","n1819848875","n1819849080","n1819849066","n1819849081","n1819849096","n1819849172","n1819849114","n1819849182","n1819848905","n1819849054","n1819848920","n1819848851","n1819848968","n1819848917","n1819849111","n1819849119","n1819849074","n1819848893","n1819849129","n1819848850","n1819848956","n1819849154","n1819848877","n1819848986","n1819849191","n1819848952","n1819848954","n1819848942","n1819849028","n1819849195","n1819848938","n1819848962","n1819849070","n1819849034","n1819849052","n1819849059","n1819848916","n1819849162","n1819849167","n1819849093","n1819849030","n1819849002","n1819849161","n1819848886","n1819848958","n1819849064","n1819849112","n1819849148","n1819848856","n1819848976","n1819848977","n1819849144","n1819848918","n1819849200","n1819848919","n1819849042","n1819849166","n1819849186","n1819849152","n1819849058","n1819849185","n1819849199","n1819849053","n1819849194","n1819849068","n1819849146","n1819849174","n1819848967","n1819848932","n1819849155","n1819849198","n1819848964","n1819848894","n1819848969","n1819849184","n1819849055","n1819849179","n1819848865","n1819848860","n1819849082","n1819848966","n1819849040","n1819849069","n1819849078","n1819849077","n1819848904","n1819848959","n1819849133","n1819849089","n1819849000","n1819849124","n1819849032","n1819849097","n1819848939","n1819849072","n1819848915","n1819849196","n1819848946","n1819849047","n1819849029","n1819849164","n1819848994","n1819849022","n1819858513","n1819849126","n1819849063","n1819848941","n1819849085","n1819848871","n1819848943","n1819849192","n1819858501","n1819849159","n1819858523","n1819848901","n1819849189","n1819858503","n1819849065","n2139877106","n1819848909","n1819848930","n1819848888"]},"w17967397":{"id":"w17967397","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"North Andrews Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Andrews","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964963","n185985217"]},"w17964497":{"id":"w17964497","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:05Z","tags":{"highway":"tertiary","name":"Constantine St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958643","n185958645","n2139795852","n185958647","n185958649","n185958651","n185958653","n185958656","n185958658","n185958660","n185958662","n185958664","n185958666","n185958668","n185958670","n185948710","n185958672"]},"w203974068":{"id":"w203974068","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870422","n2139870423","n2139870424","n2139870425","n2139870426","n2139870427"]},"w203974063":{"id":"w203974063","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870398","n2139870399","n2139870400","n2139870401","n2139870398"]},"w203986459":{"id":"w203986459","version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139989364","n2139989366","n2139989368","n2139989370","n2139989364"]},"w203988286":{"id":"w203988286","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"area":"yes","leisure":"park","name":"Memory Isle Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2140006331","n2140006334","n2140006336","n2140006338","n2140006340","n2140006342","n2140006344","n2140006346","n2140006348","n2140006351","n2140006353","n2140006355","n2140006357","n2140006359","n2140006361","n2140006363","n2140006364","n2140006365","n2140006395","n2140006366","n2140006401","n2140006397","n2140006399","n2140006331"]},"w203974073":{"id":"w203974073","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870453","n2139870454","n2139870455"]},"w203974064":{"id":"w203974064","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870402","n2139870403","n2139870404","n2139870405","n2139870402"]},"n185966959":{"id":"n185966959","loc":[-85.642185,41.946411],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n1475283980":{"id":"n1475283980","loc":[-85.6398249,41.9451425],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284013":{"id":"n1475284013","loc":[-85.6396448,41.9451666],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284042":{"id":"n1475284042","loc":[-85.6386382,41.9454789],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n185975925":{"id":"n185975925","loc":[-85.6393332,41.9452388],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975919":{"id":"n185975919","loc":[-85.6391279,41.9453044],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975917":{"id":"n185975917","loc":[-85.6389034,41.9453872],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n2140006369":{"id":"n2140006369","loc":[-85.6386163,41.9451631],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006370":{"id":"n2140006370","loc":[-85.6385144,41.9449357],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006417":{"id":"n2140006417","loc":[-85.6385785,41.9450299],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006419":{"id":"n2140006419","loc":[-85.6385781,41.9452152],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2189123361":{"id":"n2189123361","loc":[-85.6404948,41.947015],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123363":{"id":"n2189123363","loc":[-85.6395765,41.946495],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123365":{"id":"n2189123365","loc":[-85.6389347,41.9460875],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n185966962":{"id":"n185966962","loc":[-85.644417,41.946364],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185975911":{"id":"n185975911","loc":[-85.637532,41.9458276],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975913":{"id":"n185975913","loc":[-85.6376323,41.9457936],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185975915":{"id":"n185975915","loc":[-85.6383596,41.9455425],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975932":{"id":"n185975932","loc":[-85.644403,41.945088],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185975934":{"id":"n185975934","loc":[-85.645486,41.945084],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185979974":{"id":"n185979974","loc":[-85.644381,41.943831],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:24Z","tags":{}},"n2139795809":{"id":"n2139795809","loc":[-85.6464756,41.9450813],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795810":{"id":"n2139795810","loc":[-85.6466646,41.945174],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139858952":{"id":"n2139858952","loc":[-85.6383567,41.9454039],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858953":{"id":"n2139858953","loc":[-85.6380506,41.9455301],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858954":{"id":"n2139858954","loc":[-85.6377321,41.9455546],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858955":{"id":"n2139858955","loc":[-85.6376571,41.9455245],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858956":{"id":"n2139858956","loc":[-85.6375859,41.9454544],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858957":{"id":"n2139858957","loc":[-85.6376686,41.9453185],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858958":{"id":"n2139858958","loc":[-85.6378936,41.9451712],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858959":{"id":"n2139858959","loc":[-85.6379225,41.9450825],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858960":{"id":"n2139858960","loc":[-85.6379302,41.9447564],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858961":{"id":"n2139858961","loc":[-85.6379763,41.9446963],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858962":{"id":"n2139858962","loc":[-85.6380436,41.9446706],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858963":{"id":"n2139858963","loc":[-85.6381286,41.9445969],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858965":{"id":"n2139858965","loc":[-85.6382523,41.9444134],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2140006367":{"id":"n2140006367","loc":[-85.6380923,41.9454418],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006368":{"id":"n2140006368","loc":[-85.6384089,41.9453146],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006372":{"id":"n2140006372","loc":[-85.6383252,41.9447706],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006374":{"id":"n2140006374","loc":[-85.6381033,41.9447436],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006376":{"id":"n2140006376","loc":[-85.6379759,41.9447815],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006378":{"id":"n2140006378","loc":[-85.6379832,41.9448654],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006380":{"id":"n2140006380","loc":[-85.6380632,41.9450738],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006382":{"id":"n2140006382","loc":[-85.6380414,41.9452064],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006389":{"id":"n2140006389","loc":[-85.6379068,41.9453092],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006391":{"id":"n2140006391","loc":[-85.637925,41.9453904],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006393":{"id":"n2140006393","loc":[-85.6379977,41.94545],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2189123275":{"id":"n2189123275","loc":[-85.6371346,41.9462544],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123278":{"id":"n2189123278","loc":[-85.6368371,41.9466153],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123280":{"id":"n2189123280","loc":[-85.6379537,41.9489088],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123282":{"id":"n2189123282","loc":[-85.6383816,41.9497858],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123285":{"id":"n2189123285","loc":[-85.6393673,41.9512417],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123287":{"id":"n2189123287","loc":[-85.640554,41.9517766],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123289":{"id":"n2189123289","loc":[-85.6411,41.9522344],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123291":{"id":"n2189123291","loc":[-85.6417418,41.9526574],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123293":{"id":"n2189123293","loc":[-85.642321,41.9529407],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123295":{"id":"n2189123295","loc":[-85.6427697,41.9532278],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123297":{"id":"n2189123297","loc":[-85.6433332,41.9538254],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123300":{"id":"n2189123300","loc":[-85.6435785,41.9543648],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123301":{"id":"n2189123301","loc":[-85.6444394,41.9541048],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123303":{"id":"n2189123303","loc":[-85.6450603,41.954],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123312":{"id":"n2189123312","loc":[-85.6454829,41.9539108],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123314":{"id":"n2189123314","loc":[-85.6460464,41.9538526],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123315":{"id":"n2189123315","loc":[-85.6463178,41.9537167],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123316":{"id":"n2189123316","loc":[-85.646276,41.9534141],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123317":{"id":"n2189123317","loc":[-85.6459995,41.9531541],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123318":{"id":"n2189123318","loc":[-85.645222,41.9531929],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123319":{"id":"n2189123319","loc":[-85.6447316,41.9531813],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123320":{"id":"n2189123320","loc":[-85.6440637,41.9532977],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123321":{"id":"n2189123321","loc":[-85.6438185,41.9531774],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123322":{"id":"n2189123322","loc":[-85.6440011,41.9528398],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123323":{"id":"n2189123323","loc":[-85.6442672,41.9525914],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123324":{"id":"n2189123324","loc":[-85.6442881,41.9523276],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123326":{"id":"n2189123326","loc":[-85.644262,41.952153],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123328":{"id":"n2189123328","loc":[-85.6441681,41.9520404],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123330":{"id":"n2189123330","loc":[-85.6442098,41.9517494],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123333":{"id":"n2189123333","loc":[-85.6438498,41.9515864],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123336":{"id":"n2189123336","loc":[-85.6435889,41.9513225],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123339":{"id":"n2189123339","loc":[-85.6425349,41.9510315],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123342":{"id":"n2189123342","loc":[-85.6422688,41.9508802],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123345":{"id":"n2189123345","loc":[-85.6418775,41.9508142],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123348":{"id":"n2189123348","loc":[-85.6415488,41.9508064],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123351":{"id":"n2189123351","loc":[-85.6411027,41.9505488],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123353":{"id":"n2189123353","loc":[-85.6410374,41.9498208],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123355":{"id":"n2189123355","loc":[-85.6410061,41.9494327],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123357":{"id":"n2189123357","loc":[-85.6411522,41.9482569],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123359":{"id":"n2189123359","loc":[-85.6410548,41.9473036],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123368":{"id":"n2189123368","loc":[-85.6380216,41.9458974],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123370":{"id":"n2189123370","loc":[-85.6386721,41.9507782],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"w17968193":{"id":"w17968193","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:56:35Z","tags":{"highway":"residential","name":"French St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"French","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312389:15312396","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185970906","n185982877","n185967774","n185985823","n185979974"]},"w203972939":{"id":"w203972939","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path"},"nodes":["n2139858965","n2139858966"]},"w203988289":{"id":"w203988289","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"area":"yes","natural":"water"},"nodes":["n2140006367","n2140006368","n2140006419","n2140006369","n2140006417","n2140006370","n2140006372","n2140006374","n2140006376","n2140006378","n2140006380","n2140006382","n2140006389","n2140006391","n2140006393","n2140006367"]},"w208640157":{"id":"w208640157","version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"area":"yes","natural":"wetland"},"nodes":["n1819849029","n2189123275","n2189123278","n2189123280","n2189123282","n2189123370","n2189123285","n2189123287","n2189123289","n2189123291","n2189123293","n2189123295","n2189123297","n2189123300","n2189123301","n2189123303","n2189123312","n2189123314","n2189123315","n2189123316","n2189123317","n2189123318","n2189123319","n2189123320","n2189123321","n2189123322","n2189123323","n2189123324","n2189123326","n2189123328","n2189123330","n2189123333","n2189123336","n2189123339","n2189123342","n2189123345","n2189123348","n2189123351","n2189123353","n2189123355","n2189123357","n2189123359","n2189123361","n2189123363","n2189123365","n2189123368","n1819849029"]},"w17966281":{"id":"w17966281","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:03Z","tags":{"highway":"residential","name":"Pealer St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pealer","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312363:15312366:15312367:15312368:15325990:15325991:15324554","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975911","n185975913","n185975915","n1475284042","n185975917","n185975919","n185975925","n185970909","n1475284013","n1475283980","n185975928","n185967775","n185975930","n185975932","n185975934","n2139795809","n2139795810"]},"w17965353":{"id":"w17965353","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:36:24Z","tags":{"highway":"residential","name":"Yauney St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Yauney","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312346:15312347","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185966958","n185966959","n185966960","n185966962"]},"w203972938":{"id":"w203972938","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858964","n2139858965","n2139858963","n2139858962","n2139858961","n2139858960","n2139858959","n2139858958","n2139858957","n2139858956","n2139858955","n2139858954","n2139858953","n2139858952","n2139858951"]},"n354002665":{"id":"n354002665","loc":[-85.6366599,41.9444923],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T21:20:26Z","tags":{"ele":"244","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624726","gnis:state_id":"26","name":"Memory Isle","place":"island"}},"n354031301":{"id":"n354031301","loc":[-85.635,41.9463889],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T22:12:53Z","tags":{"amenity":"post_office","ele":"248","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2418163","gnis:state_id":"26","name":"Three Rivers Post Office"}},"n185963454":{"id":"n185963454","loc":[-85.633686,41.946072],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185963455":{"id":"n185963455","loc":[-85.633815,41.946131],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185963456":{"id":"n185963456","loc":[-85.633951,41.946174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185978375":{"id":"n185978375","loc":[-85.634385,41.94559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978377":{"id":"n185978377","loc":[-85.634544,41.945725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978379":{"id":"n185978379","loc":[-85.634573,41.945764],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978381":{"id":"n185978381","loc":[-85.634616,41.945849],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978383":{"id":"n185978383","loc":[-85.634629,41.945893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185984011":{"id":"n185984011","loc":[-85.636058,41.946201],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984013":{"id":"n185984013","loc":[-85.636112,41.946366],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984015":{"id":"n185984015","loc":[-85.636143,41.946551],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185988237":{"id":"n185988237","loc":[-85.6354162,41.946044],"version":"3","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{}},"n185988969":{"id":"n185988969","loc":[-85.635374,41.945325],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185988971":{"id":"n185988971","loc":[-85.635643,41.945585],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185988972":{"id":"n185988972","loc":[-85.635853,41.94586],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n1475283992":{"id":"n1475283992","loc":[-85.6372968,41.9459007],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284011":{"id":"n1475284011","loc":[-85.6359415,41.9459797],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284019":{"id":"n1475284019","loc":[-85.6364433,41.9460423],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n185984009":{"id":"n185984009","loc":[-85.6360524,41.9460485],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988239":{"id":"n185988239","loc":[-85.6358187,41.9460423],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988243":{"id":"n185988243","loc":[-85.6366156,41.9460282],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988244":{"id":"n185988244","loc":[-85.6368316,41.9460046],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988245":{"id":"n185988245","loc":[-85.6370133,41.9459704],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988241":{"id":"n185988241","loc":[-85.636291,41.9460461],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185964976":{"id":"n185964976","loc":[-85.633923,41.9434157],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185964980":{"id":"n185964980","loc":[-85.6333656,41.9437293],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185978388":{"id":"n185978388","loc":[-85.6346449,41.9460571],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819858504":{"id":"n1819858504","loc":[-85.6365343,41.9447926],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858506":{"id":"n1819858506","loc":[-85.6370546,41.9451882],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858516":{"id":"n1819858516","loc":[-85.6358369,41.9444654],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858519":{"id":"n1819858519","loc":[-85.6361534,41.9446176],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858525":{"id":"n1819858525","loc":[-85.6368025,41.9449442],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858527":{"id":"n1819858527","loc":[-85.6334199,41.9457495],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185963452":{"id":"n185963452","loc":[-85.633564,41.9458519],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185963453":{"id":"n185963453","loc":[-85.6336152,41.9459804],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185963451":{"id":"n185963451","loc":[-85.6332888,41.9456871],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n2130304152":{"id":"n2130304152","loc":[-85.6359466,41.9454599],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304153":{"id":"n2130304153","loc":[-85.6362773,41.9452683],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304154":{"id":"n2130304154","loc":[-85.6352028,41.9442868],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304155":{"id":"n2130304155","loc":[-85.6348756,41.9444769],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304156":{"id":"n2130304156","loc":[-85.6349723,41.9444207],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304157":{"id":"n2130304157","loc":[-85.6338698,41.9434443],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304158":{"id":"n2130304158","loc":[-85.635094,41.9451026],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304160":{"id":"n2130304160","loc":[-85.6353716,41.9449322],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304162":{"id":"n2130304162","loc":[-85.6365942,41.9459352],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304163":{"id":"n2130304163","loc":[-85.6369006,41.9457469],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304164":{"id":"n2130304164","loc":[-85.6363292,41.9452278],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304165":{"id":"n2130304165","loc":[-85.6360248,41.9454175],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2139824683":{"id":"n2139824683","loc":[-85.6339825,41.9446441],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:01Z","tags":{}},"n2139824689":{"id":"n2139824689","loc":[-85.6340437,41.9446925],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:01Z","tags":{}},"n2139824702":{"id":"n2139824702","loc":[-85.6340961,41.9447551],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824705":{"id":"n2139824705","loc":[-85.6337467,41.944809],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824707":{"id":"n2139824707","loc":[-85.6341598,41.9448129],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824710":{"id":"n2139824710","loc":[-85.6342771,41.9448223],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824712":{"id":"n2139824712","loc":[-85.6346058,41.944841],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824713":{"id":"n2139824713","loc":[-85.633808,41.9448574],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824714":{"id":"n2139824714","loc":[-85.6340889,41.9448589],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824716":{"id":"n2139824716","loc":[-85.6343335,41.944871],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824717":{"id":"n2139824717","loc":[-85.6343341,41.9448717],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824720":{"id":"n2139824720","loc":[-85.6338757,41.9449069],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824721":{"id":"n2139824721","loc":[-85.6341445,41.9449071],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824724":{"id":"n2139824724","loc":[-85.6334787,41.9449262],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824726":{"id":"n2139824726","loc":[-85.6347119,41.9449332],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824727":{"id":"n2139824727","loc":[-85.6347175,41.9449418],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824728":{"id":"n2139824728","loc":[-85.6344284,41.9449538],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824729":{"id":"n2139824729","loc":[-85.6339339,41.9449573],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824730":{"id":"n2139824730","loc":[-85.6339179,41.9449682],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824732":{"id":"n2139824732","loc":[-85.6335472,41.9449895],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824733":{"id":"n2139824733","loc":[-85.6339736,41.9450164],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824735":{"id":"n2139824735","loc":[-85.6336034,41.9450415],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824736":{"id":"n2139824736","loc":[-85.6348317,41.945043],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824737":{"id":"n2139824737","loc":[-85.63403,41.9450651],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824738":{"id":"n2139824738","loc":[-85.6336611,41.9450949],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824740":{"id":"n2139824740","loc":[-85.6336582,41.9450966],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824744":{"id":"n2139824744","loc":[-85.6331702,41.9451107],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824745":{"id":"n2139824745","loc":[-85.6333388,41.9451142],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824746":{"id":"n2139824746","loc":[-85.6337131,41.9451341],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824747":{"id":"n2139824747","loc":[-85.6337021,41.9451372],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824748":{"id":"n2139824748","loc":[-85.6341244,41.9451472],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824749":{"id":"n2139824749","loc":[-85.6333952,41.945166],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824750":{"id":"n2139824750","loc":[-85.633395,41.9451661],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824751":{"id":"n2139824751","loc":[-85.6346258,41.9451725],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824752":{"id":"n2139824752","loc":[-85.6332387,41.9451741],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824753":{"id":"n2139824753","loc":[-85.6346901,41.9451853],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824754":{"id":"n2139824754","loc":[-85.6346611,41.9452035],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824755":{"id":"n2139824755","loc":[-85.6346574,41.9452059],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824756":{"id":"n2139824756","loc":[-85.6345611,41.9452133],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824757":{"id":"n2139824757","loc":[-85.633453,41.9452194],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824758":{"id":"n2139824758","loc":[-85.6335508,41.9452283],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824759":{"id":"n2139824759","loc":[-85.6347424,41.9452312],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824760":{"id":"n2139824760","loc":[-85.6342305,41.9452395],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824761":{"id":"n2139824761","loc":[-85.6342319,41.9452449],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824762":{"id":"n2139824762","loc":[-85.6334969,41.94526],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824763":{"id":"n2139824763","loc":[-85.63468,41.9452706],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824764":{"id":"n2139824764","loc":[-85.6346772,41.9452724],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824765":{"id":"n2139824765","loc":[-85.6338611,41.9452763],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824766":{"id":"n2139824766","loc":[-85.6347811,41.9452939],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824767":{"id":"n2139824767","loc":[-85.6347375,41.9453211],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824768":{"id":"n2139824768","loc":[-85.6339171,41.9453301],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824769":{"id":"n2139824769","loc":[-85.6348307,41.9453377],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824770":{"id":"n2139824770","loc":[-85.6347067,41.9453405],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824771":{"id":"n2139824771","loc":[-85.6343461,41.9453461],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824772":{"id":"n2139824772","loc":[-85.6343481,41.9453475],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824773":{"id":"n2139824773","loc":[-85.634805,41.9453538],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824774":{"id":"n2139824774","loc":[-85.6336997,41.9453692],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824775":{"id":"n2139824775","loc":[-85.6339709,41.9453818],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824776":{"id":"n2139824776","loc":[-85.6336229,41.9454134],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824777":{"id":"n2139824777","loc":[-85.6349022,41.9454141],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824778":{"id":"n2139824778","loc":[-85.6348854,41.9454246],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824779":{"id":"n2139824779","loc":[-85.6340286,41.9454373],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824780":{"id":"n2139824780","loc":[-85.6336963,41.9454572],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824781":{"id":"n2139824781","loc":[-85.6336789,41.9454672],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824782":{"id":"n2139824782","loc":[-85.6344933,41.945475],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824783":{"id":"n2139824783","loc":[-85.6340854,41.9454918],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824784":{"id":"n2139824784","loc":[-85.6350036,41.9455034],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824785":{"id":"n2139824785","loc":[-85.6337501,41.9455089],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824786":{"id":"n2139824786","loc":[-85.6337497,41.9455091],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824787":{"id":"n2139824787","loc":[-85.6345425,41.9455186],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824788":{"id":"n2139824788","loc":[-85.6341459,41.9455372],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824789":{"id":"n2139824789","loc":[-85.6341376,41.945542],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824790":{"id":"n2139824790","loc":[-85.6338394,41.9455462],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824791":{"id":"n2139824791","loc":[-85.6349171,41.9455588],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824792":{"id":"n2139824792","loc":[-85.6338074,41.9455646],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824793":{"id":"n2139824793","loc":[-85.6346229,41.9455894],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824794":{"id":"n2139824794","loc":[-85.6338983,41.9455995],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824795":{"id":"n2139824795","loc":[-85.6338962,41.9456007],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824796":{"id":"n2139824796","loc":[-85.6342475,41.9456348],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824797":{"id":"n2139824797","loc":[-85.6339505,41.9456497],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824798":{"id":"n2139824798","loc":[-85.6347243,41.9456788],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824799":{"id":"n2139824799","loc":[-85.635057,41.9456831],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824800":{"id":"n2139824800","loc":[-85.635287,41.9457056],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824801":{"id":"n2139824801","loc":[-85.6350753,41.9457068],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824802":{"id":"n2139824802","loc":[-85.6347753,41.9457252],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824803":{"id":"n2139824803","loc":[-85.6340521,41.9457473],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824804":{"id":"n2139824804","loc":[-85.6352875,41.9457611],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824805":{"id":"n2139824805","loc":[-85.6352941,41.9457611],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824806":{"id":"n2139824806","loc":[-85.6350758,41.9457623],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824807":{"id":"n2139824807","loc":[-85.6348194,41.9457638],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824808":{"id":"n2139824808","loc":[-85.635296,41.9459428],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824809":{"id":"n2139824809","loc":[-85.6348212,41.9459455],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139832635":{"id":"n2139832635","loc":[-85.6354612,41.9448791],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832636":{"id":"n2139832636","loc":[-85.6360241,41.9453844],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832637":{"id":"n2139832637","loc":[-85.6361452,41.9453121],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832639":{"id":"n2139832639","loc":[-85.6355997,41.944797],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832641":{"id":"n2139832641","loc":[-85.6351346,41.9443541],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832647":{"id":"n2139832647","loc":[-85.6329883,41.9453692],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832653":{"id":"n2139832653","loc":[-85.6333643,41.9456293],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832663":{"id":"n2139832663","loc":[-85.6335394,41.9455339],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832665":{"id":"n2139832665","loc":[-85.6332375,41.9452476],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832667":{"id":"n2139832667","loc":[-85.6331664,41.9452161],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832669":{"id":"n2139832669","loc":[-85.6331144,41.9451875],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832671":{"id":"n2139832671","loc":[-85.6330779,41.9451274],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832673":{"id":"n2139832673","loc":[-85.6330664,41.9450802],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832678":{"id":"n2139832678","loc":[-85.6332218,41.9453585],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832686":{"id":"n2139832686","loc":[-85.6334246,41.945541],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832691":{"id":"n2139832691","loc":[-85.6329898,41.9454997],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832693":{"id":"n2139832693","loc":[-85.6343554,41.9443274],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832694":{"id":"n2139832694","loc":[-85.6336339,41.9437089],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832696":{"id":"n2139832696","loc":[-85.633532,41.9437708],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832697":{"id":"n2139832697","loc":[-85.6338316,41.9440868],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832698":{"id":"n2139832698","loc":[-85.6342258,41.9444141],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832699":{"id":"n2139832699","loc":[-85.6339164,41.9442166],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832700":{"id":"n2139832700","loc":[-85.6341389,41.944384],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832701":{"id":"n2139832701","loc":[-85.634235,41.9443259],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832702":{"id":"n2139832702","loc":[-85.633613,41.9437875],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832703":{"id":"n2139832703","loc":[-85.633915,41.9436132],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832704":{"id":"n2139832704","loc":[-85.6340019,41.9435613],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832706":{"id":"n2139832706","loc":[-85.6343197,41.9438427],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832708":{"id":"n2139832708","loc":[-85.6342361,41.9438936],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832709":{"id":"n2139832709","loc":[-85.6353839,41.9460401],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832710":{"id":"n2139832710","loc":[-85.6354032,41.9456763],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832711":{"id":"n2139832711","loc":[-85.6356839,41.9459252],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832712":{"id":"n2139832712","loc":[-85.6356109,41.945735],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832713":{"id":"n2139832713","loc":[-85.6353997,41.9457421],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832714":{"id":"n2139832714","loc":[-85.6353895,41.9459347],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832715":{"id":"n2139832715","loc":[-85.6334777,41.9436628],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832716":{"id":"n2139832716","loc":[-85.6333137,41.9435382],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832717":{"id":"n2139832717","loc":[-85.6330938,41.9435406],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832721":{"id":"n2139832721","loc":[-85.6333023,41.9434922],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832722":{"id":"n2139832722","loc":[-85.6330466,41.943623],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832723":{"id":"n2139832723","loc":[-85.6332746,41.9435624],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832724":{"id":"n2139832724","loc":[-85.6333511,41.9435176],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832725":{"id":"n2139832725","loc":[-85.6332241,41.9434001],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832726":{"id":"n2139832726","loc":[-85.6332355,41.9433686],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139870373":{"id":"n2139870373","loc":[-85.6351783,41.9439117],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870374":{"id":"n2139870374","loc":[-85.6351431,41.9439217],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870375":{"id":"n2139870375","loc":[-85.6348853,41.9439117],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870376":{"id":"n2139870376","loc":[-85.6348317,41.9439105],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870377":{"id":"n2139870377","loc":[-85.6346384,41.944007],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870378":{"id":"n2139870378","loc":[-85.6345563,41.9440523],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2140006403":{"id":"n2140006403","loc":[-85.6359942,41.9450097],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006405":{"id":"n2140006405","loc":[-85.6363884,41.9446079],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006407":{"id":"n2140006407","loc":[-85.6362148,41.9447874],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006409":{"id":"n2140006409","loc":[-85.6379476,41.9445869],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006411":{"id":"n2140006411","loc":[-85.6378485,41.9445674],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006413":{"id":"n2140006413","loc":[-85.6378952,41.9444547],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006415":{"id":"n2140006415","loc":[-85.6379962,41.944477],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006421":{"id":"n2140006421","loc":[-85.6355248,41.9433702],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006423":{"id":"n2140006423","loc":[-85.6378471,41.9439233],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006425":{"id":"n2140006425","loc":[-85.6378913,41.9441238],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006426":{"id":"n2140006426","loc":[-85.6381674,41.9442289],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006427":{"id":"n2140006427","loc":[-85.6382359,41.9440975],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006428":{"id":"n2140006428","loc":[-85.6382071,41.9440252],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006429":{"id":"n2140006429","loc":[-85.6381409,41.9439973],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006430":{"id":"n2140006430","loc":[-85.6380569,41.9440153],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006433":{"id":"n2140006433","loc":[-85.6379071,41.9442467],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006435":{"id":"n2140006435","loc":[-85.6381634,41.9443125],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006436":{"id":"n2140006436","loc":[-85.6382407,41.944301],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006438":{"id":"n2140006438","loc":[-85.6382761,41.9442188],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006439":{"id":"n2140006439","loc":[-85.6382429,41.9441761],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006440":{"id":"n2140006440","loc":[-85.6382016,41.9441632],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006441":{"id":"n2140006441","loc":[-85.6378185,41.9439835],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2166205688":{"id":"n2166205688","loc":[-85.6349963,41.9444392],"version":"1","changeset":"15117845","user":"rolandg","uid":"8703","visible":"true","timestamp":"2013-02-21T23:02:38Z","tags":{}},"n2168544780":{"id":"n2168544780","loc":[-85.633944,41.945807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544781":{"id":"n2168544781","loc":[-85.6340783,41.9458621],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544782":{"id":"n2168544782","loc":[-85.6338184,41.9457548],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544783":{"id":"n2168544783","loc":[-85.6339925,41.9459777],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544784":{"id":"n2168544784","loc":[-85.6337317,41.9458698],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544785":{"id":"n2168544785","loc":[-85.6337297,41.9460042],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544786":{"id":"n2168544786","loc":[-85.633919,41.9460797],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544787":{"id":"n2168544787","loc":[-85.6338672,41.9459263],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544788":{"id":"n2168544788","loc":[-85.6338246,41.9459853],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544789":{"id":"n2168544789","loc":[-85.6337615,41.9459601],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544790":{"id":"n2168544790","loc":[-85.6342079,41.9460399],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544791":{"id":"n2168544791","loc":[-85.6343346,41.9458503],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544792":{"id":"n2168544792","loc":[-85.6343759,41.9458116],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544793":{"id":"n2168544793","loc":[-85.6344394,41.9458109],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544795":{"id":"n2168544795","loc":[-85.6344827,41.945851],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544797":{"id":"n2168544797","loc":[-85.6344807,41.945969],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544798":{"id":"n2168544798","loc":[-85.6344404,41.9459697],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544799":{"id":"n2168544799","loc":[-85.6344413,41.9460333],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544800":{"id":"n2168544800","loc":[-85.6342173,41.9460705],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544801":{"id":"n2168544801","loc":[-85.6342162,41.9460392],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544802":{"id":"n2168544802","loc":[-85.6344251,41.9460351],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544805":{"id":"n2168544805","loc":[-85.6344257,41.9460507],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544807":{"id":"n2168544807","loc":[-85.6344721,41.9460498],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544809":{"id":"n2168544809","loc":[-85.6344754,41.9461427],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544811":{"id":"n2168544811","loc":[-85.6344311,41.9461435],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544813":{"id":"n2168544813","loc":[-85.6344317,41.9461592],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544815":{"id":"n2168544815","loc":[-85.6343708,41.9461604],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544817":{"id":"n2168544817","loc":[-85.6343715,41.9461786],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544819":{"id":"n2168544819","loc":[-85.6343229,41.9461795],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544821":{"id":"n2168544821","loc":[-85.6343222,41.9461606],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544823":{"id":"n2168544823","loc":[-85.6342476,41.9461621],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544825":{"id":"n2168544825","loc":[-85.6342444,41.94607],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544827":{"id":"n2168544827","loc":[-85.634138,41.9461632],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544829":{"id":"n2168544829","loc":[-85.6342016,41.9460703],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544830":{"id":"n2168544830","loc":[-85.6332929,41.9463092],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544831":{"id":"n2168544831","loc":[-85.633122,41.946239],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544832":{"id":"n2168544832","loc":[-85.6332954,41.9460055],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544833":{"id":"n2168544833","loc":[-85.6333954,41.9460466],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544834":{"id":"n2168544834","loc":[-85.6334044,41.9460345],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544835":{"id":"n2168544835","loc":[-85.6334594,41.9460571],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544836":{"id":"n2168544836","loc":[-85.6333871,41.9461544],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544837":{"id":"n2168544837","loc":[-85.633403,41.9461609],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544838":{"id":"n2168544838","loc":[-85.6341683,41.9464167],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544839":{"id":"n2168544839","loc":[-85.6341711,41.9463411],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544840":{"id":"n2168544840","loc":[-85.6344471,41.9463469],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544841":{"id":"n2168544841","loc":[-85.6344441,41.9464243],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544842":{"id":"n2168544842","loc":[-85.6343622,41.9464226],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544843":{"id":"n2168544843","loc":[-85.6343593,41.9464989],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544844":{"id":"n2168544844","loc":[-85.6342812,41.9464973],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544845":{"id":"n2168544845","loc":[-85.634283,41.9464504],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544846":{"id":"n2168544846","loc":[-85.6342609,41.9464499],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544847":{"id":"n2168544847","loc":[-85.6342621,41.9464187],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544848":{"id":"n2168544848","loc":[-85.6348414,41.9463396],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544849":{"id":"n2168544849","loc":[-85.6348387,41.9461872],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544850":{"id":"n2168544850","loc":[-85.6351186,41.9461844],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544851":{"id":"n2168544851","loc":[-85.635119,41.9462112],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544852":{"id":"n2168544852","loc":[-85.6351918,41.9462104],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544853":{"id":"n2168544853","loc":[-85.6351944,41.9463515],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544854":{"id":"n2168544854","loc":[-85.6351049,41.9463524],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544855":{"id":"n2168544855","loc":[-85.6351046,41.946337],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2189153180":{"id":"n2189153180","loc":[-85.6340369,41.9469572],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153181":{"id":"n2189153181","loc":[-85.6342531,41.946953],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153183":{"id":"n2189153183","loc":[-85.6348115,41.9465468],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153184":{"id":"n2189153184","loc":[-85.6348105,41.9464569],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153185":{"id":"n2189153185","loc":[-85.6351431,41.9464549],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153186":{"id":"n2189153186","loc":[-85.6351441,41.9465448],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153187":{"id":"n2189153187","loc":[-85.6350077,41.9465456],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153188":{"id":"n2189153188","loc":[-85.635008,41.9465721],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153189":{"id":"n2189153189","loc":[-85.6348965,41.9465727],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153190":{"id":"n2189153190","loc":[-85.6348962,41.9465463],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153191":{"id":"n2189153191","loc":[-85.6348963,41.9471586],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153192":{"id":"n2189153192","loc":[-85.6348944,41.947032],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153193":{"id":"n2189153193","loc":[-85.6350241,41.947031],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153194":{"id":"n2189153194","loc":[-85.635026,41.9471575],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153195":{"id":"n2189153195","loc":[-85.6352328,41.9471053],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153196":{"id":"n2189153196","loc":[-85.6352359,41.9469906],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153197":{"id":"n2189153197","loc":[-85.6353694,41.9469925],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153198":{"id":"n2189153198","loc":[-85.6353664,41.9471072],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153199":{"id":"n2189153199","loc":[-85.6348241,41.9469287],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153200":{"id":"n2189153200","loc":[-85.6348248,41.9468185],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153201":{"id":"n2189153201","loc":[-85.6351199,41.9468195],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153202":{"id":"n2189153202","loc":[-85.6351192,41.9469298],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153203":{"id":"n2189153203","loc":[-85.6347965,41.9468057],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153204":{"id":"n2189153204","loc":[-85.634792,41.9466044],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153205":{"id":"n2189153205","loc":[-85.6349483,41.9466025],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153206":{"id":"n2189153206","loc":[-85.6349493,41.9466448],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153207":{"id":"n2189153207","loc":[-85.6349753,41.9466445],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153208":{"id":"n2189153208","loc":[-85.6349743,41.9465995],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153209":{"id":"n2189153209","loc":[-85.6351173,41.9465977],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153210":{"id":"n2189153210","loc":[-85.6351219,41.9468015],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153211":{"id":"n2189153211","loc":[-85.6349806,41.9468032],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153212":{"id":"n2189153212","loc":[-85.6349794,41.9467519],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153213":{"id":"n2189153213","loc":[-85.6349521,41.9467523],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153214":{"id":"n2189153214","loc":[-85.6349532,41.9468037],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153215":{"id":"n2189153215","loc":[-85.6346302,41.9468381],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153216":{"id":"n2189153216","loc":[-85.6343028,41.9468449],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153217":{"id":"n2189153217","loc":[-85.6342006,41.9468297],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153218":{"id":"n2189153218","loc":[-85.6336698,41.9465918],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153219":{"id":"n2189153219","loc":[-85.6344663,41.9466639],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153220":{"id":"n2189153220","loc":[-85.6344639,41.9466015],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153221":{"id":"n2189153221","loc":[-85.6342283,41.9466065],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153222":{"id":"n2189153222","loc":[-85.6342303,41.9466587],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153223":{"id":"n2189153223","loc":[-85.6342843,41.9466575],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153224":{"id":"n2189153224","loc":[-85.6342851,41.9466794],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153225":{"id":"n2189153225","loc":[-85.6343475,41.9466781],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153226":{"id":"n2189153226","loc":[-85.634347,41.9466664],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153227":{"id":"n2189153227","loc":[-85.6354428,41.9470148],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153228":{"id":"n2189153228","loc":[-85.6354432,41.9468005],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153229":{"id":"n2189153229","loc":[-85.6360277,41.9468011],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153230":{"id":"n2189153230","loc":[-85.6360273,41.9470154],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153231":{"id":"n2189153231","loc":[-85.6354565,41.9465823],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153232":{"id":"n2189153232","loc":[-85.6354496,41.946218],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153233":{"id":"n2189153233","loc":[-85.6356355,41.9465788],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153234":{"id":"n2189153234","loc":[-85.6357155,41.9468008],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153235":{"id":"n2189153235","loc":[-85.6359539,41.9467969],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153236":{"id":"n2189153236","loc":[-85.6359561,41.9463036],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153237":{"id":"n2189153237","loc":[-85.6360129,41.9464793],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153238":{"id":"n2189153238","loc":[-85.6360152,41.9463898],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153239":{"id":"n2189153239","loc":[-85.6359607,41.9464928],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153240":{"id":"n2189153240","loc":[-85.6356903,41.9462227],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153242":{"id":"n2189153242","loc":[-85.6354163,41.946142],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153243":{"id":"n2189153243","loc":[-85.6357546,41.9462214],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153244":{"id":"n2189153244","loc":[-85.6357937,41.9462542],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153245":{"id":"n2189153245","loc":[-85.6358723,41.9467048],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153246":{"id":"n2189153246","loc":[-85.6361494,41.946757],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153247":{"id":"n2189153247","loc":[-85.6354173,41.9469082],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153248":{"id":"n2189153248","loc":[-85.635443,41.9469079],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153249":{"id":"n2189153249","loc":[-85.6360275,41.9469093],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153250":{"id":"n2189153250","loc":[-85.6361542,41.946915],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153251":{"id":"n2189153251","loc":[-85.6358654,41.9464843],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153252":{"id":"n2189153252","loc":[-85.6359549,41.9467499],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153253":{"id":"n2189153253","loc":[-85.6357172,41.9466335],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153254":{"id":"n2189153254","loc":[-85.6355644,41.9461768],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153255":{"id":"n2189153255","loc":[-85.6355655,41.946528],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153256":{"id":"n2189153256","loc":[-85.6357055,41.9465971],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153257":{"id":"n2189153257","loc":[-85.635869,41.9465971],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153259":{"id":"n2189153259","loc":[-85.6354561,41.9470278],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153260":{"id":"n2189153260","loc":[-85.6357961,41.9470233],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153261":{"id":"n2189153261","loc":[-85.6357977,41.9470907],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153262":{"id":"n2189153262","loc":[-85.6357297,41.9470916],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153263":{"id":"n2189153263","loc":[-85.635733,41.947233],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153264":{"id":"n2189153264","loc":[-85.6362674,41.9468637],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153265":{"id":"n2189153265","loc":[-85.6362646,41.9467047],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153266":{"id":"n2189153266","loc":[-85.6363267,41.9467047],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153267":{"id":"n2189153267","loc":[-85.6362633,41.9465848],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153268":{"id":"n2189153268","loc":[-85.6363805,41.9465468],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153269":{"id":"n2189153269","loc":[-85.6364604,41.9466842],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153270":{"id":"n2189153270","loc":[-85.6364604,41.9468647],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2199109756":{"id":"n2199109756","loc":[-85.6337134,41.9471841],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109757":{"id":"n2199109757","loc":[-85.6336514,41.94716],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109758":{"id":"n2199109758","loc":[-85.6337043,41.9470847],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109759":{"id":"n2199109759","loc":[-85.6335997,41.9470441],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109760":{"id":"n2199109760","loc":[-85.6335064,41.9471771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n185960195":{"id":"n185960195","loc":[-85.6295992,41.9524346],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185960796":{"id":"n185960796","loc":[-85.634723,41.953681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185961396":{"id":"n185961396","loc":[-85.634767,41.959009],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185962625":{"id":"n185962625","loc":[-85.635175,41.97201],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:29Z","tags":{}},"n185964982":{"id":"n185964982","loc":[-85.632799,41.9440543],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185965289":{"id":"n185965289","loc":[-85.634621,41.947323],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:49Z","tags":{}},"n185965291":{"id":"n185965291","loc":[-85.636166,41.947296],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:49Z","tags":{}},"n185965399":{"id":"n185965399","loc":[-85.634776,41.959834],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"n185966937":{"id":"n185966937","loc":[-85.633183,41.947315],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185966948":{"id":"n185966948","loc":[-85.626406,41.957188],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185967422":{"id":"n185967422","loc":[-85.6320229,41.9490123],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185967917":{"id":"n185967917","loc":[-85.634763,41.958292],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:17Z","tags":{}},"n185967918":{"id":"n185967918","loc":[-85.636271,41.958311],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:17Z","tags":{}},"n185968100":{"id":"n185968100","loc":[-85.630835,41.950656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185970515":{"id":"n185970515","loc":[-85.634832,41.963866],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:41Z","tags":{}},"n185971578":{"id":"n185971578","loc":[-85.634641,41.948627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:05Z","tags":{}},"n185971580":{"id":"n185971580","loc":[-85.6361818,41.9486135],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971631":{"id":"n185971631","loc":[-85.634729,41.954667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185971632":{"id":"n185971632","loc":[-85.636236,41.954656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185972155":{"id":"n185972155","loc":[-85.623333,41.961987],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185974583":{"id":"n185974583","loc":[-85.634686,41.951158],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:21Z","tags":{}},"n185974585":{"id":"n185974585","loc":[-85.6362059,41.9511457],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185975064":{"id":"n185975064","loc":[-85.636218,41.953667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185975735":{"id":"n185975735","loc":[-85.634923,41.969269],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:09Z","tags":{}},"n185978390":{"id":"n185978390","loc":[-85.634668,41.949875],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978392":{"id":"n185978392","loc":[-85.634686,41.952415],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978394":{"id":"n185978394","loc":[-85.634726,41.955921],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978399":{"id":"n185978399","loc":[-85.6347861,41.9606613],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978402":{"id":"n185978402","loc":[-85.634806,41.961485],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978406":{"id":"n185978406","loc":[-85.6348298,41.964783],"version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:00Z","tags":{}},"n185978410":{"id":"n185978410","loc":[-85.6348766,41.9677088],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978414":{"id":"n185978414","loc":[-85.634938,41.971566],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978415":{"id":"n185978415","loc":[-85.634942,41.971611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978417":{"id":"n185978417","loc":[-85.634952,41.971655],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978419":{"id":"n185978419","loc":[-85.634989,41.971741],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978420":{"id":"n185978420","loc":[-85.635063,41.971864],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978787":{"id":"n185978787","loc":[-85.627936,41.954693],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978790":{"id":"n185978790","loc":[-85.626832,41.954677],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978967":{"id":"n185978967","loc":[-85.632278,41.948613],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:39Z","tags":{}},"n185980735":{"id":"n185980735","loc":[-85.628639,41.953725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:47Z","tags":{}},"n185982163":{"id":"n185982163","loc":[-85.636233,41.952398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:31Z","tags":{}},"n185982193":{"id":"n185982193","loc":[-85.6313855,41.9499125],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185982195":{"id":"n185982195","loc":[-85.6304857,41.9511945],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185982196":{"id":"n185982196","loc":[-85.626336,41.957291],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982197":{"id":"n185982197","loc":[-85.625578,41.958664],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982198":{"id":"n185982198","loc":[-85.624619,41.960145],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982200":{"id":"n185982200","loc":[-85.624494,41.960338],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185984017":{"id":"n185984017","loc":[-85.636163,41.947382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984020":{"id":"n185984020","loc":[-85.636188,41.9498803],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185984022":{"id":"n185984022","loc":[-85.636276,41.955919],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:47Z","tags":{}},"n185984024":{"id":"n185984024","loc":[-85.636279,41.956901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:47Z","tags":{}},"n185988036":{"id":"n185988036","loc":[-85.631422,41.948294],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:30Z","tags":{}},"n185988867":{"id":"n185988867","loc":[-85.63102,41.948805],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988869":{"id":"n185988869","loc":[-85.630773,41.949209],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988871":{"id":"n185988871","loc":[-85.63005,41.95016],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988872":{"id":"n185988872","loc":[-85.629423,41.951016],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988873":{"id":"n185988873","loc":[-85.629252,41.951256],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988875":{"id":"n185988875","loc":[-85.629126,41.951489],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988877":{"id":"n185988877","loc":[-85.628991,41.951704],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988878":{"id":"n185988878","loc":[-85.628689,41.952112],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988879":{"id":"n185988879","loc":[-85.628313,41.952666],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988880":{"id":"n185988880","loc":[-85.627687,41.953529],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988882":{"id":"n185988882","loc":[-85.627394,41.953947],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988884":{"id":"n185988884","loc":[-85.627287,41.954128],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:14Z","tags":{}},"n1819858502":{"id":"n1819858502","loc":[-85.6328435,41.9455473],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858510":{"id":"n1819858510","loc":[-85.6324841,41.9453438],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858515":{"id":"n1819858515","loc":[-85.6318511,41.9446409],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858520":{"id":"n1819858520","loc":[-85.6326558,41.9454708],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858522":{"id":"n1819858522","loc":[-85.6319048,41.9447407],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858524":{"id":"n1819858524","loc":[-85.6317718,41.9443666],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858530":{"id":"n1819858530","loc":[-85.632055,41.9449128],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n2139795768":{"id":"n2139795768","loc":[-85.6243023,41.9606102],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139832645":{"id":"n2139832645","loc":[-85.6324455,41.9448607],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832649":{"id":"n2139832649","loc":[-85.6328043,41.9454773],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832651":{"id":"n2139832651","loc":[-85.6322547,41.9449621],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832675":{"id":"n2139832675","loc":[-85.6327356,41.944757],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832677":{"id":"n2139832677","loc":[-85.6325433,41.9448599],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832680":{"id":"n2139832680","loc":[-85.6328885,41.9455614],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832682":{"id":"n2139832682","loc":[-85.6320913,41.9449492],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832684":{"id":"n2139832684","loc":[-85.6325366,41.9447133],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832688":{"id":"n2139832688","loc":[-85.6322786,41.94485],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832718":{"id":"n2139832718","loc":[-85.6327486,41.9432475],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832719":{"id":"n2139832719","loc":[-85.6327926,41.9431773],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832720":{"id":"n2139832720","loc":[-85.6329033,41.943153],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832727":{"id":"n2139832727","loc":[-85.6328975,41.9430783],"version":"2","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{}},"n2139844839":{"id":"n2139844839","loc":[-85.6326261,41.9432308],"version":"1","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{}},"n2189015992":{"id":"n2189015992","loc":[-85.6347706,41.9593383],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189153179":{"id":"n2189153179","loc":[-85.6340476,41.9472565],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153182":{"id":"n2189153182","loc":[-85.6342638,41.9472522],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153241":{"id":"n2189153241","loc":[-85.6354184,41.9473091],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153258":{"id":"n2189153258","loc":[-85.6354611,41.9472366],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153277":{"id":"n2189153277","loc":[-85.6328948,41.9462374],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2199109755":{"id":"n2199109755","loc":[-85.6336729,41.9472417],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"w203970139":{"id":"w203970139","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824793","n2139824787","n2139824773","n2139824778","n2139824793"]},"w203970098":{"id":"w203970098","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824748","n2139824712","n2139824726","n2139824760","n2139824748"]},"w208643132":{"id":"w208643132","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153195","n2189153196","n2189153197","n2189153198","n2189153195"]},"w203970094":{"id":"w203970094","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824755","n2139824753","n2139824759","n2139824764","n2139824763","n2139824767","n2139824770","n2139824782","n2139824772","n2139824756","n2139824751","n2139824754","n2139824755"]},"w208643138":{"id":"w208643138","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153231","n2189153232","n2189153240","n2189153244","n2189153236","n2189153238","n2189153237","n2189153239","n2189153252","n2189153235","n2189153234","n2189153253","n2189153233","n2189153231"]},"w203970125":{"id":"w203970125","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824735","n2139824738","n2139824757","n2139824749","n2139824735"]},"w170848823":{"id":"w170848823","version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:39Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819849189","n1819858516","n1819858519","n1819858504","n1819858525","n1819858506","n1819858513"]},"w203970898":{"id":"w203970898","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832645","n2139832647","n2139832649","n2139832651","n2139832645"]},"w203970134":{"id":"w203970134","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824796","n2139824803","n2139824797","n2139824788","n2139824796"]},"w203970104":{"id":"w203970104","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824733","n2139824730","n2139824714","n2139824721","n2139824733"]},"w206805245":{"id":"w206805245","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544780","n2168544781","n2139824796","n2139824803","n2168544780"]},"w206805252":{"id":"w206805252","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544838","n2168544839","n2168544840","n2168544841","n2168544842","n2168544843","n2168544844","n2168544845","n2168544846","n2168544847","n2168544838"]},"w203970099":{"id":"w203970099","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824783","n2139824795","n2139824790","n2139824779","n2139824783"]},"w17967730":{"id":"w17967730","version":"2","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:18Z","tags":{"highway":"residential","name":"Water St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Water","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185963451","n2189153277","n185988036","n185988867","n185988869","n185988871","n185988872","n185988873","n185988875","n185988877","n185988878","n185988879","n185988880","n185988882","n185988884","n185978790"]},"w208643133":{"id":"w208643133","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153199","n2189153200","n2189153201","n2189153202","n2189153199"]},"w203970127":{"id":"w203970127","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824794","n2139824783","n2139824789","n2139824797","n2139824794"]},"w208643139":{"id":"w208643139","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service"},"nodes":["n185988237","n2189153242","n2189153247","n2189153241"]},"w203988297":{"id":"w203988297","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2140006423","n2140006441","n2140006425","n2140006426","n2140006440","n2140006427","n2140006428","n2140006429","n2140006430","n2140006423"]},"w206805250":{"id":"w206805250","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544827","n2168544823","n2168544825","n2168544800","n2168544829","n2168544827"]},"w208643140":{"id":"w208643140","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153242","n2189153254","n2189153243","n2189153244","n2189153251","n2189153257","n2189153245","n2189153252","n2189153246"]},"w203974055":{"id":"w203974055","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870376","n2139870377"]},"w206805247":{"id":"w206805247","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544785","n2168544786","n2168544783","n2168544787","n2168544788","n2168544789","n2168544785"]},"w17964996":{"id":"w17964996","version":"3","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"residential","name":"Foster St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Foster","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312360","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1819858524","n1819858515","n1819858522","n1819858530","n2139832682","n1819858510","n1819858520","n1819858502","n2139832680","n185963451","n1819858527","n185963452","n185963453","n185963454","n185963455","n185963456"]},"w208643144":{"id":"w208643144","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153264","n2189153265","n2189153266","n2189153267","n2189153268","n2189153269","n2189153270","n2189153264"]},"w203970914":{"id":"w203970914","version":"2","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832722","n2139832723","n2139832724","n2139832725","n2139832726","n2139832727","n2139844839","n2139832722"]},"w208643143":{"id":"w208643143","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153258","n2189153259","n2189153260","n2189153261","n2189153262","n2189153263","n2189153258"]},"w203049590":{"id":"w203049590","version":"3","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2130304152","n2130304153","n2140006403","n2130304154","n2130304156","n2130304155","n2130304160","n2130304152"]},"w203974054":{"id":"w203974054","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858971","n2139870373","n2139870374"]},"w203049595":{"id":"w203049595","version":"2","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"service"},"nodes":["n2130304158","n2130304159","n2130304160","n2139832635","n2139832639"]},"w203970913":{"id":"w203970913","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832715","n2139832716","n2139832717","n2139832718","n2139832719","n2139832720","n2139832721","n2139832716"]},"w208643134":{"id":"w208643134","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153203","n2189153204","n2189153205","n2189153206","n2189153207","n2189153208","n2189153209","n2189153210","n2189153211","n2189153212","n2189153213","n2189153214","n2189153203"]},"w134150808":{"id":"w134150808","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:53Z","tags":{"bridge":"yes","highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988239","n185984009","n185988241","n1475284019"]},"w203970115":{"id":"w203970115","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824761","n2139824727","n2139824736","n2139824771","n2139824761"]},"w208643130":{"id":"w208643130","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153183","n2189153184","n2189153185","n2189153186","n2189153187","n2189153188","n2189153189","n2189153190","n2189153183"]},"w206805246":{"id":"w206805246","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544782","n2168544780","n2168544781","n2168544783","n2168544787","n2168544784","n2168544782"]},"w203970138":{"id":"w203970138","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824729","n2139824720","n2139824702","n2139824707","n2139824729"]},"w203970133":{"id":"w203970133","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824748","n2139824737","n2139824717","n2139824728","n2139824748"]},"w203970907":{"id":"w203970907","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832700","n2139832701","n2139832702"]},"w203974056":{"id":"w203974056","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870377","n2139870378"]},"w203970897":{"id":"w203970897","version":"2","changeset":"15117845","user":"rolandg","uid":"8703","visible":"true","timestamp":"2013-02-21T23:02:38Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2130304156","n2166205688","n2139832635","n2139832636","n2139832637","n2139832639","n2139832641","n2166205688"]},"w203974057":{"id":"w203974057","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870375","n2139870376"]},"w203049594":{"id":"w203049594","version":"3","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"service"},"nodes":["n2130304156","n2139870378","n2139832706","n2139832704","n2130304157"]},"w203970122":{"id":"w203970122","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824757","n2139824740","n2139824747","n2139824762","n2139824757"]},"w208643136":{"id":"w208643136","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153219","n2189153220","n2189153221","n2189153222","n2189153223","n2189153224","n2189153225","n2189153226","n2189153219"]},"w203970128":{"id":"w203970128","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824732","n2139824752","n2139824744","n2139824724","n2139824732"]},"w203970097":{"id":"w203970097","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824737","n2139824733","n2139824710","n2139824716","n2139824737"]},"w203970137":{"id":"w203970137","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824765","n2139824774","n2139824758","n2139824746","n2139824765"]},"w134150840":{"id":"w134150840","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:56Z","tags":{"highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1475284019","n185988243","n185988244","n185988245"]},"w17967628":{"id":"w17967628","version":"3","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978388","n2139832709","n185988237","n185988239"]},"w203988292":{"id":"w203988292","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"bridge":"yes","highway":"footway"},"nodes":["n2140006407","n2140006405"]},"w203970118":{"id":"w203970118","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824775","n2139824785","n2139824780","n2139824768","n2139824775"]},"w203970121":{"id":"w203970121","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824768","n2139824781","n2139824776","n2139824765","n2139824768"]},"w17967752":{"id":"w17967752","version":"5","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"residential","name":"Railroad Drive","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Railroad","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964980","n2139832699","n2139832700","n2130304158","n185988969","n185988971","n185988972","n1475284011"]},"w203970136":{"id":"w203970136","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824798","n2139824793","n2139824777","n2139824784","n2139824798"]},"w203970142":{"id":"w203970142","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824808","n2139824809","n2139824807","n2139824806","n2139824801","n2139824800","n2139824804","n2139824805","n2139824808"]},"w208643137":{"id":"w208643137","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153227","n2189153248","n2189153228","n2189153234","n2189153235","n2189153229","n2189153249","n2189153230","n2189153227"]},"w208643129":{"id":"w208643129","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153179","n2189153180","n2189153181","n2189153182","n2189153179"]},"w203970909":{"id":"w203970909","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832703","n2139832704","n2139832706","n2139832708","n2139832703"]},"w203970905":{"id":"w203970905","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832688","n2139832691"]},"w203988298":{"id":"w203988298","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"service"},"nodes":["n2140006431","n2140006433","n2140006435","n2140006436","n2140006437","n2140006438","n2140006439","n2140006440"]},"w203970106":{"id":"w203970106","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824798","n2139824791","n2139824799","n2139824802","n2139824798"]},"w203970129":{"id":"w203970129","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824787","n2139824782","n2139824766","n2139824769","n2139824787"]},"w208643131":{"id":"w208643131","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153191","n2189153192","n2189153193","n2189153194","n2189153191"]},"w206805249":{"id":"w206805249","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544800","n2168544801","n2168544802","n2168544805","n2168544807","n2168544809","n2168544811","n2168544813","n2168544815","n2168544817","n2168544819","n2168544821","n2168544823","n2168544825","n2168544800"]},"w134150800":{"id":"w134150800","version":"3","changeset":"13675000","user":"NE2","uid":"207745","visible":"true","timestamp":"2012-10-29T15:08:54Z","tags":{"bridge":"yes","highway":"primary","name":"W Michigan Ave","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964972","n185964976"]},"w17966984":{"id":"w17966984","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Portage Avenue","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Portage","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978375","n185963456","n2189153218","n185966937","n185978967","n185967422","n185982193","n185968100","n185982195","n185960195","n185980735","n185978787","n185966948","n185982196","n185982197","n185982198","n185982200","n2139795768","n185972155"]},"w203988294":{"id":"w203988294","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2140006409","n2140006411","n2140006413","n2140006415","n2140006409"]},"w203970912":{"id":"w203970912","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832711","n2139832712","n2139832713","n2139832714","n2139832711"]},"w203970119":{"id":"w203970119","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824713","n2139824705","n2139824683","n2139824689","n2139824713"]},"w203970114":{"id":"w203970114","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824735","n2139824750","n2139824745","n2139824732","n2139824735"]},"w208643142":{"id":"w208643142","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153254","n2189153255","n2189153256","n2189153257"]},"w206805253":{"id":"w206805253","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544848","n2168544849","n2168544850","n2168544851","n2168544852","n2168544853","n2168544854","n2168544855","n2168544848"]},"w143497377":{"id":"w143497377","version":"7","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"North Main Street","old_ref":"US 131","ref":"US 131 Business","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_left_1":"49093","tiger:zip_right":"49093","tiger:zip_right_1":"49093"},"nodes":["n185962625","n185978420","n185978419","n185978417","n185978415","n185978414","n185975735","n1475293254","n185978410","n185978406","n185970515","n185978402","n185978399","n185965399","n2189015992","n185961396","n185967917","n185978394","n185971631","n185960796","n185978392","n185974583","n185978390","n185971578","n185965289","n2189153215","n185978388","n185978383","n185978381","n185978379","n185978377","n185978375","n185964982"]},"w134150811":{"id":"w134150811","version":"6","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964976","n2130304157","n1475284023","n2139832715","n185964980","n185964982"]},"w208643135":{"id":"w208643135","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153215","n2189153216","n2189153217","n2189153218"]},"w17967183":{"id":"w17967183","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"West","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n1475284011","n185984011","n185984013","n185984015","n2189153246","n2189153250","n185965291","n185984017","n185971580","n185984020","n185974585","n185982163","n185975064","n185971632","n185984022","n185984024","n185967918"]},"w134150778":{"id":"w134150778","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{"bridge":"yes","highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988245","n1475283992","n185975911"]},"w206805248":{"id":"w206805248","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544790","n2168544791","n2168544792","n2168544793","n2168544795","n2168544797","n2168544798","n2168544799","n2168544802","n2168544801","n2168544790"]},"w203974058":{"id":"w203974058","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870374","n2139870375"]},"w203970902":{"id":"w203970902","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service"},"nodes":["n2139832678","n2139832691","n2139832680"]},"w203988296":{"id":"w203988296","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"path"},"nodes":["n2139858967","n2140006421","n2139858935"]},"w206805251":{"id":"w206805251","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544830","n2168544831","n2168544832","n2168544833","n2168544834","n2168544835","n2168544836","n2168544837","n2168544830"]},"w203970906":{"id":"w203970906","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832693","n2139832694","n2139832696","n2139832697","n2139832698","n2139832693"]},"w203049598":{"id":"w203049598","version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2130304162","n2130304163","n2130304164","n2130304165","n2130304162"]},"w203970911":{"id":"w203970911","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service"},"nodes":["n2139832709","n2139832714","n2139832713","n2139832710","n185988971"]},"w203970105":{"id":"w203970105","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824779","n2139824792","n2139824786","n2139824775","n2139824779"]},"w203988290":{"id":"w203988290","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"footway"},"nodes":["n2140006403","n2140006407"]},"w203970900":{"id":"w203970900","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832653","n2139832663","n2139832665","n2139832667","n2139832669","n2139832671","n2139832673","n2139832675","n2139832677","n2139832653"]},"w209717048":{"id":"w209717048","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109755","n2199109756","n2199109757","n2199109758","n2199109759","n2199109760","n2199109755"]},"w208643141":{"id":"w208643141","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153247","n2189153248","n2189153249","n2189153250"]},"w203970903":{"id":"w203970903","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832682","n2139832688","n2139832684","n2139832678","n2139832686"]},"n354002527":{"id":"n354002527","loc":[-85.6236039,41.9458813],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T21:20:07Z","tags":{"amenity":"school","ele":"246","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:edited":"02/21/2008","gnis:feature_id":"1624371","gnis:state_id":"26","name":"Barrows School"}},"n185963396":{"id":"n185963396","loc":[-85.627401,41.943496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185963397":{"id":"n185963397","loc":[-85.627403,41.943625],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185965101":{"id":"n185965101","loc":[-85.626409,41.943215],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185971474":{"id":"n185971474","loc":[-85.624884,41.943508],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971475":{"id":"n185971475","loc":[-85.625191,41.943509],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971482":{"id":"n185971482","loc":[-85.624882,41.94382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185983135":{"id":"n185983135","loc":[-85.624893,41.945616],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983137":{"id":"n185983137","loc":[-85.624912,41.946524],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185988027":{"id":"n185988027","loc":[-85.622721,41.946535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:30Z","tags":{}},"n185963398":{"id":"n185963398","loc":[-85.6273993,41.9446899],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185983238":{"id":"n185983238","loc":[-85.6227157,41.9456321],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185980374":{"id":"n185980374","loc":[-85.6248856,41.9447242],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185980373":{"id":"n185980373","loc":[-85.6226744,41.9447371],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n2196831342":{"id":"n2196831342","loc":[-85.6250924,41.945063],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831343":{"id":"n2196831343","loc":[-85.6252335,41.9450636],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831344":{"id":"n2196831344","loc":[-85.6252286,41.9448707],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831345":{"id":"n2196831345","loc":[-85.6250661,41.9448707],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831346":{"id":"n2196831346","loc":[-85.6250243,41.9449012],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831347":{"id":"n2196831347","loc":[-85.6250251,41.9449244],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831348":{"id":"n2196831348","loc":[-85.6250867,41.9449257],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831349":{"id":"n2196831349","loc":[-85.625349,41.9445058],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831350":{"id":"n2196831350","loc":[-85.6253471,41.9443882],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831351":{"id":"n2196831351","loc":[-85.6251516,41.94439],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831352":{"id":"n2196831352","loc":[-85.6251522,41.9444308],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831353":{"id":"n2196831353","loc":[-85.6251344,41.9444309],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831354":{"id":"n2196831354","loc":[-85.6251356,41.9445077],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831355":{"id":"n2196831355","loc":[-85.6232357,41.9463406],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831356":{"id":"n2196831356","loc":[-85.6232409,41.9460668],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831357":{"id":"n2196831357","loc":[-85.6232072,41.9460665],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831358":{"id":"n2196831358","loc":[-85.6232117,41.9458272],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831359":{"id":"n2196831359","loc":[-85.6229808,41.9458248],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831360":{"id":"n2196831360","loc":[-85.6229763,41.9460627],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831361":{"id":"n2196831361","loc":[-85.623006,41.946063],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831362":{"id":"n2196831362","loc":[-85.6230023,41.9462557],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831363":{"id":"n2196831363","loc":[-85.6230755,41.9462565],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831364":{"id":"n2196831364","loc":[-85.6230739,41.9463389],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n185947349":{"id":"n185947349","loc":[-85.618327,41.945607],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947359":{"id":"n185947359","loc":[-85.615453,41.945597],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947378":{"id":"n185947378","loc":[-85.617231,41.945603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947474":{"id":"n185947474","loc":[-85.616136,41.945602],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185948972":{"id":"n185948972","loc":[-85.615273,41.945637],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:02Z","tags":{}},"n185955019":{"id":"n185955019","loc":[-85.620172,41.945627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185960682":{"id":"n185960682","loc":[-85.622759,41.951845],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185961369":{"id":"n185961369","loc":[-85.622758,41.947444],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961371":{"id":"n185961371","loc":[-85.624908,41.947416],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185963392":{"id":"n185963392","loc":[-85.6270462,41.9409953],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185963393":{"id":"n185963393","loc":[-85.627295,41.941304],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:51Z","tags":{}},"n185963394":{"id":"n185963394","loc":[-85.627352,41.94148],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185963395":{"id":"n185963395","loc":[-85.62737,41.942261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185965099":{"id":"n185965099","loc":[-85.6264,41.942263],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185965108":{"id":"n185965108","loc":[-85.622769,41.949224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185965110":{"id":"n185965110","loc":[-85.624937,41.949237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185966295":{"id":"n185966295","loc":[-85.6299942,41.9446689],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n185966342":{"id":"n185966342","loc":[-85.624873,41.942022],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185970222":{"id":"n185970222","loc":[-85.622761,41.948357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:17Z","tags":{}},"n185970224":{"id":"n185970224","loc":[-85.624924,41.9483338],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185971477":{"id":"n185971477","loc":[-85.620051,41.94383],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971478":{"id":"n185971478","loc":[-85.621219,41.943801],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971481":{"id":"n185971481","loc":[-85.621812,41.943807],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185973866":{"id":"n185973866","loc":[-85.627629,41.946498],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185974699":{"id":"n185974699","loc":[-85.6227688,41.950119],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185978800":{"id":"n185978800","loc":[-85.623953,41.954684],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185980372":{"id":"n185980372","loc":[-85.621459,41.944756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:37Z","tags":{}},"n185980378":{"id":"n185980378","loc":[-85.6286375,41.9446764],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980380":{"id":"n185980380","loc":[-85.630139,41.944661],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980382":{"id":"n185980382","loc":[-85.630298,41.944635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980384":{"id":"n185980384","loc":[-85.630759,41.94454],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980386":{"id":"n185980386","loc":[-85.6312369,41.9444548],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185983133":{"id":"n185983133","loc":[-85.6248672,41.9415903],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185983139":{"id":"n185983139","loc":[-85.624951,41.950239],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983140":{"id":"n185983140","loc":[-85.624934,41.950681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983141":{"id":"n185983141","loc":[-85.624813,41.950983],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:02Z","tags":{}},"n185983143":{"id":"n185983143","loc":[-85.6246225,41.951591],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983144":{"id":"n185983144","loc":[-85.623908,41.9539165],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983145":{"id":"n185983145","loc":[-85.6238903,41.9540956],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983146":{"id":"n185983146","loc":[-85.623898,41.95431],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:02Z","tags":{}},"n185983236":{"id":"n185983236","loc":[-85.628481,41.945611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:05Z","tags":{}},"n185985914":{"id":"n185985914","loc":[-85.620072,41.946538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185986812":{"id":"n185986812","loc":[-85.6227785,41.9510005],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185988028":{"id":"n185988028","loc":[-85.6281401,41.9469632],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988030":{"id":"n185988030","loc":[-85.6282451,41.9470314],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988032":{"id":"n185988032","loc":[-85.6283312,41.9470656],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"w17964989":{"id":"w17964989","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:33:37Z","tags":{"highway":"residential","name":"Middle St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Middle","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312433:15328741:15312403:15312465","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185963392","n185963393","n185963394","n185963395","n185963396","n185963397","n185963398"]},"w17965158":{"id":"w17965158","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:55Z","tags":{"access":"private","highway":"service","name":"Battle St","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Battle","tiger:name_type":"St","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313281","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965099","n185965101"]},"w41074896":{"id":"w41074896","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980372","n185980373","n185980374","n185963398","n185980378","n185966295","n185980380","n185980382","n185980384","n185980386"]},"w17965846":{"id":"w17965846","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:12Z","tags":{"highway":"residential","name":"2nd Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"2nd","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313726","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971477","n185971478","n185971481","n185971482"]},"w209470306":{"id":"w209470306","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831349","n2196831350","n2196831351","n2196831352","n2196831353","n2196831354","n2196831349"]},"w17965845":{"id":"w17965845","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:12Z","tags":{"highway":"residential","name":"2nd Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"2nd","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335065","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971474","n185971475","n185963396"]},"w209470307":{"id":"w209470307","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831355","n2196831356","n2196831357","n2196831358","n2196831359","n2196831360","n2196831361","n2196831362","n2196831363","n2196831364","n2196831355"]},"w17968192":{"id":"w17968192","version":"2","changeset":"15473162","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:43:17Z","tags":{"highway":"residential","name":"Washington St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Washington","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980373","n185983238","n185988027","n185961369","n185970222","n185965108","n185974699","n185986812","n185960682"]},"w17967603":{"id":"w17967603","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:23Z","tags":{"highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185985914","n185988027","n185983137","n185973866","n185988028","n185988030","n185988032"]},"w209470305":{"id":"w209470305","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831342","n2196831343","n2196831344","n2196831345","n2196831346","n2196831347","n2196831348","n2196831342"]},"w17967092":{"id":"w17967092","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:18Z","tags":{"highway":"residential","name":"Wood St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wood","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313653:15313659:15313679:15314060","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185983133","n185966342","n185971474","n185971482","n185980374","n185983135","n185983137","n185961371","n185970224","n185965110","n185983139","n185983140","n185983141","n185983143","n185983144","n185983145","n185983146","n185978800"]},"w17967107":{"id":"w17967107","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:23Z","tags":{"highway":"residential","name":"4th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"4th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314053:15314054:15313697:15313698:15313700:15313701:15313699:15314427","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185983236","n185983135","n185983238","n185955019","n185947349","n185947378","n185947474","n185947359","n185948972"]},"n354030330":{"id":"n354030330","loc":[-85.6297222,41.9444444],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T22:10:58Z","tags":{"ele":"243","gnis:county_id":"149","gnis:created":"03/21/2008","gnis:feature_id":"2401246","gnis:state_id":"26","leisure":"park","name":"Scouter Park"}},"n185966296":{"id":"n185966296","loc":[-85.629998,41.944078],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966298":{"id":"n185966298","loc":[-85.629972,41.943927],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966300":{"id":"n185966300","loc":[-85.629948,41.943783],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185980391":{"id":"n185980391","loc":[-85.6322992,41.9442766],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980393":{"id":"n185980393","loc":[-85.6324925,41.9442136],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980389":{"id":"n185980389","loc":[-85.6320272,41.9443281],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980388":{"id":"n185980388","loc":[-85.6315778,41.9443959],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n354031320":{"id":"n354031320","loc":[-85.6280556,41.9447222],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:21Z","tags":{"amenity":"place_of_worship","ele":"245","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417881","gnis:state_id":"26","name":"Riverside Church","religion":"christian"}},"n185987309":{"id":"n185987309","loc":[-85.6286497,41.9453531],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185987311":{"id":"n185987311","loc":[-85.6285942,41.9454805],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185988034":{"id":"n185988034","loc":[-85.6285815,41.9471692],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988896":{"id":"n185988896","loc":[-85.6318433,41.9437929],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185977764":{"id":"n185977764","loc":[-85.6322988,41.943472],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819848852":{"id":"n1819848852","loc":[-85.6315188,41.9448808],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848912":{"id":"n1819848912","loc":[-85.6284289,41.9472189],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848925":{"id":"n1819848925","loc":[-85.6314501,41.9451617],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848949":{"id":"n1819848949","loc":[-85.6309394,41.9455192],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848951":{"id":"n1819848951","loc":[-85.6290297,41.9457187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848963":{"id":"n1819848963","loc":[-85.630521,41.9455591],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848981":{"id":"n1819848981","loc":[-85.6292936,41.9455846],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848989":{"id":"n1819848989","loc":[-85.6298451,41.9455431],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848998":{"id":"n1819848998","loc":[-85.6314973,41.9446254],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849018":{"id":"n1819849018","loc":[-85.6302807,41.9455527],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849043":{"id":"n1819849043","loc":[-85.6285533,41.9469731],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849087":{"id":"n1819849087","loc":[-85.6314501,41.9453532],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849090":{"id":"n1819849090","loc":[-85.628843,41.9461033],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849109":{"id":"n1819849109","loc":[-85.6311926,41.9454729],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849116":{"id":"n1819849116","loc":[-85.6288967,41.9459437],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849177":{"id":"n1819849177","loc":[-85.6287894,41.9464544],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819858529":{"id":"n1819858529","loc":[-85.6325485,41.9445625],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n2189112797":{"id":"n2189112797","loc":[-85.6275271,41.944555],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112798":{"id":"n2189112798","loc":[-85.6275196,41.9437258],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112799":{"id":"n2189112799","loc":[-85.6278937,41.943723],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112800":{"id":"n2189112800","loc":[-85.6278969,41.9439191],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112801":{"id":"n2189112801","loc":[-85.6279907,41.9439345],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112802":{"id":"n2189112802","loc":[-85.6280817,41.9439663],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112803":{"id":"n2189112803","loc":[-85.6281768,41.9440145],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112804":{"id":"n2189112804","loc":[-85.6281933,41.9440483],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112805":{"id":"n2189112805","loc":[-85.6281671,41.9440535],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112806":{"id":"n2189112806","loc":[-85.6281933,41.9440935],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112807":{"id":"n2189112807","loc":[-85.6282126,41.9441437],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112808":{"id":"n2189112808","loc":[-85.628214,41.9441991],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112809":{"id":"n2189112809","loc":[-85.6283298,41.944196],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112810":{"id":"n2189112810","loc":[-85.6283285,41.9442616],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112811":{"id":"n2189112811","loc":[-85.6281727,41.9442616],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112812":{"id":"n2189112812","loc":[-85.6281713,41.9442934],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112813":{"id":"n2189112813","loc":[-85.6280386,41.9442963],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112814":{"id":"n2189112814","loc":[-85.6280405,41.9443292],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112815":{"id":"n2189112815","loc":[-85.627829,41.9443349],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112816":{"id":"n2189112816","loc":[-85.6278347,41.9445495],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189153271":{"id":"n2189153271","loc":[-85.6321053,41.9460342],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153272":{"id":"n2189153272","loc":[-85.632278,41.9457841],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153273":{"id":"n2189153273","loc":[-85.632823,41.9459936],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153274":{"id":"n2189153274","loc":[-85.6326845,41.9461963],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153275":{"id":"n2189153275","loc":[-85.6325664,41.9461507],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153276":{"id":"n2189153276","loc":[-85.6325323,41.946198],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153278":{"id":"n2189153278","loc":[-85.6321916,41.9459733],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153279":{"id":"n2189153279","loc":[-85.6322598,41.9458703],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153280":{"id":"n2189153280","loc":[-85.6327208,41.9460358],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153281":{"id":"n2189153281","loc":[-85.6326413,41.9461422],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n185959079":{"id":"n185959079","loc":[-85.6293702,41.9474668],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185966301":{"id":"n185966301","loc":[-85.629692,41.943136],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966304":{"id":"n185966304","loc":[-85.629565,41.942916],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966308":{"id":"n185966308","loc":[-85.629501,41.942751],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966315":{"id":"n185966315","loc":[-85.629472,41.942578],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966319":{"id":"n185966319","loc":[-85.629444,41.942414],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966321":{"id":"n185966321","loc":[-85.629391,41.94205],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966323":{"id":"n185966323","loc":[-85.629369,41.941858],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966327":{"id":"n185966327","loc":[-85.629297,41.941604],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966331":{"id":"n185966331","loc":[-85.629233,41.941549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966336":{"id":"n185966336","loc":[-85.628504,41.941364],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966338":{"id":"n185966338","loc":[-85.628275,41.941303],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966340":{"id":"n185966340","loc":[-85.6269038,41.9410983],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n185973867":{"id":"n185973867","loc":[-85.626843,41.947333],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185977762":{"id":"n185977762","loc":[-85.6318441,41.9429453],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819848853":{"id":"n1819848853","loc":[-85.625854,41.9492218],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848861":{"id":"n1819848861","loc":[-85.6251459,41.9552376],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848874":{"id":"n1819848874","loc":[-85.6267445,41.9482961],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848882":{"id":"n1819848882","loc":[-85.6257209,41.9552396],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848883":{"id":"n1819848883","loc":[-85.624706,41.9523173],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848907":{"id":"n1819848907","loc":[-85.62609,41.9561471],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848908":{"id":"n1819848908","loc":[-85.6244013,41.9549284],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848911":{"id":"n1819848911","loc":[-85.6265578,41.9553672],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848923":{"id":"n1819848923","loc":[-85.6246802,41.9550959],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848936":{"id":"n1819848936","loc":[-85.6241588,41.9539291],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848940":{"id":"n1819848940","loc":[-85.62506,41.9511129],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848944":{"id":"n1819848944","loc":[-85.624942,41.9515912],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848950":{"id":"n1819848950","loc":[-85.6273989,41.9475461],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848957":{"id":"n1819848957","loc":[-85.627695,41.947404],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819849009":{"id":"n1819849009","loc":[-85.6259248,41.94896],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849037":{"id":"n1819849037","loc":[-85.6257252,41.9502112],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849061":{"id":"n1819849061","loc":[-85.6270084,41.9479626],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849073":{"id":"n1819849073","loc":[-85.6243734,41.9534583],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849091":{"id":"n1819849091","loc":[-85.6241373,41.9543918],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849130":{"id":"n1819849130","loc":[-85.6282572,41.9473067],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849143":{"id":"n1819849143","loc":[-85.625281,41.9506596],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849153":{"id":"n1819849153","loc":[-85.6258647,41.9498043],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849168":{"id":"n1819849168","loc":[-85.6265084,41.9559317],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849173":{"id":"n1819849173","loc":[-85.6263325,41.9552156],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849175":{"id":"n1819849175","loc":[-85.6266372,41.9556764],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849178":{"id":"n1819849178","loc":[-85.6242232,41.9545993],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849181":{"id":"n1819849181","loc":[-85.6262187,41.9486712],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849188":{"id":"n1819849188","loc":[-85.6245558,41.9530434],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849190":{"id":"n1819849190","loc":[-85.6255982,41.9563017],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n2168544738":{"id":"n2168544738","loc":[-85.6245707,41.9529711],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"w208643145":{"id":"w208643145","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153271","n2189153272","n2189153273","n2189153274","n2189153275","n2189153276","n2189153271"]},"w17967561":{"id":"w17967561","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:21Z","tags":{"highway":"residential","name":"Garden St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Garden","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312361:15322884:15322885","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980378","n185987309","n185987311","n185983236","n185973866"]},"w134150802":{"id":"w134150802","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"bridge":"yes","highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980386","n185980388"]},"w208639462":{"id":"w208639462","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112797","n2189112798","n2189112799","n2189112800","n2189112801","n2189112802","n2189112803","n2189112804","n2189112805","n2189112806","n2189112807","n2189112808","n2189112809","n2189112810","n2189112811","n2189112812","n2189112813","n2189112814","n2189112815","n2189112816","n2189112797"]},"w134150830":{"id":"w134150830","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"bridge":"yes","highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977762","n185977764"]},"w134150801":{"id":"w134150801","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977764","n185964982"]},"w208643146":{"id":"w208643146","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153277","n2189153281","n2189153278","n2189153279","n2189153280","n2189153281"]},"w17966061":{"id":"w17966061","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:42:00Z","tags":{"highway":"residential","name":"John Glenn Ct","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"John Glenn","tiger:name_type":"Ct","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313190","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185973866","n185973867"]},"w134150772":{"id":"w134150772","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{"highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988034","n185959079","n185988036","n185978967"]},"w134150836":{"id":"w134150836","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980388","n1819858524","n185980389","n185980391","n185980393","n185964982"]},"w17967734":{"id":"w17967734","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"residential","name":"Water Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Water","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988896","n185980391","n1819858529"]},"w17965305":{"id":"w17965305","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:57Z","tags":{"highway":"residential","name":"River Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312440:15338837","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966295","n185966296","n185966298","n185966300","n185966301","n185966304","n185966308","n185966315","n185966319","n185966321","n185966323","n185966327","n185966331","n185966336","n185966338","n185963392","n185966340","n185966342"]},"w134150826":{"id":"w134150826","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:55Z","tags":{"bridge":"yes","highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988032","n185988034"]},"w170848330":{"id":"w170848330","version":"3","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:50Z","tags":{"name":"Portage River","source":"Bing","waterway":"river"},"nodes":["n1819849190","n1819848907","n1819849168","n1819849175","n1819848911","n1819849173","n1819848882","n1819848861","n1819848923","n1819848908","n1819849178","n1819849091","n1819848936","n1819849073","n1819849188","n2168544738","n1819848883","n1819848944","n1819848940","n1819849143","n1819849037","n1819849153","n1819848853","n1819849009","n1819849181","n1819848874","n1819849061","n1819848950","n1819848957","n1819849130","n1819848912","n1819849043","n1819849177","n1819849090","n1819849116","n1819848951","n1819848981","n1819848989","n1819849018","n1819848963","n1819848949","n1819849109","n1819849087","n1819848925","n1819848852","n1819848998","n1819849057"]},"r270264":{"id":"r270264","version":"8","changeset":"13611326","user":"migurski","uid":"8287","visible":"true","timestamp":"2012-10-23T23:35:16Z","tags":{"network":"US:MI","ref":"86","route":"road","state_id":"MI","type":"route","url":"http://en.wikipedia.org/wiki/M-86_%28Michigan_highway%29"},"members":[{"id":"w17737723","type":"way","role":""},{"id":"w17735949","type":"way","role":""},{"id":"w17740404","type":"way","role":""},{"id":"w17966273","type":"way","role":""},{"id":"w17964745","type":"way","role":""},{"id":"w151538068","type":"way","role":""},{"id":"w151538067","type":"way","role":""},{"id":"w17964960","type":"way","role":""},{"id":"w17966099","type":"way","role":""},{"id":"w17968009","type":"way","role":""},{"id":"w41259499","type":"way","role":""},{"id":"w151540401","type":"way","role":""},{"id":"w151540418","type":"way","role":""},{"id":"w17967997","type":"way","role":""},{"id":"w17966029","type":"way","role":""},{"id":"w17964801","type":"way","role":""},{"id":"w41259496","type":"way","role":""},{"id":"w151540399","type":"way","role":""},{"id":"w17968004","type":"way","role":""},{"id":"w17966462","type":"way","role":""},{"id":"w134150830","type":"way","role":""},{"id":"w134150801","type":"way","role":""},{"id":"w17732295","type":"way","role":""}]},"n185980093":{"id":"n185980093","loc":[-85.6271414,41.9407274],"version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964330":{"id":"n185964330","loc":[-85.6235688,41.9399111],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964328":{"id":"n185964328","loc":[-85.6235609,41.9391301],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185958034":{"id":"n185958034","loc":[-85.627102,41.939125],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185964331":{"id":"n185964331","loc":[-85.623571,41.940124],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964329":{"id":"n185964329","loc":[-85.623562,41.9392411],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185972756":{"id":"n185972756","loc":[-85.623802,41.939102],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185972757":{"id":"n185972757","loc":[-85.623584,41.93913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185975325":{"id":"n185975325","loc":[-85.624835,41.939318],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975326":{"id":"n185975326","loc":[-85.624811,41.939435],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975327":{"id":"n185975327","loc":[-85.624635,41.939703],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975328":{"id":"n185975328","loc":[-85.624366,41.940055],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975330":{"id":"n185975330","loc":[-85.624287,41.940113],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975332":{"id":"n185975332","loc":[-85.624215,41.940134],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185980088":{"id":"n185980088","loc":[-85.627127,41.940086],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185988943":{"id":"n185988943","loc":[-85.622643,41.940128],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:15Z","tags":{}},"n185988961":{"id":"n185988961","loc":[-85.627263,41.940082],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185990192":{"id":"n185990192","loc":[-85.622933,41.939224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990194":{"id":"n185990194","loc":[-85.621976,41.939203],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185991378":{"id":"n185991378","loc":[-85.622643,41.940635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:15:34Z","tags":{}},"n1475283999":{"id":"n1475283999","loc":[-85.6271165,41.9408429],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n185980090":{"id":"n185980090","loc":[-85.6271315,41.9402001],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185958036":{"id":"n185958036","loc":[-85.6248366,41.9391615],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819800188":{"id":"n1819800188","loc":[-85.6246947,41.9401644],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800199":{"id":"n1819800199","loc":[-85.6233686,41.9430896],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800204":{"id":"n1819800204","loc":[-85.6223236,41.9408587],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800213":{"id":"n1819800213","loc":[-85.6247526,41.9414138],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800216":{"id":"n1819800216","loc":[-85.6230961,41.9407151],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800218":{"id":"n1819800218","loc":[-85.621991,41.9429336],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800221":{"id":"n1819800221","loc":[-85.6246088,41.9424708],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800227":{"id":"n1819800227","loc":[-85.6241368,41.9403081],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800230":{"id":"n1819800230","loc":[-85.6226776,41.9431012],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800231":{"id":"n1819800231","loc":[-85.6243728,41.9401644],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800232":{"id":"n1819800232","loc":[-85.6249629,41.9408907],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800248":{"id":"n1819800248","loc":[-85.6238685,41.9405555],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800266":{"id":"n1819800266","loc":[-85.6246882,41.9418367],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800271":{"id":"n1819800271","loc":[-85.62492,41.9413695],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800294":{"id":"n1819800294","loc":[-85.6243556,41.9427465],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800304":{"id":"n1819800304","loc":[-85.6251453,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800325":{"id":"n1819800325","loc":[-85.6248234,41.9405714],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800362":{"id":"n1819800362","loc":[-85.6239544,41.9429416],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800368":{"id":"n1819800368","loc":[-85.6243406,41.9402283],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800375":{"id":"n1819800375","loc":[-85.6226562,41.940755],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800377":{"id":"n1819800377","loc":[-85.6232033,41.9406512],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n185945133":{"id":"n185945133","loc":[-85.623501,41.933232],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945135":{"id":"n185945135","loc":[-85.624776,41.933205],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945395":{"id":"n185945395","loc":[-85.624741,41.93019],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:30Z","tags":{}},"n185952239":{"id":"n185952239","loc":[-85.615166,41.9382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:12Z","tags":{}},"n185954490":{"id":"n185954490","loc":[-85.624721,41.929278],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:27Z","tags":{}},"n185957831":{"id":"n185957831","loc":[-85.625041,41.938662],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:57:55Z","tags":{}},"n185958030":{"id":"n185958030","loc":[-85.629033,41.93913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185958032":{"id":"n185958032","loc":[-85.628429,41.939143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185958498":{"id":"n185958498","loc":[-85.621605,41.940143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:27Z","tags":{}},"n185961186":{"id":"n185961186","loc":[-85.624792,41.935214],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:34Z","tags":{}},"n185963099":{"id":"n185963099","loc":[-85.6204461,41.9401485],"version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{}},"n185963698":{"id":"n185963698","loc":[-85.6297342,41.9400783],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185964320":{"id":"n185964320","loc":[-85.623511,41.934216],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964322":{"id":"n185964322","loc":[-85.6235312,41.9362084],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964324":{"id":"n185964324","loc":[-85.6235488,41.9371726],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964326":{"id":"n185964326","loc":[-85.6235512,41.9381718],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185967077":{"id":"n185967077","loc":[-85.617359,41.940161],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:54Z","tags":{}},"n185967634":{"id":"n185967634","loc":[-85.6248039,41.9362012],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185970833":{"id":"n185970833","loc":[-85.6248019,41.9381684],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185972752":{"id":"n185972752","loc":[-85.624582,41.938848],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185972754":{"id":"n185972754","loc":[-85.6242,41.939008],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185973251":{"id":"n185973251","loc":[-85.602727,41.936012],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:49Z","tags":{}},"n185974509":{"id":"n185974509","loc":[-85.62478,41.93217],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:19Z","tags":{}},"n185975315":{"id":"n185975315","loc":[-85.624703,41.925597],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:56Z","tags":{}},"n185975316":{"id":"n185975316","loc":[-85.624716,41.927359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975317":{"id":"n185975317","loc":[-85.62475,41.93119],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975318":{"id":"n185975318","loc":[-85.624782,41.934218],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975320":{"id":"n185975320","loc":[-85.6247949,41.9371708],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:58Z","tags":{}},"n185977754":{"id":"n185977754","loc":[-85.6276,41.937412],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185980075":{"id":"n185980075","loc":[-85.627451,41.937549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980077":{"id":"n185980077","loc":[-85.627375,41.937618],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980078":{"id":"n185980078","loc":[-85.627278,41.937728],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980079":{"id":"n185980079","loc":[-85.627199,41.937842],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980081":{"id":"n185980081","loc":[-85.627141,41.937981],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980083":{"id":"n185980083","loc":[-85.627109,41.938153],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980085":{"id":"n185980085","loc":[-85.627101,41.938699],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185981173":{"id":"n185981173","loc":[-85.61433,41.940167],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:02Z","tags":{}},"n185987021":{"id":"n185987021","loc":[-85.628311,41.942261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:07Z","tags":{}},"n185988963":{"id":"n185988963","loc":[-85.628439,41.940086],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185990195":{"id":"n185990195","loc":[-85.621225,41.939143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990196":{"id":"n185990196","loc":[-85.620576,41.939033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990198":{"id":"n185990198","loc":[-85.619081,41.938804],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990200":{"id":"n185990200","loc":[-85.617593,41.938552],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990202":{"id":"n185990202","loc":[-85.617372,41.938535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990204":{"id":"n185990204","loc":[-85.616087,41.93832],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990206":{"id":"n185990206","loc":[-85.615754,41.938289],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990209":{"id":"n185990209","loc":[-85.615438,41.938251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990211":{"id":"n185990211","loc":[-85.613469,41.937867],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990212":{"id":"n185990212","loc":[-85.610172,41.937298],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990213":{"id":"n185990213","loc":[-85.605537,41.936497],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990214":{"id":"n185990214","loc":[-85.604014,41.936234],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n1819800180":{"id":"n1819800180","loc":[-85.588775,41.9455032],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800181":{"id":"n1819800181","loc":[-85.6074212,41.9408827],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800182":{"id":"n1819800182","loc":[-85.6131397,41.9427022],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800183":{"id":"n1819800183","loc":[-85.6171523,41.9416807],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800184":{"id":"n1819800184","loc":[-85.602465,41.9397415],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800185":{"id":"n1819800185","loc":[-85.6109296,41.9410583],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800186":{"id":"n1819800186","loc":[-85.6165729,41.9418004],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800189":{"id":"n1819800189","loc":[-85.5866293,41.9458224],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800191":{"id":"n1819800191","loc":[-85.5853311,41.9466603],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800201":{"id":"n1819800201","loc":[-85.6101142,41.9433406],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800202":{"id":"n1819800202","loc":[-85.600963,41.9428618],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800206":{"id":"n1819800206","loc":[-85.6154357,41.9427501],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800207":{"id":"n1819800207","loc":[-85.6040309,41.9414094],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800209":{"id":"n1819800209","loc":[-85.6113694,41.943189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800211":{"id":"n1819800211","loc":[-85.618032,41.9416408],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800214":{"id":"n1819800214","loc":[-85.5959419,41.9402602],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800219":{"id":"n1819800219","loc":[-85.5972117,41.9420043],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800223":{"id":"n1819800223","loc":[-85.6117171,41.9430019],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800224":{"id":"n1819800224","loc":[-85.5977873,41.9395579],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800226":{"id":"n1819800226","loc":[-85.5917362,41.9432209],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800228":{"id":"n1819800228","loc":[-85.6055759,41.9419122],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800229":{"id":"n1819800229","loc":[-85.6203395,41.9425595],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n1819800233":{"id":"n1819800233","loc":[-85.6107579,41.9433007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800234":{"id":"n1819800234","loc":[-85.6039773,41.9412498],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800235":{"id":"n1819800235","loc":[-85.6000977,41.9412861],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800236":{"id":"n1819800236","loc":[-85.6026689,41.9407231],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800237":{"id":"n1819800237","loc":[-85.615161,41.9428662],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800238":{"id":"n1819800238","loc":[-85.5878953,41.9454314],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800239":{"id":"n1819800239","loc":[-85.6035267,41.941569],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800240":{"id":"n1819800240","loc":[-85.5929738,41.9450208],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800241":{"id":"n1819800241","loc":[-85.6186329,41.9416488],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800242":{"id":"n1819800242","loc":[-85.5881136,41.9483963],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800243":{"id":"n1819800243","loc":[-85.5909208,41.9466922],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800244":{"id":"n1819800244","loc":[-85.5997721,41.9394941],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800245":{"id":"n1819800245","loc":[-85.6202064,41.9425712],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n1819800246":{"id":"n1819800246","loc":[-85.591071,41.9448808],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800247":{"id":"n1819800247","loc":[-85.5866078,41.9490622],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800250":{"id":"n1819800250","loc":[-85.602383,41.9420841],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800251":{"id":"n1819800251","loc":[-85.5957418,41.9426906],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800255":{"id":"n1819800255","loc":[-85.6157039,41.9416727],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800256":{"id":"n1819800256","loc":[-85.6080328,41.9410982],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800258":{"id":"n1819800258","loc":[-85.6192551,41.9414892],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800260":{"id":"n1819800260","loc":[-85.6104253,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800261":{"id":"n1819800261","loc":[-85.6204503,41.9425709],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800263":{"id":"n1819800263","loc":[-85.5872194,41.9455431],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800264":{"id":"n1819800264","loc":[-85.616176,41.9418244],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800268":{"id":"n1819800268","loc":[-85.6120883,41.9426703],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800269":{"id":"n1819800269","loc":[-85.5894547,41.9474946],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800272":{"id":"n1819800272","loc":[-85.6209181,41.9425027],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800274":{"id":"n1819800274","loc":[-85.6122814,41.9412817],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800276":{"id":"n1819800276","loc":[-85.5895153,41.9452798],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800277":{"id":"n1819800277","loc":[-85.5884317,41.9455272],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800279":{"id":"n1819800279","loc":[-85.5884103,41.9480966],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800287":{"id":"n1819800287","loc":[-85.5904917,41.9453915],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800288":{"id":"n1819800288","loc":[-85.6212292,41.9412977],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800289":{"id":"n1819800289","loc":[-85.5954377,41.9406832],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800290":{"id":"n1819800290","loc":[-85.593721,41.9420957],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800291":{"id":"n1819800291","loc":[-85.6162832,41.9427102],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800292":{"id":"n1819800292","loc":[-85.605018,41.9401804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800293":{"id":"n1819800293","loc":[-85.6086443,41.941146],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800296":{"id":"n1819800296","loc":[-85.6204675,41.9413775],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800297":{"id":"n1819800297","loc":[-85.612496,41.9424947],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800299":{"id":"n1819800299","loc":[-85.6065629,41.9423431],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800301":{"id":"n1819800301","loc":[-85.6036125,41.9398452],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800303":{"id":"n1819800303","loc":[-85.6114767,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800306":{"id":"n1819800306","loc":[-85.592616,41.9428139],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800308":{"id":"n1819800308","loc":[-85.6023041,41.9419521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800310":{"id":"n1819800310","loc":[-85.6218944,41.9411061],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800311":{"id":"n1819800311","loc":[-85.6097816,41.941162],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800312":{"id":"n1819800312","loc":[-85.5922549,41.9457869],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800313":{"id":"n1819800313","loc":[-85.5986027,41.9417206],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800314":{"id":"n1819800314","loc":[-85.5918687,41.946138],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800315":{"id":"n1819800315","loc":[-85.5872875,41.948883],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800316":{"id":"n1819800316","loc":[-85.594272,41.9436642],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800317":{"id":"n1819800317","loc":[-85.6176351,41.941577],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800318":{"id":"n1819800318","loc":[-85.6137834,41.9430853],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800319":{"id":"n1819800319","loc":[-85.6195383,41.942622],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"leisure":"slipway"}},"n1819800320":{"id":"n1819800320","loc":[-85.5971006,41.9398053],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800321":{"id":"n1819800321","loc":[-85.601714,41.9406752],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800322":{"id":"n1819800322","loc":[-85.5908028,41.9453117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800323":{"id":"n1819800323","loc":[-85.6062732,41.9404597],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800324":{"id":"n1819800324","loc":[-85.62124,41.9425905],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800327":{"id":"n1819800327","loc":[-85.6008664,41.942766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800328":{"id":"n1819800328","loc":[-85.6179355,41.9428538],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800330":{"id":"n1819800330","loc":[-85.6045566,41.9415131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800331":{"id":"n1819800331","loc":[-85.5944935,41.9414653],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800333":{"id":"n1819800333","loc":[-85.6088911,41.943181],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800334":{"id":"n1819800334","loc":[-85.5946367,41.943369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800336":{"id":"n1819800336","loc":[-85.6150494,41.9429656],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800343":{"id":"n1819800343","loc":[-85.6096099,41.9433326],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800345":{"id":"n1819800345","loc":[-85.5915216,41.9435401],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800347":{"id":"n1819800347","loc":[-85.607786,41.9428698],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800349":{"id":"n1819800349","loc":[-85.6187616,41.9426623],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800350":{"id":"n1819800350","loc":[-85.6012527,41.9426064],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800352":{"id":"n1819800352","loc":[-85.6214867,41.9428379],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800354":{"id":"n1819800354","loc":[-85.61338,41.94293],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800355":{"id":"n1819800355","loc":[-85.5923156,41.9428139],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800357":{"id":"n1819800357","loc":[-85.5901591,41.9453197],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800359":{"id":"n1819800359","loc":[-85.6033979,41.9408827],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800360":{"id":"n1819800360","loc":[-85.6186543,41.9414653],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800363":{"id":"n1819800363","loc":[-85.6128607,41.9425665],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800365":{"id":"n1819800365","loc":[-85.614234,41.9412977],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800367":{"id":"n1819800367","loc":[-85.6089662,41.9410902],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800369":{"id":"n1819800369","loc":[-85.6197379,41.9413695],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800370":{"id":"n1819800370","loc":[-85.6037348,41.941733],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800371":{"id":"n1819800371","loc":[-85.5993467,41.9415654],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800372":{"id":"n1819800372","loc":[-85.598077,41.94196],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800373":{"id":"n1819800373","loc":[-85.5984203,41.9394781],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800374":{"id":"n1819800374","loc":[-85.6013315,41.9427066],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800376":{"id":"n1819800376","loc":[-85.5934673,41.944167],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800378":{"id":"n1819800378","loc":[-85.6011062,41.9407753],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800379":{"id":"n1819800379","loc":[-85.6150602,41.9415131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800380":{"id":"n1819800380","loc":[-85.6132148,41.9412338],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800381":{"id":"n1819800381","loc":[-85.5889038,41.9453835],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n2139966621":{"id":"n2139966621","loc":[-85.6198719,41.9426184],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:17Z","tags":{}},"n2139966622":{"id":"n2139966622","loc":[-85.6197551,41.9426123],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:17Z","tags":{}},"n2139966623":{"id":"n2139966623","loc":[-85.6196467,41.9426279],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966624":{"id":"n2139966624","loc":[-85.6191519,41.9426221],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966625":{"id":"n2139966625","loc":[-85.6194153,41.9426256],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966626":{"id":"n2139966626","loc":[-85.6200497,41.9425812],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966629":{"id":"n2139966629","loc":[-85.6192123,41.9426229],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2203933101":{"id":"n2203933101","loc":[-85.6030009,41.9360592],"version":"1","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:36Z","tags":{}},"w17967539":{"id":"w17967539","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:52:28Z","tags":{"highway":"residential","name":"1st Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"1st","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335113:15313280","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965099","n185963395","n185987021"]},"w17967751":{"id":"w17967751","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:03Z","tags":{"highway":"residential","name":"River St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312481:15312487","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980088","n185988961","n185988963","n185963698"]},"w17965088":{"id":"w17965088","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:20Z","tags":{"highway":"residential","name":"9th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"9th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314207:15313759:15313772:15313802:15313796:15313781:15314179","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185945133","n185964320","n185964322","n185964324","n185964326","n185964328","n185964329","n185964330","n185964331"]},"w17964467":{"id":"w17964467","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:29:37Z","tags":{"highway":"residential","name":"Mechanic St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Mechanic","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312501:15312497:15335073","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958030","n185958032","n185958034","n185958036"]},"w134150842":{"id":"w134150842","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:56Z","tags":{"bridge":"yes","highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185980090","n185980093"]},"w17966740":{"id":"w17966740","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185977754","n185980075","n185980077","n185980078","n185980079","n185980081","n185980083","n185980085","n185958034","n185980088","n185980090"]},"w170844765":{"id":"w170844765","version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{"waterway":"dam"},"nodes":["n1819800304","n1819800232","n1819800325","n1819800188"]},"w17967745":{"id":"w17967745","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:21Z","tags":{"highway":"residential","name":"River St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981173","n185967077","n185963099","n185958498","n185988943","n185964331","n185975332"]},"w17968113":{"id":"w17968113","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:56:09Z","tags":{"highway":"residential","name":"Green St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Green","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314409","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988943","n185991378"]},"w134150833":{"id":"w134150833","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:55Z","tags":{"highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185980093","n1475283999","n185963392"]},"w17967935":{"id":"w17967935","version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{"name":"Michigan Central Railroad","railway":"abandoned","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan Central Railroad","tiger:reviewed":"no"},"nodes":["n185972757","n185990192","n185990194","n185990195","n185990196","n185990198","n185990200","n185990202","n185990204","n185990206","n185990209","n185952239","n185990211","n185990212","n185990213","n185990214","n2203933101","n185973251"]},"w17965993":{"id":"w17965993","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:19Z","tags":{"name":"Conrail Railroad","railway":"abandoned","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314180:15314177","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185957831","n185972752","n185972754","n185972756","n185972757"]},"w17966211":{"id":"w17966211","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"residential","name":"8th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"8th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313757:15313771:15313791:15313794:15313799:15313811:15313814:15313824:15313846:15314618:15313817:15313788:15314178:15324590","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975315","n185975316","n185954490","n185945395","n185975317","n185974509","n185945135","n185975318","n185961186","n185967634","n185975320","n185970833","n185958036","n185975325","n185975326","n185975327","n185975328","n185975330","n185975332"]},"w170844766":{"id":"w170844766","version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"source":"Bing","waterway":"riverbank"},"nodes":["n1819800229","n1819800245","n2139966626","n2139966621","n2139966622","n2139966623","n1819800319","n2139966625","n2139966629","n2139966624","n1819800349","n1819800328","n1819800291","n1819800206","n1819800237","n1819800336","n1819800318","n1819800354","n1819800182","n1819800363","n1819800297","n1819800268","n1819800223","n1819800209","n1819800233","n1819800201","n1819800343","n1819800333","n1819800347","n1819800299","n1819800228","n1819800330","n1819800370","n1819800250","n1819800374","n1819800202","n1819800327","n1819800350","n1819800308","n1819800239","n1819800207","n1819800234","n1819800359","n1819800236","n1819800321","n1819800378","n1819800235","n1819800371","n1819800313","n1819800372","n1819800219","n1819800251","n1819800334","n1819800316","n1819800376","n1819800240","n1819800312","n1819800314","n1819800243","n1819800269","n1819800279","n1819800242","n1819800315","n1819800247","n1819800191","n1819800189","n1819800263","n1819800238","n1819800277","n1819800180","n1819800381","n1819800276","n1819800357","n1819800287","n1819800322","n1819800246","n1819800345","n1819800226","n1819800355","n1819800306","n1819800290","n1819800331","n1819800289","n1819800214","n1819800320","n1819800224","n1819800373","n1819800244","n1819800184","n1819800301","n1819800292","n1819800323","n1819800181","n1819800256","n1819800293","n1819800367","n1819800311","n1819800260","n1819800185","n1819800303","n1819800274","n1819800380","n1819800365","n1819800379","n1819800255","n1819800264","n1819800186","n1819800183","n1819800317","n1819800211","n1819800241","n1819800360","n1819800258","n1819800369","n1819800296","n1819800288","n1819800310","n1819800204","n1819800375","n1819800216","n1819800377","n1819800248","n1819800227","n1819800368","n1819800231","n1819800188","n1819800325","n1819800232","n1819800304","n1819800271","n1819800213","n1819800266","n1819800221","n1819800294","n1819800362","n1819800199","n1819800230","n1819800218","n1819800352","n1819800324","n1819800272","n1819800261","n1819800229"]},"n1875654132":{"id":"n1875654132","loc":[-85.6297439,41.939808],"version":"1","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:36Z","tags":{}},"n1475293263":{"id":"n1475293263","loc":[-85.6296235,41.939922],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{}},"n185947850":{"id":"n185947850","loc":[-85.631594,41.942613],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:22Z","tags":{}},"n185952745":{"id":"n185952745","loc":[-85.630986,41.941786],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:25Z","tags":{}},"n185972907":{"id":"n185972907","loc":[-85.631797,41.9420055],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972911":{"id":"n185972911","loc":[-85.6309723,41.9411623],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972915":{"id":"n185972915","loc":[-85.6295971,41.939267],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n1475293223":{"id":"n1475293223","loc":[-85.6313962,41.9416114],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293231":{"id":"n1475293231","loc":[-85.6318779,41.9415447],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{}},"n1475293241":{"id":"n1475293241","loc":[-85.6304613,41.9405499],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293246":{"id":"n1475293246","loc":[-85.6297512,41.9395393],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{"railway":"level_crossing"}},"n1475293251":{"id":"n1475293251","loc":[-85.6316633,41.9415128],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n2139982404":{"id":"n2139982404","loc":[-85.6313283,41.9413748],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982407":{"id":"n2139982407","loc":[-85.6325545,41.9417787],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982408":{"id":"n2139982408","loc":[-85.6324499,41.9417693],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982409":{"id":"n2139982409","loc":[-85.6324753,41.9416444],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982410":{"id":"n2139982410","loc":[-85.6325814,41.9416538],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982411":{"id":"n2139982411","loc":[-85.6319572,41.9413515],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982412":{"id":"n2139982412","loc":[-85.6322925,41.941139],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982413":{"id":"n2139982413","loc":[-85.6323153,41.941153],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982414":{"id":"n2139982414","loc":[-85.6323019,41.9412617],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982415":{"id":"n2139982415","loc":[-85.6323703,41.9412667],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982416":{"id":"n2139982416","loc":[-85.6323555,41.941538],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982417":{"id":"n2139982417","loc":[-85.6321343,41.9416777],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982418":{"id":"n2139982418","loc":[-85.6319425,41.9416866],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982419":{"id":"n2139982419","loc":[-85.6320303,41.9416941],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982420":{"id":"n2139982420","loc":[-85.6321665,41.9415554],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982421":{"id":"n2139982421","loc":[-85.632412,41.9414164],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982422":{"id":"n2139982422","loc":[-85.6324801,41.9413421],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982423":{"id":"n2139982423","loc":[-85.6325023,41.9412585],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982424":{"id":"n2139982424","loc":[-85.6324532,41.9411607],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982425":{"id":"n2139982425","loc":[-85.6323502,41.941103],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982426":{"id":"n2139982426","loc":[-85.6322362,41.9411183],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982427":{"id":"n2139982427","loc":[-85.6318941,41.9413551],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982428":{"id":"n2139982428","loc":[-85.6318592,41.9414105],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982429":{"id":"n2139982429","loc":[-85.6320111,41.9415866],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982430":{"id":"n2139982430","loc":[-85.632446,41.9413792],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982431":{"id":"n2139982431","loc":[-85.6325112,41.941416],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982432":{"id":"n2139982432","loc":[-85.6325449,41.9416345],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982433":{"id":"n2139982433","loc":[-85.6326122,41.94164],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982434":{"id":"n2139982434","loc":[-85.6325954,41.9421966],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982435":{"id":"n2139982435","loc":[-85.6325655,41.9422411],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982436":{"id":"n2139982436","loc":[-85.632515,41.9422564],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982437":{"id":"n2139982437","loc":[-85.6324495,41.94223],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982438":{"id":"n2139982438","loc":[-85.6324009,41.9421743],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982439":{"id":"n2139982439","loc":[-85.6323915,41.9421145],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982440":{"id":"n2139982440","loc":[-85.6320287,41.9418585],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982441":{"id":"n2139982441","loc":[-85.6318285,41.9416387],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n1475293258":{"id":"n1475293258","loc":[-85.6318289,41.9415077],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n2168544754":{"id":"n2168544754","loc":[-85.6312814,41.9431198],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544755":{"id":"n2168544755","loc":[-85.6314212,41.9430646],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544756":{"id":"n2168544756","loc":[-85.6313387,41.942949],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544757":{"id":"n2168544757","loc":[-85.6311989,41.9430041],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544758":{"id":"n2168544758","loc":[-85.6311024,41.9429313],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544759":{"id":"n2168544759","loc":[-85.6310087,41.9428087],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544760":{"id":"n2168544760","loc":[-85.6313831,41.9426504],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544761":{"id":"n2168544761","loc":[-85.6314768,41.9427729],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544762":{"id":"n2168544762","loc":[-85.6306376,41.942809],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544763":{"id":"n2168544763","loc":[-85.6307378,41.9429427],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544764":{"id":"n2168544764","loc":[-85.630841,41.9428998],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544765":{"id":"n2168544765","loc":[-85.6307408,41.9427662],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544766":{"id":"n2168544766","loc":[-85.6305404,41.9426029],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544767":{"id":"n2168544767","loc":[-85.6304976,41.9426194],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544768":{"id":"n2168544768","loc":[-85.6305673,41.9427184],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544769":{"id":"n2168544769","loc":[-85.6306164,41.9426984],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544770":{"id":"n2168544770","loc":[-85.6306418,41.9427302],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544771":{"id":"n2168544771","loc":[-85.6306861,41.9427137],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544772":{"id":"n2168544772","loc":[-85.6307146,41.9427537],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544773":{"id":"n2168544773","loc":[-85.6308999,41.9426807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544774":{"id":"n2168544774","loc":[-85.6308429,41.9426053],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544775":{"id":"n2168544775","loc":[-85.6308999,41.9425806],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544776":{"id":"n2168544776","loc":[-85.6308318,41.9424875],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544777":{"id":"n2168544777","loc":[-85.6307732,41.9425087],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544778":{"id":"n2168544778","loc":[-85.6307178,41.9424357],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544779":{"id":"n2168544779","loc":[-85.630485,41.942524],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2189099387":{"id":"n2189099387","loc":[-85.631203,41.9393371],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099404":{"id":"n2189099404","loc":[-85.6301963,41.9391363],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099405":{"id":"n2189099405","loc":[-85.6304447,41.9391352],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099406":{"id":"n2189099406","loc":[-85.6304463,41.9393391],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099407":{"id":"n2189099407","loc":[-85.6308435,41.9393373],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099408":{"id":"n2189099408","loc":[-85.6308418,41.9391251],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099409":{"id":"n2189099409","loc":[-85.6310929,41.939124],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099410":{"id":"n2189099410","loc":[-85.6310946,41.9393376],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189112720":{"id":"n2189112720","loc":[-85.6314677,41.9412327],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112721":{"id":"n2189112721","loc":[-85.6313337,41.9411397],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112722":{"id":"n2189112722","loc":[-85.6320521,41.9405678],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112723":{"id":"n2189112723","loc":[-85.6321899,41.9406633],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112724":{"id":"n2189112724","loc":[-85.6313229,41.9408344],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112725":{"id":"n2189112725","loc":[-85.6311223,41.9410018],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112726":{"id":"n2189112726","loc":[-85.6313205,41.9411333],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112727":{"id":"n2189112727","loc":[-85.6315211,41.9409659],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112728":{"id":"n2189112728","loc":[-85.6311035,41.9402529],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112729":{"id":"n2189112729","loc":[-85.631226,41.9402107],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112730":{"id":"n2189112730","loc":[-85.6315966,41.9408051],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112731":{"id":"n2189112731","loc":[-85.6314741,41.9408473],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112732":{"id":"n2189112732","loc":[-85.6318114,41.940534],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112733":{"id":"n2189112733","loc":[-85.631588,41.94061],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112734":{"id":"n2189112734","loc":[-85.6314379,41.940366],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112735":{"id":"n2189112735","loc":[-85.6316613,41.94029],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112736":{"id":"n2189112736","loc":[-85.6306214,41.9400415],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112737":{"id":"n2189112737","loc":[-85.6304362,41.9397728],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112738":{"id":"n2189112738","loc":[-85.6305899,41.9397142],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112739":{"id":"n2189112739","loc":[-85.6307751,41.9399828],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112740":{"id":"n2189112740","loc":[-85.6304695,41.9401673],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112741":{"id":"n2189112741","loc":[-85.6301298,41.9396855],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112742":{"id":"n2189112742","loc":[-85.6303016,41.9396184],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112743":{"id":"n2189112743","loc":[-85.6306413,41.9401003],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112744":{"id":"n2189112744","loc":[-85.6309656,41.9406189],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112745":{"id":"n2189112745","loc":[-85.6308738,41.940493],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112746":{"id":"n2189112746","loc":[-85.6309333,41.940469],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112747":{"id":"n2189112747","loc":[-85.6307634,41.9402358],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112748":{"id":"n2189112748","loc":[-85.6308798,41.9401889],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112749":{"id":"n2189112749","loc":[-85.6311416,41.940548],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112750":{"id":"n2189112750","loc":[-85.6309577,41.9408708],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112751":{"id":"n2189112751","loc":[-85.630874,41.9407777],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112752":{"id":"n2189112752","loc":[-85.6310622,41.9406841],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112753":{"id":"n2189112753","loc":[-85.6311459,41.9407772],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112754":{"id":"n2189112754","loc":[-85.6320308,41.9405747],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112755":{"id":"n2189112755","loc":[-85.6317769,41.9401857],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112756":{"id":"n2189112756","loc":[-85.6313462,41.9401785],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112757":{"id":"n2189112757","loc":[-85.6313423,41.9401199],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112758":{"id":"n2189112758","loc":[-85.6318308,41.9401184],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112759":{"id":"n2189112759","loc":[-85.6321154,41.9405433],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112760":{"id":"n2189112760","loc":[-85.6310307,41.941683],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112761":{"id":"n2189112761","loc":[-85.6309808,41.9416078],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112762":{"id":"n2189112762","loc":[-85.6312094,41.9415156],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112763":{"id":"n2189112763","loc":[-85.6312636,41.9415865],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112764":{"id":"n2189112764","loc":[-85.6309384,41.94155],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112765":{"id":"n2189112765","loc":[-85.631156,41.9414619],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112766":{"id":"n2189112766","loc":[-85.6311968,41.94152],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112767":{"id":"n2189112767","loc":[-85.6308946,41.9414851],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112768":{"id":"n2189112768","loc":[-85.6308237,41.9413888],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112769":{"id":"n2189112769","loc":[-85.6309858,41.9413228],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112770":{"id":"n2189112770","loc":[-85.6310567,41.9414192],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112771":{"id":"n2189112771","loc":[-85.6307774,41.9413276],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112772":{"id":"n2189112772","loc":[-85.6309068,41.9412735],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112773":{"id":"n2189112773","loc":[-85.6309531,41.9413347],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112774":{"id":"n2189112774","loc":[-85.6307975,41.9412466],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112775":{"id":"n2189112775","loc":[-85.6307006,41.9411699],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112776":{"id":"n2189112776","loc":[-85.6308289,41.941113],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112777":{"id":"n2189112777","loc":[-85.6308997,41.9412012],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112778":{"id":"n2189112778","loc":[-85.630765,41.9412062],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112779":{"id":"n2189112779","loc":[-85.630739,41.9412177],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112780":{"id":"n2189112780","loc":[-85.6305822,41.9410391],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112781":{"id":"n2189112781","loc":[-85.6304117,41.9408177],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112782":{"id":"n2189112782","loc":[-85.6305086,41.9407769],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112783":{"id":"n2189112783","loc":[-85.6306779,41.9410044],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112784":{"id":"n2189112784","loc":[-85.6307734,41.9421663],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112785":{"id":"n2189112785","loc":[-85.630708,41.9420741],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112786":{"id":"n2189112786","loc":[-85.630863,41.9420133],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112787":{"id":"n2189112787","loc":[-85.6309285,41.9421055],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112788":{"id":"n2189112788","loc":[-85.6307014,41.9420263],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112789":{"id":"n2189112789","loc":[-85.6306648,41.941971],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112790":{"id":"n2189112790","loc":[-85.6307927,41.9419178],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112791":{"id":"n2189112791","loc":[-85.6308366,41.9419696],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112792":{"id":"n2189112792","loc":[-85.6307574,41.9418708],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112793":{"id":"n2189112793","loc":[-85.6306288,41.9419231],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112794":{"id":"n2189112794","loc":[-85.6306943,41.9417835],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112795":{"id":"n2189112795","loc":[-85.6305344,41.9418474],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112796":{"id":"n2189112796","loc":[-85.6305981,41.9419355],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189123410":{"id":"n2189123410","loc":[-85.6315476,41.9393801],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123412":{"id":"n2189123412","loc":[-85.6315247,41.9399188],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n2189123415":{"id":"n2189123415","loc":[-85.6316484,41.9400433],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n185945138":{"id":"n185945138","loc":[-85.627073,41.93319],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945142":{"id":"n185945142","loc":[-85.6296891,41.9331674],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185945401":{"id":"n185945401","loc":[-85.6269,41.930199],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:30Z","tags":{}},"n185945405":{"id":"n185945405","loc":[-85.6296598,41.9301676],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185956891":{"id":"n185956891","loc":[-85.6251617,41.9255049],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185959979":{"id":"n185959979","loc":[-85.626333,41.928347],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:03Z","tags":{}},"n185959983":{"id":"n185959983","loc":[-85.6296419,41.9283288],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185961192":{"id":"n185961192","loc":[-85.627053,41.9352031],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185961200":{"id":"n185961200","loc":[-85.6297088,41.9351902],"version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185963655":{"id":"n185963655","loc":[-85.6296112,41.9273948],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185963665":{"id":"n185963665","loc":[-85.626047,41.92737],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:01Z","tags":{}},"n185963688":{"id":"n185963688","loc":[-85.6296503,41.9292199],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963689":{"id":"n185963689","loc":[-85.6296694,41.931157],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963690":{"id":"n185963690","loc":[-85.6296791,41.9321485],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963691":{"id":"n185963691","loc":[-85.6296991,41.9341973],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185967638":{"id":"n185967638","loc":[-85.627089,41.9361884],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185972917":{"id":"n185972917","loc":[-85.6293759,41.9388605],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972919":{"id":"n185972919","loc":[-85.6290337,41.9380234],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185972921":{"id":"n185972921","loc":[-85.628424,41.936212],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:40Z","tags":{}},"n185972923":{"id":"n185972923","loc":[-85.628367,41.936029],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:40Z","tags":{}},"n185974511":{"id":"n185974511","loc":[-85.627064,41.932169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:19Z","tags":{}},"n185977728":{"id":"n185977728","loc":[-85.625605,41.925842],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977729":{"id":"n185977729","loc":[-85.625685,41.926163],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977731":{"id":"n185977731","loc":[-85.6257845,41.9264872],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977733":{"id":"n185977733","loc":[-85.62663,41.929251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977734":{"id":"n185977734","loc":[-85.627008,41.930642],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977736":{"id":"n185977736","loc":[-85.627029,41.930775],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977738":{"id":"n185977738","loc":[-85.627041,41.930946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977739":{"id":"n185977739","loc":[-85.6270379,41.9311746],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977742":{"id":"n185977742","loc":[-85.627055,41.934206],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977744":{"id":"n185977744","loc":[-85.627084,41.936804],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977746":{"id":"n185977746","loc":[-85.627104,41.936914],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977748":{"id":"n185977748","loc":[-85.627156,41.937026],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977750":{"id":"n185977750","loc":[-85.6272406,41.9371672],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977752":{"id":"n185977752","loc":[-85.627317,41.93723],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977753":{"id":"n185977753","loc":[-85.627422,41.937312],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977755":{"id":"n185977755","loc":[-85.627754,41.937504],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977757":{"id":"n185977757","loc":[-85.627883,41.937623],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977761":{"id":"n185977761","loc":[-85.627984,41.93773],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n1475283996":{"id":"n1475283996","loc":[-85.6270514,41.9317122],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{"railway":"level_crossing"}},"n1475284004":{"id":"n1475284004","loc":[-85.6278177,41.9342117],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{"railway":"level_crossing"}},"n1475284014":{"id":"n1475284014","loc":[-85.6251877,41.9255913],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475284017":{"id":"n1475284017","loc":[-85.6274992,41.9331816],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475284021":{"id":"n1475284021","loc":[-85.6297108,41.9353939],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{"railway":"level_crossing"}},"n1475284027":{"id":"n1475284027","loc":[-85.62811,41.935198],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:03Z","tags":{"railway":"level_crossing"}},"n1475284035":{"id":"n1475284035","loc":[-85.626888,41.9311757],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:03Z","tags":{"railway":"level_crossing"}},"n1475293245":{"id":"n1475293245","loc":[-85.6286047,41.9367881],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1875654302":{"id":"n1875654302","loc":[-85.6296367,41.927491],"version":"1","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:43Z","tags":{}},"n2189099388":{"id":"n2189099388","loc":[-85.6312007,41.9389988],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099389":{"id":"n2189099389","loc":[-85.6311003,41.9389992],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099390":{"id":"n2189099390","loc":[-85.6310988,41.9387847],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099391":{"id":"n2189099391","loc":[-85.6312165,41.9387843],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099392":{"id":"n2189099392","loc":[-85.6312152,41.9385857],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099393":{"id":"n2189099393","loc":[-85.6310877,41.9385862],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099394":{"id":"n2189099394","loc":[-85.6310858,41.9383161],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099395":{"id":"n2189099395","loc":[-85.6302002,41.9383196],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099396":{"id":"n2189099396","loc":[-85.6302011,41.9384472],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099397":{"id":"n2189099397","loc":[-85.6301018,41.9384476],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099398":{"id":"n2189099398","loc":[-85.6301025,41.9385419],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099399":{"id":"n2189099399","loc":[-85.6299275,41.9385427],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099400":{"id":"n2189099400","loc":[-85.62993,41.9388653],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099401":{"id":"n2189099401","loc":[-85.630107,41.9388645],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099402":{"id":"n2189099402","loc":[-85.6301079,41.9389908],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099403":{"id":"n2189099403","loc":[-85.6301951,41.9389904],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189123382":{"id":"n2189123382","loc":[-85.6336279,41.9354365],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123384":{"id":"n2189123384","loc":[-85.6328492,41.9355177],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123387":{"id":"n2189123387","loc":[-85.6323762,41.9357396],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123388":{"id":"n2189123388","loc":[-85.6315174,41.9358966],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123389":{"id":"n2189123389","loc":[-85.6304331,41.936124],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123390":{"id":"n2189123390","loc":[-85.6302075,41.9364271],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123391":{"id":"n2189123391","loc":[-85.6303458,41.9367953],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123392":{"id":"n2189123392","loc":[-85.6299601,41.9369739],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123393":{"id":"n2189123393","loc":[-85.6299164,41.9374882],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123394":{"id":"n2189123394","loc":[-85.6299455,41.9378022],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123395":{"id":"n2189123395","loc":[-85.6299771,41.9379053],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123396":{"id":"n2189123396","loc":[-85.6301597,41.9379091],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123397":{"id":"n2189123397","loc":[-85.6308042,41.9377913],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123398":{"id":"n2189123398","loc":[-85.6316885,41.9378082],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123399":{"id":"n2189123399","loc":[-85.6316848,41.9380079],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123400":{"id":"n2189123400","loc":[-85.6318449,41.9381161],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123401":{"id":"n2189123401","loc":[-85.6320705,41.9381811],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123402":{"id":"n2189123402","loc":[-85.6321433,41.9383706],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123404":{"id":"n2189123404","loc":[-85.632056,41.9384355],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123406":{"id":"n2189123406","loc":[-85.6317867,41.9384572],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123409":{"id":"n2189123409","loc":[-85.6316572,41.9387281],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123417":{"id":"n2189123417","loc":[-85.6315946,41.93775],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n2189123419":{"id":"n2189123419","loc":[-85.6302641,41.9378393],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"w208640158":{"id":"w208640158","version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"area":"yes","natural":"wetland"},"nodes":["n2189123379","n2189123382","n2189123384","n2189123387","n2189123388","n2189123389","n2189123390","n2189123391","n2189123392","n2189123393","n2189123394","n2189123395","n2189123396","n2189123419","n2189123397","n2189123417","n2189123398","n2189123399","n2189123400","n2189123401","n2189123402","n2189123404","n2189123406","n2189123409","n2189123410","n2189123412","n2189123415","n1819805722","n1819805861","n1819805887","n1819805760","n1819805641","n1819805632","n2189123379"]},"w134150787":{"id":"w134150787","version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no"},"nodes":["n185972905","n185972907","n1475293223","n185972911","n1475293241","n1475293246","n185972915","n185972917","n185972919","n1475293245","n185972921","n185972923","n1475284027","n1475284004","n1475284017","n1475283996","n1475284035","n1475284014","n185956891"]},"w208639443":{"id":"w208639443","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112720","n2189112721","n2189112722","n2189112723","n2189112720"]},"w17966462":{"id":"w17966462","version":"9","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977728","n185977729","n185977731","n185963665","n185959979","n185977733","n185945401","n185977734","n185977736","n185977738","n185977739","n1475283996","n185974511","n185945138","n185977742","n185961192","n185967638","n185977744","n185977746","n185977748","n185977750","n185977752","n185977753","n185977754","n185977755","n185977757","n185977761","n185958030","n1475293263","n185963698","n185952745","n185947850","n185977762"]},"w203985741":{"id":"w203985741","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{"area":"yes","leisure":"park","name":"Conservation Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2139982404","n2139982405","n2139982399","n2139982400","n1819805770","n2139982402","n2139982403","n2139982401","n1819805780","n1819805834","n2139982406","n2139982404"]},"w17963676":{"id":"w17963676","version":"3","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312976","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1475293258","n2139982428","n2139982427","n2139982426","n2139982425","n2139982424","n2139982423","n2139982422","n2139982430","n2139982421","n2139982420","n2139982429","n1475293231","n1475293258","n1475293251","n1475293223","n185952745"]},"w203985745":{"id":"w203985745","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"footway"},"nodes":["n2139982430","n2139982431","n2139982432","n2139982433","n2139982434","n2139982435","n2139982436","n2139982437","n2139982438","n2139982439","n2139982440","n2139982441","n1475293231"]},"w208639451":{"id":"w208639451","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112754","n2189112755","n2189112756","n2189112757","n2189112758","n2189112759","n2189112754"]},"w208639452":{"id":"w208639452","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112760","n2189112761","n2189112766","n2189112762","n2189112763","n2189112760"]},"w206805244":{"id":"w206805244","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544766","n2168544767","n2168544768","n2168544769","n2168544770","n2168544771","n2168544772","n2168544773","n2168544774","n2168544775","n2168544776","n2168544777","n2168544778","n2168544779","n2168544766"]},"w208639444":{"id":"w208639444","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112724","n2189112725","n2189112726","n2189112727","n2189112724"]},"w208639450":{"id":"w208639450","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112750","n2189112751","n2189112752","n2189112753","n2189112750"]},"w208639448":{"id":"w208639448","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112740","n2189112741","n2189112742","n2189112743","n2189112740"]},"w208637859":{"id":"w208637859","version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:06Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189099387","n2189099388","n2189099389","n2189099390","n2189099391","n2189099392","n2189099393","n2189099394","n2189099395","n2189099396","n2189099397","n2189099398","n2189099399","n2189099400","n2189099401","n2189099402","n2189099403","n2189099404","n2189099405","n2189099406","n2189099407","n2189099408","n2189099409","n2189099410","n2189099387"]},"w208639453":{"id":"w208639453","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112764","n2189112765","n2189112766","n2189112761","n2189112764"]},"w208639456":{"id":"w208639456","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112774","n2189112778","n2189112779","n2189112775","n2189112776","n2189112777","n2189112774"]},"w208639445":{"id":"w208639445","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112728","n2189112729","n2189112730","n2189112731","n2189112728"]},"w17967776":{"id":"w17967776","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:17Z","tags":{"highway":"residential","name":"5th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312495","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958032","n185988963"]},"w208639461":{"id":"w208639461","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112792","n2189112794","n2189112795","n2189112796","n2189112793","n2189112792"]},"w206805241":{"id":"w206805241","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544754","n2168544755","n2168544756","n2168544757","n2168544754"]},"w208639449":{"id":"w208639449","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112744","n2189112745","n2189112746","n2189112747","n2189112748","n2189112749","n2189112744"]},"w208639455":{"id":"w208639455","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112771","n2189112772","n2189112773","n2189112768","n2189112771"]},"w208639457":{"id":"w208639457","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112780","n2189112781","n2189112782","n2189112783","n2189112780"]},"w208639446":{"id":"w208639446","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112732","n2189112733","n2189112734","n2189112735","n2189112732"]},"w208639454":{"id":"w208639454","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112767","n2189112768","n2189112773","n2189112769","n2189112770","n2189112767"]},"w203985743":{"id":"w203985743","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139982411","n2139982412","n2139982413","n2139982414","n2139982415","n2139982416","n2139982417","n2139982419","n2139982418","n2139982411"]},"w17965023":{"id":"w17965023","version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:10Z","tags":{"highway":"residential","name":"4th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"4th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313205","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185963655","n1875654302","n185959983","n185963688","n185945405","n185963689","n185963690","n185945142","n185963691","n185961200","n1475284021","n1475293246","n1875654132","n1475293263"]},"w206805242":{"id":"w206805242","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544758","n2168544759","n2168544760","n2168544761","n2168544758"]},"w208639460":{"id":"w208639460","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112792","n2189112793","n2189112789","n2189112790","n2189112792"]},"w208639447":{"id":"w208639447","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112736","n2189112737","n2189112738","n2189112739","n2189112736"]},"w208639458":{"id":"w208639458","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112784","n2189112785","n2189112786","n2189112787","n2189112784"]},"w203985744":{"id":"w203985744","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"service"},"nodes":["n2139982425","n2139982400"]},"w208639459":{"id":"w208639459","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112788","n2189112789","n2189112790","n2189112791","n2189112788"]},"w203985742":{"id":"w203985742","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139982407","n2139982408","n2139982409","n2139982410","n2139982407"]},"w206805243":{"id":"w206805243","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544762","n2168544763","n2168544764","n2168544765","n2168544762"]},"n185959081":{"id":"n185959081","loc":[-85.628469,41.948674],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:41Z","tags":{}},"n185967427":{"id":"n185967427","loc":[-85.632054,41.951174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967424":{"id":"n185967424","loc":[-85.6320391,41.9499109],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185968101":{"id":"n185968101","loc":[-85.6308395,41.9511969],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185960792":{"id":"n185960792","loc":[-85.632074,41.953707],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185961389":{"id":"n185961389","loc":[-85.630935,41.959037],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185961391":{"id":"n185961391","loc":[-85.632169,41.959025],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185965395":{"id":"n185965395","loc":[-85.63216,41.959859],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"n185966953":{"id":"n185966953","loc":[-85.630894,41.957428],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185966955":{"id":"n185966955","loc":[-85.632122,41.957427],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185967430":{"id":"n185967430","loc":[-85.632077,41.952453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967432":{"id":"n185967432","loc":[-85.632095,41.954685],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967434":{"id":"n185967434","loc":[-85.632121,41.955914],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967436":{"id":"n185967436","loc":[-85.632128,41.9583],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967438":{"id":"n185967438","loc":[-85.632187,41.960681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967440":{"id":"n185967440","loc":[-85.632182,41.961493],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185968102":{"id":"n185968102","loc":[-85.630855,41.952452],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968104":{"id":"n185968104","loc":[-85.630887,41.953714],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968106":{"id":"n185968106","loc":[-85.630883,41.954692],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968108":{"id":"n185968108","loc":[-85.630904,41.955913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968110":{"id":"n185968110","loc":[-85.630904,41.958058],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968112":{"id":"n185968112","loc":[-85.630952,41.960667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968114":{"id":"n185968114","loc":[-85.630972,41.961495],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968116":{"id":"n185968116","loc":[-85.630962,41.961967],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185978969":{"id":"n185978969","loc":[-85.633214,41.948618],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:39Z","tags":{}},"n185985812":{"id":"n185985812","loc":[-85.633274,41.951159],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185986155":{"id":"n185986155","loc":[-85.633258,41.949893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:48Z","tags":{}},"n2208608826":{"id":"n2208608826","loc":[-85.6339222,41.9486225],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"w17964531":{"id":"w17964531","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:22Z","tags":{"highway":"residential","name":"Willow Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Willow","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313189","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n185959079","n185959081"]},"w17967386":{"id":"w17967386","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"East Armitage Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armitage","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185982195","n185968101","n185967427","n185985812","n185974583"]},"w17965502":{"id":"w17965502","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Elm Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Elm","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185968100","n185968101","n185968102","n185968104","n185968106","n185968108","n185966953","n185968110","n185961389","n185968112","n185968114","n185968116"]},"w17967844":{"id":"w17967844","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"East Bennett Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bennett","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185982193","n185967424","n185986155","n185978390"]},"w17966581":{"id":"w17966581","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"E Kelsey St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kelsey","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978967","n185978969","n2208608826","n185971578"]},"w17965402":{"id":"w17965402","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Walnut Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Walnut","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185967422","n185967424","n185967427","n185967430","n185960792","n185967432","n185967434","n185966955","n185967436","n185961391","n185965395","n185967438","n185967440"]},"n2199093506":{"id":"n2199093506","loc":[-85.6251879,41.9478322],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093505":{"id":"n2199093505","loc":[-85.6252076,41.9477749],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093504":{"id":"n2199093504","loc":[-85.6252289,41.9477602],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093503":{"id":"n2199093503","loc":[-85.625201,41.9477492],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093502":{"id":"n2199093502","loc":[-85.6251682,41.9477066],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093501":{"id":"n2199093501","loc":[-85.6251715,41.947609],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093500":{"id":"n2199093500","loc":[-85.6252125,41.9475639],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093499":{"id":"n2199093499","loc":[-85.6252896,41.9475602],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093498":{"id":"n2199093498","loc":[-85.6253027,41.9475334],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093497":{"id":"n2199093497","loc":[-85.6253437,41.9474822],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093496":{"id":"n2199093496","loc":[-85.6254421,41.9474675],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093495":{"id":"n2199093495","loc":[-85.6256503,41.9474944],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093494":{"id":"n2199093494","loc":[-85.6257257,41.9476127],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093493":{"id":"n2199093493","loc":[-85.6257028,41.9477285],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093492":{"id":"n2199093492","loc":[-85.6255339,41.9478102],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093491":{"id":"n2199093491","loc":[-85.6253912,41.9478224],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093490":{"id":"n2199093490","loc":[-85.6253043,41.947859],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093489":{"id":"n2199093489","loc":[-85.6252027,41.9478846],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093458":{"id":"n2199093458","loc":[-85.6246876,41.9486617],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093457":{"id":"n2199093457","loc":[-85.6243127,41.9486583],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093456":{"id":"n2199093456","loc":[-85.624306,41.9490569],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093455":{"id":"n2199093455","loc":[-85.624681,41.9490603],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093514":{"id":"n2199093514","loc":[-85.6236228,41.9496059],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093513":{"id":"n2199093513","loc":[-85.6236231,41.9496997],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093512":{"id":"n2199093512","loc":[-85.623357,41.9497002],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093511":{"id":"n2199093511","loc":[-85.6233567,41.9496136],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093508":{"id":"n2199093508","loc":[-85.6239735,41.9494287],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093507":{"id":"n2199093507","loc":[-85.6239741,41.9496052],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093488":{"id":"n2199093488","loc":[-85.624497,41.9512286],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093487":{"id":"n2199093487","loc":[-85.6244966,41.9511259],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093486":{"id":"n2199093486","loc":[-85.6243151,41.9511263],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093485":{"id":"n2199093485","loc":[-85.6243154,41.951229],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093484":{"id":"n2199093484","loc":[-85.6241205,41.9508665],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093483":{"id":"n2199093483","loc":[-85.624115,41.9505249],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093482":{"id":"n2199093482","loc":[-85.6243149,41.9505231],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093481":{"id":"n2199093481","loc":[-85.6243203,41.9508648],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093480":{"id":"n2199093480","loc":[-85.624393,41.9508668],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093479":{"id":"n2199093479","loc":[-85.6243904,41.9505956],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093478":{"id":"n2199093478","loc":[-85.6246727,41.950594],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093477":{"id":"n2199093477","loc":[-85.624675,41.9508203],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093476":{"id":"n2199093476","loc":[-85.6245097,41.9508212],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093475":{"id":"n2199093475","loc":[-85.6245101,41.9508662],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093474":{"id":"n2199093474","loc":[-85.6241008,41.9493459],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093473":{"id":"n2199093473","loc":[-85.6242442,41.9493459],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093472":{"id":"n2199093472","loc":[-85.6242442,41.9493681],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093471":{"id":"n2199093471","loc":[-85.6243397,41.9493681],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093470":{"id":"n2199093470","loc":[-85.6243417,41.9493511],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093469":{"id":"n2199093469","loc":[-85.6247251,41.9493485],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093468":{"id":"n2199093468","loc":[-85.6247548,41.9504949],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093467":{"id":"n2199093467","loc":[-85.6241214,41.9505017],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093466":{"id":"n2199093466","loc":[-85.6254398,41.950174],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093465":{"id":"n2199093465","loc":[-85.6254412,41.9499872],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093464":{"id":"n2199093464","loc":[-85.6255363,41.9499876],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093463":{"id":"n2199093463","loc":[-85.6255374,41.9498439],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093462":{"id":"n2199093462","loc":[-85.6255638,41.949844],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093461":{"id":"n2199093461","loc":[-85.6255652,41.9496672],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093460":{"id":"n2199093460","loc":[-85.6251823,41.9496656],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093459":{"id":"n2199093459","loc":[-85.6251785,41.9501729],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093510":{"id":"n2199093510","loc":[-85.6229922,41.9496143],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093509":{"id":"n2199093509","loc":[-85.6229915,41.9494306],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n185948903":{"id":"n185948903","loc":[-85.616514,41.947449],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185955120":{"id":"n185955120","loc":[-85.620103,41.951],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185955143":{"id":"n185955143","loc":[-85.619784,41.94746],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185960124":{"id":"n185960124","loc":[-85.615238,41.947468],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:07Z","tags":{}},"n185961362":{"id":"n185961362","loc":[-85.617437,41.947451],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961364":{"id":"n185961364","loc":[-85.61861,41.947456],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961367":{"id":"n185961367","loc":[-85.620088,41.947458],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185965105":{"id":"n185965105","loc":[-85.620087,41.94924],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185970220":{"id":"n185970220","loc":[-85.62156,41.948333],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:17Z","tags":{}},"n185974697":{"id":"n185974697","loc":[-85.6201059,41.950132],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n2138420778":{"id":"n2138420778","loc":[-85.616948,41.9474499],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"w17967535":{"id":"w17967535","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:52:19Z","tags":{"highway":"residential","name":"10th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"10th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313652:15313654","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185955120","n185986812","n185983141"]},"w209716130":{"id":"w209716130","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093485","n2199093486","n2199093487","n2199093488","n2199093485"]},"w17964788":{"id":"w17964788","version":"2","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:15Z","tags":{"highway":"residential","name":"6th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313681:15313682:15329115:15329116:15330465:15330466","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960124","n185948903","n2138420778","n185961362","n185961364","n185955143","n185961367","n185961369","n185961371"]},"w17965159":{"id":"w17965159","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:55Z","tags":{"highway":"residential","name":"8th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"8th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313660","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965105","n185965108","n185965110"]},"w209716125":{"id":"w209716125","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093459","n2199093460","n2199093461","n2199093462","n2199093463","n2199093464","n2199093465","n2199093466","n2199093459"]},"w17965699":{"id":"w17965699","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:03Z","tags":{"highway":"residential","name":"7th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"7th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313667:15314407","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970220","n185970222","n185970224"]},"w209716132":{"id":"w209716132","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093507","n2199093508","n2199093509","n2199093510","n2199093511","n2199093512","n2199093513","n2199093514","n2199093507"]},"w17966129":{"id":"w17966129","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:42:41Z","tags":{"highway":"residential","name":"9th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"9th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313656","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185974697","n185974699"]},"w209716127":{"id":"w209716127","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093475","n2199093476","n2199093477","n2199093478","n2199093479","n2199093480","n2199093475"]},"w209716131":{"id":"w209716131","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","natural":"water","water":"pond"},"nodes":["n2199093489","n2199093490","n2199093491","n2199093492","n2199093493","n2199093494","n2199093495","n2199093496","n2199093497","n2199093498","n2199093499","n2199093500","n2199093501","n2199093502","n2199093503","n2199093504","n2199093505","n2199093506","n2199093489"]},"w209716126":{"id":"w209716126","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093467","n2199093468","n2199093469","n2199093470","n2199093471","n2199093472","n2199093473","n2199093474","n2199093467"]},"w209716124":{"id":"w209716124","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093455","n2199093456","n2199093457","n2199093458","n2199093455"]},"w209716128":{"id":"w209716128","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093481","n2199093482","n2199093483","n2199093484","n2199093481"]},"n185949872":{"id":"n185949872","loc":[-85.643009,41.949264],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949875":{"id":"n185949875","loc":[-85.642598,41.94929],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949877":{"id":"n185949877","loc":[-85.642127,41.949382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949881":{"id":"n185949881","loc":[-85.64169,41.949936],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185988165":{"id":"n185988165","loc":[-85.642167,41.947657],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185988167":{"id":"n185988167","loc":[-85.642347,41.947662],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185988169":{"id":"n185988169","loc":[-85.642621,41.947659],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185965019":{"id":"n185965019","loc":[-85.6385084,41.951127],"version":"4","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1475293248":{"id":"n1475293248","loc":[-85.6386095,41.9512214],"version":"2","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:04Z","tags":{}},"n185962639":{"id":"n185962639","loc":[-85.649669,41.949161],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:30Z","tags":{}},"n185962810":{"id":"n185962810","loc":[-85.649907,41.949157],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:34Z","tags":{}},"n185964355":{"id":"n185964355","loc":[-85.637412,41.9511359],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185965021":{"id":"n185965021","loc":[-85.638661,41.952386],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965023":{"id":"n185965023","loc":[-85.638654,41.953665],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965025":{"id":"n185965025","loc":[-85.638694,41.954649],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965027":{"id":"n185965027","loc":[-85.638724,41.955913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185971415":{"id":"n185971415","loc":[-85.644466,41.949246],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185971417":{"id":"n185971417","loc":[-85.647021,41.949193],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185971420":{"id":"n185971420","loc":[-85.648476,41.949169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185979975":{"id":"n185979975","loc":[-85.644429,41.947633],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:24Z","tags":{}},"n185988171":{"id":"n185988171","loc":[-85.645377,41.947622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:34Z","tags":{}},"w17963211":{"id":"w17963211","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:23:06Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313193","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185949870","n185949872","n185949875","n185949877","n185949881"]},"w17965839":{"id":"w17965839","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:10Z","tags":{"highway":"residential","name":"Arnold St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Arnold","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15327930:15324550:15312304:15324551","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185949870","n185971415","n185971417","n185971420","n185962639","n185962810"]},"w17967618":{"id":"w17967618","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:53:22Z","tags":{"highway":"residential","name":"Pierson St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pierson","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313265:15312333:15324553","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185967777","n185988165","n185988167","n185988169","n185985824","n185979975","n185988171"]},"w17965149":{"id":"w17965149","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:56Z","tags":{"highway":"residential","name":"Oak St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Oak","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331522","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965019","n1475293248","n185965021","n185965023","n185965025","n185965027"]},"w17966118":{"id":"w17966118","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"West Armitage Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armitage","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185974583","n185974585","n185964355","n185965019"]},"n2208608800":{"id":"n2208608800","loc":[-85.6354294,41.9486201],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2199109806":{"id":"n2199109806","loc":[-85.6350474,41.9477884],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109804":{"id":"n2199109804","loc":[-85.6350476,41.9477962],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109802":{"id":"n2199109802","loc":[-85.635002,41.9477969],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109799":{"id":"n2199109799","loc":[-85.6350018,41.9477883],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109797":{"id":"n2199109797","loc":[-85.6349141,41.9477897],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109795":{"id":"n2199109795","loc":[-85.6349131,41.9477535],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109793":{"id":"n2199109793","loc":[-85.6349395,41.9477531],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109791":{"id":"n2199109791","loc":[-85.6349382,41.9477077],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109789":{"id":"n2199109789","loc":[-85.6351236,41.9477049],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109787":{"id":"n2199109787","loc":[-85.6351259,41.9477872],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109785":{"id":"n2199109785","loc":[-85.634972,41.9475992],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109783":{"id":"n2199109783","loc":[-85.6349206,41.9475997],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109770":{"id":"n2199109770","loc":[-85.6348499,41.9475461],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109768":{"id":"n2199109768","loc":[-85.6348499,41.9475084],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109765":{"id":"n2199109765","loc":[-85.6349241,41.9474569],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109763":{"id":"n2199109763","loc":[-85.634967,41.9474564],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109762":{"id":"n2199109762","loc":[-85.6350405,41.9475121],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109761":{"id":"n2199109761","loc":[-85.6350405,41.9475419],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109753":{"id":"n2199109753","loc":[-85.6342443,41.9478391],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109751":{"id":"n2199109751","loc":[-85.6342427,41.9477927],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109745":{"id":"n2199109745","loc":[-85.6342439,41.9476859],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109743":{"id":"n2199109743","loc":[-85.6342429,41.9476575],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109741":{"id":"n2199109741","loc":[-85.6344615,41.9476533],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109739":{"id":"n2199109739","loc":[-85.6344678,41.9478348],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109737":{"id":"n2199109737","loc":[-85.634416,41.9480059],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109735":{"id":"n2199109735","loc":[-85.6344145,41.9478983],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109733":{"id":"n2199109733","loc":[-85.6342749,41.9478993],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109731":{"id":"n2199109731","loc":[-85.6342753,41.9479272],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109729":{"id":"n2199109729","loc":[-85.6342498,41.9479274],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109727":{"id":"n2199109727","loc":[-85.6342505,41.9479762],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109725":{"id":"n2199109725","loc":[-85.6342743,41.947976],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109723":{"id":"n2199109723","loc":[-85.6342747,41.948007],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109721":{"id":"n2199109721","loc":[-85.6343415,41.9476355],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109719":{"id":"n2199109719","loc":[-85.6343391,41.9474973],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109717":{"id":"n2199109717","loc":[-85.6343133,41.9474798],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109715":{"id":"n2199109715","loc":[-85.6342874,41.9474737],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109709":{"id":"n2199109709","loc":[-85.6349804,41.94815],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109707":{"id":"n2199109707","loc":[-85.6348915,41.9481505],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109705":{"id":"n2199109705","loc":[-85.6348917,41.9481692],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109702":{"id":"n2199109702","loc":[-85.6348522,41.9481694],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109700":{"id":"n2199109700","loc":[-85.6348532,41.9482679],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109698":{"id":"n2199109698","loc":[-85.6348315,41.948268],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109696":{"id":"n2199109696","loc":[-85.6348318,41.9482955],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109694":{"id":"n2199109694","loc":[-85.6349653,41.9482946],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109692":{"id":"n2199109692","loc":[-85.6349656,41.9483211],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109690":{"id":"n2199109690","loc":[-85.634999,41.9483209],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109688":{"id":"n2199109688","loc":[-85.6349987,41.9482947],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109686":{"id":"n2199109686","loc":[-85.6351753,41.9482935],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109684":{"id":"n2199109684","loc":[-85.6351749,41.9482617],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109682":{"id":"n2199109682","loc":[-85.6351588,41.9482618],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109680":{"id":"n2199109680","loc":[-85.6351575,41.9481518],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109678":{"id":"n2199109678","loc":[-85.6350671,41.9481524],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109676":{"id":"n2199109676","loc":[-85.6350649,41.9479659],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109674":{"id":"n2199109674","loc":[-85.6349785,41.9479665],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109671":{"id":"n2199109671","loc":[-85.6343069,41.9483263],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109669":{"id":"n2199109669","loc":[-85.6343052,41.9482981],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109658":{"id":"n2199109658","loc":[-85.6343314,41.9480549],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109656":{"id":"n2199109656","loc":[-85.6343305,41.9480461],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109654":{"id":"n2199109654","loc":[-85.634435,41.9480468],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109652":{"id":"n2199109652","loc":[-85.6344342,41.9483746],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109650":{"id":"n2199109650","loc":[-85.6344629,41.9483727],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109648":{"id":"n2199109648","loc":[-85.6344637,41.9484561],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109645":{"id":"n2199109645","loc":[-85.63443,41.9484567],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109642":{"id":"n2199109642","loc":[-85.6344317,41.948505],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n185964352":{"id":"n185964352","loc":[-85.6373958,41.9489943],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185964351":{"id":"n185964351","loc":[-85.637113,41.9486],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n2208608825":{"id":"n2208608825","loc":[-85.6354483,41.9494241],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608823":{"id":"n2208608823","loc":[-85.6360418,41.949416],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608821":{"id":"n2208608821","loc":[-85.6360458,41.9495802],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608811":{"id":"n2208608811","loc":[-85.6357458,41.9495843],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608808":{"id":"n2208608808","loc":[-85.6357508,41.9497835],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608806":{"id":"n2208608806","loc":[-85.6354573,41.9497875],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608795":{"id":"n2208608795","loc":[-85.6354595,41.9498778],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2199109638":{"id":"n2199109638","loc":[-85.6349605,41.949749],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109636":{"id":"n2199109636","loc":[-85.6349605,41.9497639],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109634":{"id":"n2199109634","loc":[-85.6349061,41.94971],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109632":{"id":"n2199109632","loc":[-85.6349048,41.9496569],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109630":{"id":"n2199109630","loc":[-85.6348835,41.9496571],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109628":{"id":"n2199109628","loc":[-85.6348829,41.9497103],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109626":{"id":"n2199109626","loc":[-85.635227,41.9497738],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109624":{"id":"n2199109624","loc":[-85.6352184,41.9497787],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109622":{"id":"n2199109622","loc":[-85.6351181,41.9497806],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109620":{"id":"n2199109620","loc":[-85.6351181,41.9497456],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109618":{"id":"n2199109618","loc":[-85.6348842,41.9497651],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109616":{"id":"n2199109616","loc":[-85.6348827,41.9496238],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109615":{"id":"n2199109615","loc":[-85.6351268,41.9496206],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109614":{"id":"n2199109614","loc":[-85.6351261,41.9495891],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109613":{"id":"n2199109613","loc":[-85.6351957,41.9495881],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109612":{"id":"n2199109612","loc":[-85.6351924,41.9494515],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109611":{"id":"n2199109611","loc":[-85.6353997,41.9494488],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109610":{"id":"n2199109610","loc":[-85.6354074,41.9497715],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2189015681":{"id":"n2189015681","loc":[-85.6344229,41.9509639],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015677":{"id":"n2189015677","loc":[-85.634424,41.9507396],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2138493843":{"id":"n2138493843","loc":[-85.6343935,41.9502836],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493840":{"id":"n2138493840","loc":[-85.634398,41.9506264],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n354002838":{"id":"n354002838","loc":[-85.6345197,41.9510631],"version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{}},"n2114807590":{"id":"n2114807590","loc":[-85.634511,41.9499767],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n185964353":{"id":"n185964353","loc":[-85.6374092,41.9498755],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1819849180":{"id":"n1819849180","loc":[-85.6348236,41.94996],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849115":{"id":"n1819849115","loc":[-85.6354372,41.9499538],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819848921":{"id":"n1819848921","loc":[-85.6348439,41.951064],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848885":{"id":"n1819848885","loc":[-85.6354575,41.9510578],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n185984281":{"id":"n185984281","loc":[-85.638075,41.949872],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:55Z","tags":{}},"n2208608827":{"id":"n2208608827","loc":[-85.6339169,41.9473191],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2199109749":{"id":"n2199109749","loc":[-85.6342082,41.9477934],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109747":{"id":"n2199109747","loc":[-85.6342045,41.9476867],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109713":{"id":"n2199109713","loc":[-85.6342404,41.9474746],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109711":{"id":"n2199109711","loc":[-85.6342404,41.9476355],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109673":{"id":"n2199109673","loc":[-85.6340886,41.9483282],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109667":{"id":"n2199109667","loc":[-85.6342403,41.9482988],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109665":{"id":"n2199109665","loc":[-85.6342386,41.9482116],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109662":{"id":"n2199109662","loc":[-85.6340861,41.9482135],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109660":{"id":"n2199109660","loc":[-85.6340802,41.9480562],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109640":{"id":"n2199109640","loc":[-85.6340928,41.9485063],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n354031366":{"id":"n354031366","loc":[-85.6341667,41.9477778],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:25Z","tags":{"amenity":"place_of_worship","ele":"249","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417877","gnis:state_id":"26","name":"Faith Tabernacle Church","religion":"christian"}},"n2189015686":{"id":"n2189015686","loc":[-85.6337798,41.95099],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015684":{"id":"n2189015684","loc":[-85.6337794,41.9509674],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015673":{"id":"n2189015673","loc":[-85.6337501,41.9507457],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015669":{"id":"n2189015669","loc":[-85.6337501,41.9506974],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015665":{"id":"n2189015665","loc":[-85.6339034,41.9506959],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015662":{"id":"n2189015662","loc":[-85.6339015,41.950436],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015658":{"id":"n2189015658","loc":[-85.6334916,41.9504376],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015655":{"id":"n2189015655","loc":[-85.6334939,41.9507558],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015650":{"id":"n2189015650","loc":[-85.6334543,41.950756],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015649":{"id":"n2189015649","loc":[-85.633456,41.9509915],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2138493842":{"id":"n2138493842","loc":[-85.6339937,41.9502836],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493841":{"id":"n2138493841","loc":[-85.6339983,41.9506281],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2114807579":{"id":"n2114807579","loc":[-85.6333644,41.9510682],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807573":{"id":"n2114807573","loc":[-85.6333557,41.9499819],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n354031330":{"id":"n354031330","loc":[-85.6341667,41.9497222],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:24Z","tags":{"amenity":"place_of_worship","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417879","gnis:state_id":"26","name":"Trinity Episcopal Church","religion":"christian"}},"n185960794":{"id":"n185960794","loc":[-85.633307,41.9537],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185964357":{"id":"n185964357","loc":[-85.637432,41.952399],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964358":{"id":"n185964358","loc":[-85.637452,41.953665],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964359":{"id":"n185964359","loc":[-85.63746,41.954658],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964360":{"id":"n185964360","loc":[-85.637473,41.95592],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964361":{"id":"n185964361","loc":[-85.637468,41.956906],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964362":{"id":"n185964362","loc":[-85.637483,41.958313],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185966957":{"id":"n185966957","loc":[-85.633361,41.957422],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185975351":{"id":"n185975351","loc":[-85.63334,41.9559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:58Z","tags":{}},"n185978784":{"id":"n185978784","loc":[-85.633311,41.954679],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185986157":{"id":"n185986157","loc":[-85.633287,41.952426],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:48Z","tags":{}},"n185986158":{"id":"n185986158","loc":[-85.6333607,41.9582301],"version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:20Z","tags":{"highway":"turning_circle"}},"w17965182":{"id":"w17965182","version":"2","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:17Z","tags":{"highway":"residential","name":"W Prutzman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Prutzman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185965289","n2189153241","n185965291"]},"w208627205":{"id":"w208627205","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015649","n2189015650","n2189015655","n2189015658","n2189015662","n2189015665","n2189015669","n2189015673","n2189015677","n2189015681","n2189015684","n2189015686","n2189015649"]},"w209717042":{"id":"w209717042","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"amenity":"place_of_worship","area":"yes","building":"yes","denomination":"presbyterian","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417878","gnis:state_id":"26","name":"First Presbyterian Church","religion":"christian"},"nodes":["n2199109610","n2199109611","n2199109612","n2199109613","n2199109614","n2199109615","n2199109616","n2199109630","n2199109632","n2199109634","n2199109628","n2199109618","n2199109636","n2199109638","n2199109620","n2199109622","n2199109624","n2199109626","n2199109610"]},"w209717045":{"id":"w209717045","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109711","n2199109713","n2199109715","n2199109717","n2199109719","n2199109721","n2199109711"]},"w209717047":{"id":"w209717047","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109739","n2199109741","n2199109743","n2199109745","n2199109747","n2199109749","n2199109751","n2199109753","n2199109739"]},"w209717044":{"id":"w209717044","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109674","n2199109676","n2199109678","n2199109680","n2199109682","n2199109684","n2199109686","n2199109688","n2199109690","n2199109692","n2199109694","n2199109696","n2199109698","n2199109700","n2199109702","n2199109705","n2199109707","n2199109709","n2199109674"]},"w210822776":{"id":"w210822776","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"service","service":"alley","surface":"unpaved"},"nodes":["n2208608795","n2208608806","n2208608825","n2208608800","n2189153241"]},"w210822778":{"id":"w210822778","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"service","service":"alley"},"nodes":["n2208608826","n2208608827"]},"w209717050":{"id":"w209717050","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109787","n2199109789","n2199109791","n2199109793","n2199109795","n2199109797","n2199109799","n2199109802","n2199109804","n2199109806","n2199109787"]},"w17965097":{"id":"w17965097","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"Maple Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Maple","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185964351","n185964352","n185964353","n185964355","n185964357","n185964358","n185964359","n185964360","n185964361","n185964362"]},"w17965856":{"id":"w17965856","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"W Kelsey St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kelsey","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185971578","n2208608800","n185971580","n185964351"]},"w17967444":{"id":"w17967444","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"East","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966937","n185978969","n185986155","n185985812","n185986157","n185960794","n185978784","n185975351","n185966957","n185986158"]},"w17967764":{"id":"w17967764","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:14Z","tags":{"highway":"residential","name":"Rock River Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Rock River","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312338","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185984017","n185964351"]},"w170848329":{"id":"w170848329","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"ele":"251","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2418164","gnis:state_id":"26","leisure":"park","name":"LaFayette Park","source":"Bing"},"nodes":["n1819849180","n1819849115","n1819848885","n1819848921","n1819849180"]},"w17967208":{"id":"w17967208","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"West Bennett Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bennett","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185978390","n2208608795","n185984020","n185964353","n185984281"]},"w17965349":{"id":"w17965349","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"E Prutzman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Prutzman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185966937","n2208608827","n185965289"]},"w209717049":{"id":"w209717049","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109761","n2199109762","n2199109763","n2199109765","n2199109768","n2199109770","n2199109783","n2199109785","n2199109761"]},"w203841840":{"id":"w203841840","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"playground"},"nodes":["n2138493840","n2138493841","n2138493842","n2138493843","n2138493840"]},"w209717043":{"id":"w209717043","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"amenity":"place_of_worship","area":"yes","building":"church","denomination":"methodist","ele":"249","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417880","gnis:state_id":"26","name":"First United Methodist Church","religion":"christian"},"nodes":["n2199109640","n2199109642","n2199109645","n2199109648","n2199109650","n2199109652","n2199109654","n2199109656","n2199109658","n2199109660","n2199109662","n2199109665","n2199109667","n2199109669","n2199109671","n2199109673","n2199109640"]},"w201484341":{"id":"w201484341","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"amenity":"school","ele":"250","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:edited":"02/22/2008","gnis:feature_id":"1624612","gnis:state_id":"26","name":"Hoppin School"},"nodes":["n354002838","n2114807579","n2114807573","n2114807590","n354002838"]},"w209717046":{"id":"w209717046","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109723","n2199109725","n2199109727","n2199109729","n2199109731","n2199109733","n2199109735","n2199109737","n2199109723"]},"w210822777":{"id":"w210822777","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2208608806","n2208608808","n2208608811","n2208608821","n2208608823","n2208608825","n2208608806"]},"n185954965":{"id":"n185954965","loc":[-85.6191189,41.9441922],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185954968":{"id":"n185954968","loc":[-85.6194384,41.9442405],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954970":{"id":"n185954970","loc":[-85.6196543,41.9443252],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954972":{"id":"n185954972","loc":[-85.6197862,41.9444539],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n354002931":{"id":"n354002931","loc":[-85.6198991,41.9455269],"version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n354030853":{"id":"n354030853","loc":[-85.6219444,41.9455556],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:19Z","tags":{"amenity":"place_of_worship","ele":"246","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417869","gnis:state_id":"26","name":"Grant Chapel","religion":"christian"}},"n367815963":{"id":"n367815963","loc":[-85.6202778,41.9461111],"version":"1","changeset":"871579","user":"amillar","uid":"28145","visible":"true","timestamp":"2009-03-31T07:45:44Z","tags":{"addr:state":"MI","building":"yes","ele":"247","gnis:county_name":"St. Joseph","gnis:feature_id":"2418176","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"George Washington Carver Community Center","source":"USGS Geonames"}},"n185947331":{"id":"n185947331","loc":[-85.618779,41.943269],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947333":{"id":"n185947333","loc":[-85.618795,41.943511],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947336":{"id":"n185947336","loc":[-85.618711,41.94413],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947338":{"id":"n185947338","loc":[-85.618704,41.944189],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947339":{"id":"n185947339","loc":[-85.618597,41.944337],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947340":{"id":"n185947340","loc":[-85.618485,41.944528],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947343":{"id":"n185947343","loc":[-85.618442,41.944716],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947345":{"id":"n185947345","loc":[-85.618457,41.945107],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947347":{"id":"n185947347","loc":[-85.618296,41.945338],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947374":{"id":"n185947374","loc":[-85.616748,41.944453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947375":{"id":"n185947375","loc":[-85.616813,41.944646],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947376":{"id":"n185947376","loc":[-85.616859,41.945196],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947377":{"id":"n185947377","loc":[-85.616941,41.945352],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947406":{"id":"n185947406","loc":[-85.618184,41.944227],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947409":{"id":"n185947409","loc":[-85.617911,41.943875],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947410":{"id":"n185947410","loc":[-85.617579,41.943682],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947411":{"id":"n185947411","loc":[-85.61713,41.943589],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947412":{"id":"n185947412","loc":[-85.616549,41.943559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947414":{"id":"n185947414","loc":[-85.616482,41.943556],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947464":{"id":"n185947464","loc":[-85.616526,41.943788],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947466":{"id":"n185947466","loc":[-85.616504,41.944002],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185948863":{"id":"n185948863","loc":[-85.619017,41.943391],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185948865":{"id":"n185948865","loc":[-85.619059,41.943368],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185955022":{"id":"n185955022","loc":[-85.620088,41.945571],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185955025":{"id":"n185955025","loc":[-85.620051,41.945505],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185955028":{"id":"n185955028","loc":[-85.62001,41.94541],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185980371":{"id":"n185980371","loc":[-85.620982,41.944742],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:37Z","tags":{}},"n185980398":{"id":"n185980398","loc":[-85.621305,41.944782],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980401":{"id":"n185980401","loc":[-85.621174,41.944819],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980403":{"id":"n185980403","loc":[-85.621029,41.944871],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980405":{"id":"n185980405","loc":[-85.620741,41.945011],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980407":{"id":"n185980407","loc":[-85.620616,41.945085],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980409":{"id":"n185980409","loc":[-85.620506,41.945172],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980411":{"id":"n185980411","loc":[-85.620394,41.945273],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980413":{"id":"n185980413","loc":[-85.620316,41.94536],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185980415":{"id":"n185980415","loc":[-85.620257,41.945452],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185980417":{"id":"n185980417","loc":[-85.620212,41.945535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185985910":{"id":"n185985910","loc":[-85.620101,41.945811],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:41Z","tags":{}},"n185985912":{"id":"n185985912","loc":[-85.620081,41.945937],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n1475283972":{"id":"n1475283972","loc":[-85.6198991,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:45Z","tags":{}},"n1475283982":{"id":"n1475283982","loc":[-85.6195022,41.9433463],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284007":{"id":"n1475284007","loc":[-85.6193037,41.9433383],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284040":{"id":"n1475284040","loc":[-85.6197329,41.9434121],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284044":{"id":"n1475284044","loc":[-85.6198756,41.9435363],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284050":{"id":"n1475284050","loc":[-85.6199689,41.9432106],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n1475284053":{"id":"n1475284053","loc":[-85.6198943,41.9432921],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n185954974":{"id":"n185954974","loc":[-85.6198296,41.94473],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954977":{"id":"n185954977","loc":[-85.6200474,41.9447384],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n2196831365":{"id":"n2196831365","loc":[-85.6202259,41.9460883],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831366":{"id":"n2196831366","loc":[-85.6202245,41.9458642],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831367":{"id":"n2196831367","loc":[-85.6205184,41.9458631],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831368":{"id":"n2196831368","loc":[-85.6205189,41.9459437],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831369":{"id":"n2196831369","loc":[-85.6203879,41.9459441],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831370":{"id":"n2196831370","loc":[-85.6203888,41.9460878],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831371":{"id":"n2196831371","loc":[-85.6184046,41.9465663],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831372":{"id":"n2196831372","loc":[-85.6191563,41.9465618],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831373":{"id":"n2196831373","loc":[-85.6191536,41.946319],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831374":{"id":"n2196831374","loc":[-85.6187356,41.9463216],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831375":{"id":"n2196831375","loc":[-85.6187334,41.9461197],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831376":{"id":"n2196831376","loc":[-85.6193167,41.9461162],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831377":{"id":"n2196831377","loc":[-85.6193156,41.9460229],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831378":{"id":"n2196831378","loc":[-85.619622,41.946021],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831379":{"id":"n2196831379","loc":[-85.6196237,41.9461712],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831380":{"id":"n2196831380","loc":[-85.6197702,41.9461703],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831381":{"id":"n2196831381","loc":[-85.6197685,41.9460202],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831382":{"id":"n2196831382","loc":[-85.6197323,41.9460204],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831383":{"id":"n2196831383","loc":[-85.6197305,41.9458563],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831384":{"id":"n2196831384","loc":[-85.6196165,41.945857],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831385":{"id":"n2196831385","loc":[-85.6196156,41.9457764],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831386":{"id":"n2196831386","loc":[-85.6194472,41.9457775],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831387":{"id":"n2196831387","loc":[-85.6194151,41.9457777],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831388":{"id":"n2196831388","loc":[-85.6183779,41.9457883],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831389":{"id":"n2196831389","loc":[-85.6183842,41.9461317],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831390":{"id":"n2196831390","loc":[-85.6185026,41.9461304],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831391":{"id":"n2196831391","loc":[-85.6185061,41.9463194],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831392":{"id":"n2196831392","loc":[-85.6184001,41.9463205],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831393":{"id":"n2196831393","loc":[-85.6182482,41.9464163],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831394":{"id":"n2196831394","loc":[-85.6182467,41.9463193],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831395":{"id":"n2196831395","loc":[-85.6180389,41.946321],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831397":{"id":"n2196831397","loc":[-85.6180404,41.946418],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n185947303":{"id":"n185947303","loc":[-85.611074,41.943389],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947304":{"id":"n185947304","loc":[-85.611332,41.943267],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947305":{"id":"n185947305","loc":[-85.611635,41.943218],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947306":{"id":"n185947306","loc":[-85.612762,41.943311],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947308":{"id":"n185947308","loc":[-85.613027,41.943327],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947310":{"id":"n185947310","loc":[-85.615377,41.942996],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947312":{"id":"n185947312","loc":[-85.615701,41.943007],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947314":{"id":"n185947314","loc":[-85.61604,41.943067],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947315":{"id":"n185947315","loc":[-85.61626,41.943083],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947316":{"id":"n185947316","loc":[-85.616507,41.943048],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947319":{"id":"n185947319","loc":[-85.616702,41.94299],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947321":{"id":"n185947321","loc":[-85.617078,41.942918],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947322":{"id":"n185947322","loc":[-85.617366,41.942973],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947323":{"id":"n185947323","loc":[-85.617601,41.943033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947325":{"id":"n185947325","loc":[-85.617799,41.943027],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947327":{"id":"n185947327","loc":[-85.618264,41.942961],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947328":{"id":"n185947328","loc":[-85.618508,41.942972],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947329":{"id":"n185947329","loc":[-85.618707,41.943076],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947361":{"id":"n185947361","loc":[-85.615356,41.944922],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947363":{"id":"n185947363","loc":[-85.61536,41.944893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947365":{"id":"n185947365","loc":[-85.615406,41.944547],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947367":{"id":"n185947367","loc":[-85.61548,41.944351],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947369":{"id":"n185947369","loc":[-85.615805,41.94419],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947371":{"id":"n185947371","loc":[-85.616166,41.944156],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947373":{"id":"n185947373","loc":[-85.616411,41.944197],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947416":{"id":"n185947416","loc":[-85.616335,41.94343],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947417":{"id":"n185947417","loc":[-85.616069,41.943293],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947419":{"id":"n185947419","loc":[-85.615803,41.943249],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947420":{"id":"n185947420","loc":[-85.615524,41.943342],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947421":{"id":"n185947421","loc":[-85.615311,41.94353],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947422":{"id":"n185947422","loc":[-85.614338,41.943558],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947423":{"id":"n185947423","loc":[-85.61422,41.94369],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947425":{"id":"n185947425","loc":[-85.614221,41.944224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947427":{"id":"n185947427","loc":[-85.614198,41.944888],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947429":{"id":"n185947429","loc":[-85.614221,41.945439],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947468":{"id":"n185947468","loc":[-85.615908,41.944756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947470":{"id":"n185947470","loc":[-85.615871,41.944888],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947472":{"id":"n185947472","loc":[-85.615878,41.94507],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185955153":{"id":"n185955153","loc":[-85.620087,41.947701],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185960690":{"id":"n185960690","loc":[-85.620141,41.951901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185978817":{"id":"n185978817","loc":[-85.617193,41.954706],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185985916":{"id":"n185985916","loc":[-85.620088,41.94758],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985918":{"id":"n185985918","loc":[-85.620133,41.951538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985919":{"id":"n185985919","loc":[-85.62013,41.952104],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985920":{"id":"n185985920","loc":[-85.620104,41.952305],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985921":{"id":"n185985921","loc":[-85.620062,41.952499],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985922":{"id":"n185985922","loc":[-85.619993,41.952702],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985925":{"id":"n185985925","loc":[-85.619879,41.952986],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985927":{"id":"n185985927","loc":[-85.619689,41.95329],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985928":{"id":"n185985928","loc":[-85.619508,41.953521],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985929":{"id":"n185985929","loc":[-85.619286,41.953728],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985930":{"id":"n185985930","loc":[-85.618925,41.954007],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985931":{"id":"n185985931","loc":[-85.618638,41.954189],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985932":{"id":"n185985932","loc":[-85.61831,41.954358],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985934":{"id":"n185985934","loc":[-85.618015,41.954485],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:43Z","tags":{}},"n185985936":{"id":"n185985936","loc":[-85.617606,41.954611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:43Z","tags":{}},"n1475283975":{"id":"n1475283975","loc":[-85.6150935,41.9434118],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283979":{"id":"n1475283979","loc":[-85.6193367,41.9430252],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283989":{"id":"n1475283989","loc":[-85.6104771,41.9455269],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283990":{"id":"n1475283990","loc":[-85.6104771,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283994":{"id":"n1475283994","loc":[-85.6198042,41.9429763],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283998":{"id":"n1475283998","loc":[-85.6192101,41.9426716],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284000":{"id":"n1475284000","loc":[-85.6198622,41.942836],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284002":{"id":"n1475284002","loc":[-85.6163262,41.9427688],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284006":{"id":"n1475284006","loc":[-85.6179527,41.9429168],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284029":{"id":"n1475284029","loc":[-85.6197195,41.9427278],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284038":{"id":"n1475284038","loc":[-85.6194405,41.9427837],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284052":{"id":"n1475284052","loc":[-85.6153225,41.942841],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n1475284055":{"id":"n1475284055","loc":[-85.6129233,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n2139966627":{"id":"n2139966627","loc":[-85.61958,41.9427558],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"w17966773":{"id":"w17966773","version":"3","changeset":"2558583","user":"elliskev","uid":"163338","visible":"true","timestamp":"2009-09-21T16:12:43Z","tags":{"highway":"secondary","name":"E Michigan Ave","ref":"M 60","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313712","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980372","n185980398","n185980401","n185980403","n185980405","n185980407","n185980409","n185980411","n185980413","n185980415","n185980417","n185955019"]},"w17964043":{"id":"w17964043","version":"3","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:19Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326065:15326068","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955019","n185955022","n185955025","n185955028","n185954977","n185971477","n1475284050","n1475284000","n1475284029","n2139966627","n1475284038"]},"w17962834":{"id":"w17962834","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:15Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313719:15313728:15331618","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947316","n185947414","n185947464","n185947466","n185947373","n185947468","n185947470","n185947472","n185947474"]},"w209470310":{"id":"w209470310","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831393","n2196831394","n2196831395","n2196831397","n2196831393"]},"w17963058":{"id":"w17963058","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:05Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326058:15326066:15326067","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947333","n185948863","n185948865","n1475284007","n1475283982","n1475284040","n1475284044"]},"w17962823":{"id":"w17962823","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:14Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313714:15313704:15313720:15313721","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947359","n185947361","n185947363","n185947365","n185947367","n185947369","n185947371","n185947373","n185947374","n185947375","n185947376","n185947377","n185947378"]},"w17962821":{"id":"w17962821","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:15Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313713:15313734:15313731:15313735:15313737:15313723","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947303","n185947304","n185947305","n185947306","n185947308","n185947310","n185947312","n185947314","n185947315","n185947316","n185947319","n185947321","n185947322","n185947323","n185947325","n185947327","n185947328","n185947329","n185947331","n185947333","n185947336","n185947338","n185947339","n185947340","n185947343","n185947345","n185947347","n185947349"]},"w134150798":{"id":"w134150798","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:52Z","tags":{"amenity":"grave_yard","ele":"249","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624862","gnis:state_id":"26","name":"Riverside Cemetery"},"nodes":["n354002931","n1475283972","n1475284053","n1475283994","n1475283979","n1475283998","n1475284006","n1475284002","n1475284052","n1475283975","n1475284055","n1475283990","n1475283989","n354002931"]},"w17964040":{"id":"w17964040","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:02Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326063:15326064","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947336","n185954965","n185954968","n185954970","n185954972","n185954974","n185954977"]},"w209470308":{"id":"w209470308","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831365","n2196831366","n2196831367","n2196831368","n2196831369","n2196831370","n2196831365"]},"w17962828":{"id":"w17962828","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:14Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313715:15313706:15328746:15313727:15313729","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947340","n185947406","n185947409","n185947410","n185947411","n185947412","n185947414","n185947416","n185947417","n185947419","n185947420","n185947421","n185947422","n185947423","n185947425","n185947427","n185947429"]},"w209470309":{"id":"w209470309","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831371","n2196831372","n2196831373","n2196831374","n2196831375","n2196831376","n2196831377","n2196831378","n2196831379","n2196831380","n2196831381","n2196831382","n2196831383","n2196831384","n2196831385","n2196831386","n2196831387","n2196831388","n2196831389","n2196831390","n2196831391","n2196831392","n2196831371"]},"w17967415":{"id":"w17967415","version":"3","changeset":"2558583","user":"elliskev","uid":"163338","visible":"true","timestamp":"2009-09-21T16:12:41Z","tags":{"highway":"secondary","name":"Jefferson St","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Jefferson","tiger:name_base_1":"State Highway 60","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313637:15313662:15313657:15328403","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n185955019","n185985910","n185985912","n185985914","n185961367","n185985916","n185955153","n185965105","n185974697","n185955120","n185985918","n185960690","n185985919","n185985920","n185985921","n185985922","n185985925","n185985927","n185985928","n185985929","n185985930","n185985931","n185985932","n185985934","n185985936","n185978817"]},"w17966772":{"id":"w17966772","version":"4","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"unclassified","name":"E Michigan Ave","name_1":"State Highway 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313710:15313711:15314052:15312385:15312378","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185954977","n185980371","n185980372"]},"n185958500":{"id":"n185958500","loc":[-85.621591,41.941075],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:27Z","tags":{}},"n185963110":{"id":"n185963110","loc":[-85.6204416,41.9408882],"version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{}},"n2139966628":{"id":"n2139966628","loc":[-85.6196431,41.9426467],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"leisure":"fishing"}},"n2139966630":{"id":"n2139966630","loc":[-85.6199354,41.9429616],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2199127051":{"id":"n2199127051","loc":[-85.6170556,41.939696],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127052":{"id":"n2199127052","loc":[-85.6170536,41.9392909],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127053":{"id":"n2199127053","loc":[-85.6172067,41.9392905],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127054":{"id":"n2199127054","loc":[-85.6172061,41.9391853],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127055":{"id":"n2199127055","loc":[-85.6171481,41.9391854],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127060":{"id":"n2199127060","loc":[-85.6167389,41.9392896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127061":{"id":"n2199127061","loc":[-85.6168728,41.9392892],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127062":{"id":"n2199127062","loc":[-85.6168747,41.9396965],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127071":{"id":"n2199127071","loc":[-85.620196,41.9399446],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127072":{"id":"n2199127072","loc":[-85.620193,41.9397316],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127073":{"id":"n2199127073","loc":[-85.6200381,41.9397328],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127074":{"id":"n2199127074","loc":[-85.6200412,41.9399458],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127075":{"id":"n2199127075","loc":[-85.6203606,41.9399939],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127076":{"id":"n2199127076","loc":[-85.6205527,41.9399922],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127077":{"id":"n2199127077","loc":[-85.6205482,41.9397115],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127078":{"id":"n2199127078","loc":[-85.6204132,41.9397124],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127079":{"id":"n2199127079","loc":[-85.6204144,41.9396341],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127080":{"id":"n2199127080","loc":[-85.6205699,41.9396324],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127081":{"id":"n2199127081","loc":[-85.6205722,41.939498],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127082":{"id":"n2199127082","loc":[-85.6204064,41.9394997],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127083":{"id":"n2199127083","loc":[-85.6204087,41.939561],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127084":{"id":"n2199127084","loc":[-85.6203103,41.9395618],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127085":{"id":"n2199127085","loc":[-85.620308,41.9396069],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127086":{"id":"n2199127086","loc":[-85.6200347,41.9396086],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127087":{"id":"n2199127087","loc":[-85.6200382,41.9397141],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127088":{"id":"n2199127088","loc":[-85.6202257,41.9397149],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127089":{"id":"n2199127089","loc":[-85.6202269,41.9399182],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127090":{"id":"n2199127090","loc":[-85.6203595,41.9399199],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127091":{"id":"n2199127091","loc":[-85.6212335,41.939688],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127092":{"id":"n2199127092","loc":[-85.6212328,41.939595],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127093":{"id":"n2199127093","loc":[-85.6208807,41.9395966],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127094":{"id":"n2199127094","loc":[-85.6208815,41.9396896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127095":{"id":"n2199127095","loc":[-85.6208676,41.9396872],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127096":{"id":"n2199127096","loc":[-85.6208583,41.9393539],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127097":{"id":"n2199127097","loc":[-85.6207006,41.9393563],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127098":{"id":"n2199127098","loc":[-85.6207099,41.9396896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n185967054":{"id":"n185967054","loc":[-85.6173384,41.9356126],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967063":{"id":"n185967063","loc":[-85.617371,41.936243],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967065":{"id":"n185967065","loc":[-85.617337,41.936299],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967068":{"id":"n185967068","loc":[-85.617321,41.936373],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967070":{"id":"n185967070","loc":[-85.6173562,41.9366969],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967074":{"id":"n185967074","loc":[-85.6173635,41.9377414],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967075":{"id":"n185967075","loc":[-85.6173696,41.9381886],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:58Z","tags":{}},"n185967076":{"id":"n185967076","loc":[-85.617372,41.938535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:54Z","tags":{}},"n2199127056":{"id":"n2199127056","loc":[-85.617147,41.9389616],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127057":{"id":"n2199127057","loc":[-85.6172136,41.9389614],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127058":{"id":"n2199127058","loc":[-85.6172123,41.9386909],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127059":{"id":"n2199127059","loc":[-85.616736,41.9386922],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2203921041":{"id":"n2203921041","loc":[-85.6173018,41.9346369],"version":"1","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"w203983952":{"id":"w203983952","version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"highway":"service"},"nodes":["n2139966627","n1819800319"]},"w209718301":{"id":"w209718301","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127051","n2199127052","n2199127053","n2199127054","n2199127055","n2199127056","n2199127057","n2199127058","n2199127059","n2199127060","n2199127061","n2199127062","n2199127051"]},"w209718304":{"id":"w209718304","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127071","n2199127072","n2199127073","n2199127074","n2199127071"]},"w17964961":{"id":"w17964961","version":"2","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{"highway":"residential","name":"Whipple St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Whipple","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185963099","n185963110"]},"w17964489":{"id":"w17964489","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:29:56Z","tags":{"highway":"residential","name":"Jackson St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Jackson","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314430","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958498","n185958500"]},"w203983953":{"id":"w203983953","version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"area":"yes","leisure":"park","name":"Marina Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n1475283994","n1475283979","n1475283998","n2139966629","n2139966625","n1819800319","n2139966623","n2139966622","n2139966621","n2139966630","n1475283994"]},"w17965366":{"id":"w17965366","version":"2","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{"highway":"residential","name":"14th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"14th","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n2203921041","n185967054","n185967063","n185967065","n185967068","n185967070","n185967074","n185967075","n185967076","n185967077"]},"w209718306":{"id":"w209718306","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127091","n2199127092","n2199127093","n2199127094","n2199127091"]},"w209718307":{"id":"w209718307","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127095","n2199127096","n2199127097","n2199127098","n2199127095"]},"w209718305":{"id":"w209718305","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127075","n2199127076","n2199127077","n2199127078","n2199127079","n2199127080","n2199127081","n2199127082","n2199127083","n2199127084","n2199127085","n2199127086","n2199127087","n2199127088","n2199127089","n2199127090","n2199127075"]},"n185960199":{"id":"n185960199","loc":[-85.62965,41.95469],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:08Z","tags":{}},"n185980737":{"id":"n185980737","loc":[-85.629083,41.953725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:48Z","tags":{}},"n2114807561":{"id":"n2114807561","loc":[-85.6297681,41.9524688],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807597":{"id":"n2114807597","loc":[-85.6296517,41.952563],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n185960197":{"id":"n185960197","loc":[-85.629676,41.9537314],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978791":{"id":"n185978791","loc":[-85.6244542,41.9547066],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"w17967573":{"id":"w17967573","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"highway":"residential","name":"E Wheeler St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wheeler","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960195","n2114807561","n185968102","n185967430","n185986157","n185978392"]},"w17966553":{"id":"w17966553","version":"5","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Hoffman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971631","n185978784","n185967432","n185968106","n185960199","n185978787","n185978790","n185978791"]},"w17966787":{"id":"w17966787","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"East Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185980735","n185980737","n185960197","n185968104","n185960792"]},"w17964723":{"id":"w17964723","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960792","n185960794","n185960796"]},"w17964654":{"id":"w17964654","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Pine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pine","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960195","n2114807597","n185960197","n185960199"]},"n1819848862":{"id":"n1819848862","loc":[-85.6346087,41.9545845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848935":{"id":"n1819848935","loc":[-85.6345948,41.9537717],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848973":{"id":"n1819848973","loc":[-85.6334247,41.9537827],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848997":{"id":"n1819848997","loc":[-85.6334386,41.9545956],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n2189015861":{"id":"n2189015861","loc":[-85.6375906,41.954836],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015865":{"id":"n2189015865","loc":[-85.6383307,41.9548291],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015867":{"id":"n2189015867","loc":[-85.6383337,41.9550072],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015868":{"id":"n2189015868","loc":[-85.6380986,41.9550094],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015869":{"id":"n2189015869","loc":[-85.6381005,41.9551226],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2199109808":{"id":"n2199109808","loc":[-85.6372702,41.9522894],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109810":{"id":"n2199109810","loc":[-85.6372677,41.9521583],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109812":{"id":"n2199109812","loc":[-85.6369505,41.9521617],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109814":{"id":"n2199109814","loc":[-85.636953,41.9522927],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n185952156":{"id":"n185952156","loc":[-85.640983,41.9546557],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185953423":{"id":"n185953423","loc":[-85.641871,41.954652],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185971637":{"id":"n185971637","loc":[-85.641583,41.95465],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185971639":{"id":"n185971639","loc":[-85.6421344,41.9546444],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971642":{"id":"n185971642","loc":[-85.6428264,41.9545612],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971648":{"id":"n185971648","loc":[-85.6436023,41.9544262],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185975066":{"id":"n185975066","loc":[-85.640532,41.953638],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185975067":{"id":"n185975067","loc":[-85.64079,41.953638],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185982166":{"id":"n185982166","loc":[-85.6399012,41.9523817],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n2189015858":{"id":"n2189015858","loc":[-85.6376104,41.9560138],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015870":{"id":"n2189015870","loc":[-85.6386794,41.9551172],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015871":{"id":"n2189015871","loc":[-85.6386817,41.955256],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015873":{"id":"n2189015873","loc":[-85.6385437,41.9552573],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015876":{"id":"n2189015876","loc":[-85.638555,41.9559278],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015879":{"id":"n2189015879","loc":[-85.6384954,41.9559283],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015882":{"id":"n2189015882","loc":[-85.6384965,41.9559935],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015885":{"id":"n2189015885","loc":[-85.6383533,41.9559949],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015888":{"id":"n2189015888","loc":[-85.638351,41.9558607],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015891":{"id":"n2189015891","loc":[-85.6382178,41.9558619],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015894":{"id":"n2189015894","loc":[-85.6382203,41.956008],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"w208627223":{"id":"w208627223","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015858","n2189015861","n2189015865","n2189015867","n2189015868","n2189015869","n2189015870","n2189015871","n2189015873","n2189015876","n2189015879","n2189015882","n2189015885","n2189015888","n2189015891","n2189015894","n2189015858"]},"w170848328":{"id":"w170848328","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"ele":"250","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624408","gnis:state_id":"26","leisure":"park","name":"Bowman Park","source":"Bing"},"nodes":["n1819848935","n1819848973","n1819848997","n1819848862","n1819848935"]},"w17965866":{"id":"w17965866","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Hoffman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185971631","n185971632","n185964359","n185965025","n1475293264","n185952156","n185971637","n185953423","n185971639","n185971642","n185971648"]},"w209717051":{"id":"w209717051","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"amenity":"place_of_worship","area":"yes","building":"yes","denomination":"baptist","ele":"251","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417886","gnis:state_id":"26","name":"Calvary Missionary Baptist Church","religion":"christian"},"nodes":["n2199109808","n2199109810","n2199109812","n2199109814","n2199109808"]},"w17966172":{"id":"w17966172","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960796","n185975064","n185964358","n185965023","n1475293222","n185975066","n185975067"]},"w17966975":{"id":"w17966975","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:06Z","tags":{"highway":"residential","name":"W Wheeler St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wheeler","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312250:15312254","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978392","n185982163","n185964357","n185965021","n1475293261","n185982166"]},"n185960684":{"id":"n185960684","loc":[-85.622687,41.951885],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185960686":{"id":"n185960686","loc":[-85.622492,41.951901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185978795":{"id":"n185978795","loc":[-85.6240991,41.954708],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978803":{"id":"n185978803","loc":[-85.623348,41.954547],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978806":{"id":"n185978806","loc":[-85.623123,41.954502],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978808":{"id":"n185978808","loc":[-85.622923,41.954469],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978810":{"id":"n185978810","loc":[-85.622787,41.954457],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978811":{"id":"n185978811","loc":[-85.622612,41.954458],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978813":{"id":"n185978813","loc":[-85.622368,41.954472],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n1819790545":{"id":"n1819790545","loc":[-85.6240295,41.9548949],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790621":{"id":"n1819790621","loc":[-85.6235789,41.954855],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790664":{"id":"n1819790664","loc":[-85.6238363,41.9549507],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790683":{"id":"n1819790683","loc":[-85.6224727,41.9545921],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790730":{"id":"n1819790730","loc":[-85.6227527,41.9545795],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790740":{"id":"n1819790740","loc":[-85.6240402,41.9550784],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790831":{"id":"n1819790831","loc":[-85.624126,41.9549986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790861":{"id":"n1819790861","loc":[-85.6231712,41.9546872],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790887":{"id":"n1819790887","loc":[-85.6242762,41.955206],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n2168544739":{"id":"n2168544739","loc":[-85.6249102,41.952801],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544740":{"id":"n2168544740","loc":[-85.6251859,41.9527564],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544741":{"id":"n2168544741","loc":[-85.6255515,41.9527921],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544742":{"id":"n2168544742","loc":[-85.626001,41.9529481],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544743":{"id":"n2168544743","loc":[-85.6265284,41.9529838],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544744":{"id":"n2168544744","loc":[-85.626942,41.9528857],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544745":{"id":"n2168544745","loc":[-85.6270918,41.9526851],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544746":{"id":"n2168544746","loc":[-85.6272117,41.95244],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544747":{"id":"n2168544747","loc":[-85.6271578,41.952226],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544748":{"id":"n2168544748","loc":[-85.6270019,41.9519719],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544749":{"id":"n2168544749","loc":[-85.6268221,41.9518382],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544750":{"id":"n2168544750","loc":[-85.6265284,41.951807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544751":{"id":"n2168544751","loc":[-85.6256534,41.9518516],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544752":{"id":"n2168544752","loc":[-85.6253477,41.9518338],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544753":{"id":"n2168544753","loc":[-85.6251139,41.9517669],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n185955747":{"id":"n185955747","loc":[-85.620674,41.954709],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185960688":{"id":"n185960688","loc":[-85.621032,41.951913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185972054":{"id":"n185972054","loc":[-85.6186728,41.9547335],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185978814":{"id":"n185978814","loc":[-85.6201708,41.9547403],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n1819790532":{"id":"n1819790532","loc":[-85.6244908,41.9555731],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790536":{"id":"n1819790536","loc":[-85.6217925,41.9583135],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790538":{"id":"n1819790538","loc":[-85.6233954,41.9600014],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790539":{"id":"n1819790539","loc":[-85.6204611,41.9562117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790546":{"id":"n1819790546","loc":[-85.6210898,41.9567657],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790548":{"id":"n1819790548","loc":[-85.6202465,41.9562237],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790550":{"id":"n1819790550","loc":[-85.6250165,41.9560677],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790551":{"id":"n1819790551","loc":[-85.6227946,41.9597023],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790553":{"id":"n1819790553","loc":[-85.6215726,41.9584571],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790556":{"id":"n1819790556","loc":[-85.6196306,41.9573002],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790557":{"id":"n1819790557","loc":[-85.6209503,41.9563109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790558":{"id":"n1819790558","loc":[-85.6196939,41.9574085],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790561":{"id":"n1819790561","loc":[-85.621079,41.957751],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790562":{"id":"n1819790562","loc":[-85.6224255,41.9611417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790565":{"id":"n1819790565","loc":[-85.6232506,41.9604841],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790566":{"id":"n1819790566","loc":[-85.6190835,41.9562909],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790567":{"id":"n1819790567","loc":[-85.622227,41.9593028],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790569":{"id":"n1819790569","loc":[-85.620976,41.9591039],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790571":{"id":"n1819790571","loc":[-85.6212078,41.9565303],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790572":{"id":"n1819790572","loc":[-85.6235306,41.9595102],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790581":{"id":"n1819790581","loc":[-85.6235563,41.9579351],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790584":{"id":"n1819790584","loc":[-85.6230371,41.9574598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790586":{"id":"n1819790586","loc":[-85.6211748,41.9564272],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790588":{"id":"n1819790588","loc":[-85.6226508,41.9601086],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790591":{"id":"n1819790591","loc":[-85.6218032,41.9607468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790593":{"id":"n1819790593","loc":[-85.6207915,41.9618735],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790596":{"id":"n1819790596","loc":[-85.6252955,41.9567858],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790598":{"id":"n1819790598","loc":[-85.6196618,41.9568939],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790600":{"id":"n1819790600","loc":[-85.6224416,41.9587084],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790602":{"id":"n1819790602","loc":[-85.6217442,41.9558641],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790603":{"id":"n1819790603","loc":[-85.6213355,41.9592116],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790604":{"id":"n1819790604","loc":[-85.622801,41.9573042],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790608":{"id":"n1819790608","loc":[-85.6199729,41.9574325],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790610":{"id":"n1819790610","loc":[-85.6195555,41.9557165],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790611":{"id":"n1819790611","loc":[-85.622978,41.9586007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790613":{"id":"n1819790613","loc":[-85.6253963,41.9562636],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790614":{"id":"n1819790614","loc":[-85.6235252,41.9580342],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790616":{"id":"n1819790616","loc":[-85.6232988,41.9596305],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790617":{"id":"n1819790617","loc":[-85.6226776,41.9598732],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790619":{"id":"n1819790619","loc":[-85.625553,41.9561794],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790620":{"id":"n1819790620","loc":[-85.6235574,41.959231],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790624":{"id":"n1819790624","loc":[-85.6228429,41.9573726],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790626":{"id":"n1819790626","loc":[-85.6193785,41.9556766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790628":{"id":"n1819790628","loc":[-85.620092,41.9554253],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790630":{"id":"n1819790630","loc":[-85.6226658,41.9604402],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790638":{"id":"n1819790638","loc":[-85.6219964,41.9602561],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790640":{"id":"n1819790640","loc":[-85.6232731,41.9599969],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790643":{"id":"n1819790643","loc":[-85.6247698,41.9568895],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790650":{"id":"n1819790650","loc":[-85.6216412,41.9550149],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790652":{"id":"n1819790652","loc":[-85.6224952,41.9603918],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790656":{"id":"n1819790656","loc":[-85.61918,41.9555649],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790661":{"id":"n1819790661","loc":[-85.6200169,41.955505],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790662":{"id":"n1819790662","loc":[-85.6217389,41.9563149],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790666":{"id":"n1819790666","loc":[-85.6229566,41.9598373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790667":{"id":"n1819790667","loc":[-85.6209117,41.9609189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790669":{"id":"n1819790669","loc":[-85.6252311,41.9562353],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790670":{"id":"n1819790670","loc":[-85.6209758,41.961868],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790672":{"id":"n1819790672","loc":[-85.6209557,41.9589078],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790673":{"id":"n1819790673","loc":[-85.6190352,41.9561393],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790675":{"id":"n1819790675","loc":[-85.6236432,41.9586685],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790676":{"id":"n1819790676","loc":[-85.6194901,41.9565389],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790678":{"id":"n1819790678","loc":[-85.6219266,41.9582417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790680":{"id":"n1819790680","loc":[-85.6208258,41.9557211],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790681":{"id":"n1819790681","loc":[-85.6212024,41.9613212],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790682":{"id":"n1819790682","loc":[-85.624877,41.9559401],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790684":{"id":"n1819790684","loc":[-85.6206499,41.9583693],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790699":{"id":"n1819790699","loc":[-85.6215243,41.956279],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790701":{"id":"n1819790701","loc":[-85.6246625,41.9559321],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790703":{"id":"n1819790703","loc":[-85.6230478,41.9585089],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790708":{"id":"n1819790708","loc":[-85.6211102,41.9575402],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790710":{"id":"n1819790710","loc":[-85.6215082,41.9548468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790711":{"id":"n1819790711","loc":[-85.6206552,41.9586007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790713":{"id":"n1819790713","loc":[-85.6215404,41.9549705],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790715":{"id":"n1819790715","loc":[-85.6216906,41.955521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790717":{"id":"n1819790717","loc":[-85.6215404,41.9547391],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790722":{"id":"n1819790722","loc":[-85.6219964,41.9599131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790723":{"id":"n1819790723","loc":[-85.622286,41.9606989],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790725":{"id":"n1819790725","loc":[-85.6228439,41.9572005],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790727":{"id":"n1819790727","loc":[-85.6202518,41.9554458],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790728":{"id":"n1819790728","loc":[-85.623434,41.9575276],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790729":{"id":"n1819790729","loc":[-85.6234287,41.9568576],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790732":{"id":"n1819790732","loc":[-85.6229566,41.9571369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790733":{"id":"n1819790733","loc":[-85.6225543,41.9590275],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790734":{"id":"n1819790734","loc":[-85.6232892,41.9583135],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790736":{"id":"n1819790736","loc":[-85.622977,41.9608551],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790737":{"id":"n1819790737","loc":[-85.624008,41.9569533],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790741":{"id":"n1819790741","loc":[-85.6212775,41.9608545],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790742":{"id":"n1819790742","loc":[-85.6231282,41.9569932],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790743":{"id":"n1819790743","loc":[-85.6224523,41.9591831],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790744":{"id":"n1819790744","loc":[-85.6210951,41.9610819],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790745":{"id":"n1819790745","loc":[-85.6220114,41.960544],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790755":{"id":"n1819790755","loc":[-85.6216369,41.9553854],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790757":{"id":"n1819790757","loc":[-85.6209986,41.9592709],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790758":{"id":"n1819790758","loc":[-85.6200437,41.9563468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790764":{"id":"n1819790764","loc":[-85.6219363,41.9596823],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790765":{"id":"n1819790765","loc":[-85.6237612,41.9568496],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790769":{"id":"n1819790769","loc":[-85.6212389,41.9593433],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790771":{"id":"n1819790771","loc":[-85.6210726,41.9560123],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790772":{"id":"n1819790772","loc":[-85.6212711,41.9561838],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790776":{"id":"n1819790776","loc":[-85.6234437,41.9577795],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790777":{"id":"n1819790777","loc":[-85.6212502,41.9618599],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790783":{"id":"n1819790783","loc":[-85.6216895,41.9610585],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790784":{"id":"n1819790784","loc":[-85.6200115,41.9556367],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790785":{"id":"n1819790785","loc":[-85.6210576,41.9573002],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790786":{"id":"n1819790786","loc":[-85.621138,41.9576632],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790788":{"id":"n1819790788","loc":[-85.6207733,41.9578946],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790789":{"id":"n1819790789","loc":[-85.6200705,41.9571566],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790790":{"id":"n1819790790","loc":[-85.6245337,41.9558443],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790792":{"id":"n1819790792","loc":[-85.621932,41.9608066],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790793":{"id":"n1819790793","loc":[-85.6233578,41.9581385],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790794":{"id":"n1819790794","loc":[-85.6204557,41.9555136],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790797":{"id":"n1819790797","loc":[-85.6235038,41.9576074],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790800":{"id":"n1819790800","loc":[-85.6214438,41.9607508],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790801":{"id":"n1819790801","loc":[-85.623492,41.9602129],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790802":{"id":"n1819790802","loc":[-85.6216691,41.9546553],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790803":{"id":"n1819790803","loc":[-85.6231057,41.9586851],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790804":{"id":"n1819790804","loc":[-85.6209224,41.9578673],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790813":{"id":"n1819790813","loc":[-85.620092,41.9572962],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790814":{"id":"n1819790814","loc":[-85.6216691,41.9552218],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790816":{"id":"n1819790816","loc":[-85.6216144,41.9609668],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790818":{"id":"n1819790818","loc":[-85.6216906,41.9557324],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790820":{"id":"n1819790820","loc":[-85.6192069,41.9564186],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790823":{"id":"n1819790823","loc":[-85.6211155,41.9566027],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790825":{"id":"n1819790825","loc":[-85.6233106,41.9569294],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790839":{"id":"n1819790839","loc":[-85.625671,41.9564986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790842":{"id":"n1819790842","loc":[-85.6235252,41.9567379],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790844":{"id":"n1819790844","loc":[-85.6253813,41.9566342],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790847":{"id":"n1819790847","loc":[-85.6200963,41.9567702],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790849":{"id":"n1819790849","loc":[-85.6238031,41.9587449],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790851":{"id":"n1819790851","loc":[-85.6234984,41.9584571],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790856":{"id":"n1819790856","loc":[-85.6242226,41.9570092],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790865":{"id":"n1819790865","loc":[-85.6200265,41.9569458],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790869":{"id":"n1819790869","loc":[-85.6230049,41.9601245],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790871":{"id":"n1819790871","loc":[-85.6190727,41.9558322],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790873":{"id":"n1819790873","loc":[-85.6217442,41.9550104],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790875":{"id":"n1819790875","loc":[-85.6208044,41.9587808],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790879":{"id":"n1819790879","loc":[-85.6198444,41.9574484],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790883":{"id":"n1819790883","loc":[-85.623713,41.9588719],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790885":{"id":"n1819790885","loc":[-85.6223289,41.9605075],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790889":{"id":"n1819790889","loc":[-85.6208044,41.9562437],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790893":{"id":"n1819790893","loc":[-85.6218183,41.9559684],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790906":{"id":"n1819790906","loc":[-85.6214052,41.958697],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790913":{"id":"n1819790913","loc":[-85.6209981,41.9609957],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790917":{"id":"n1819790917","loc":[-85.6216208,41.9604436],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790919":{"id":"n1819790919","loc":[-85.6209406,41.9616373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790920":{"id":"n1819790920","loc":[-85.6221948,41.9583334],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790922":{"id":"n1819790922","loc":[-85.6216681,41.9615292],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790924":{"id":"n1819790924","loc":[-85.6210147,41.9570489],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790929":{"id":"n1819790929","loc":[-85.6193678,41.955521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"w17964707":{"id":"w17964707","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:31:34Z","tags":{"highway":"residential","name":"11th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"11th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314405","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960682","n185960684","n185960686","n185960688","n185960690"]},"w201484345":{"id":"w201484345","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"bridge":"yes","highway":"residential","name":"E Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978791","n185978795"]},"w201484348":{"id":"w201484348","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"highway":"residential","name":"E Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978795","n185978800","n185978803","n185978806","n185978808","n185978810","n185978811","n185978813","n185955747","n185978814","n185972054","n185978817"]},"w170843845":{"id":"w170843845","version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:23Z","tags":{"ele":"244","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624607","gnis:state_id":"26","landuse":"reservoir","name":"Hoffman Pond","natural":"water","source":"Bing"},"nodes":["n1819790732","n1819790742","n1819790825","n1819790729","n1819790842","n1819790765","n1819790737","n1819790856","n1819790643","n1819790596","n1819790844","n1819790839","n1819849190","n1819790619","n1819790613","n1819790669","n1819790550","n1819790682","n1819790701","n1819790790","n1819790532","n1819790887","n1819790740","n1819790831","n1819790545","n1819790664","n1819790621","n1819790861","n1819790730","n1819790683","n1819790802","n1819790717","n1819790710","n1819790713","n1819790650","n1819790873","n1819790814","n1819790755","n1819790715","n1819790818","n1819790602","n1819790893","n1819790662","n1819790699","n1819790772","n1819790771","n1819790680","n1819790794","n1819790727","n1819790628","n1819790661","n1819790784","n1819790610","n1819790626","n1819790929","n1819790656","n1819790871","n1819790673","n1819790566","n1819790820","n1819790676","n1819790598","n1819790556","n1819790558","n1819790879","n1819790608","n1819790813","n1819790789","n1819790865","n1819790847","n1819790758","n1819790548","n1819790539","n1819790889","n1819790557","n1819790586","n1819790571","n1819790823","n1819790546","n1819790924","n1819790785","n1819790708","n1819790786","n1819790561","n1819790804","n1819790788","n1819790684","n1819790711","n1819790875","n1819790672","n1819790569","n1819790757","n1819790769","n1819790603","n1819790906","n1819790553","n1819790536","n1819790678","n1819790920","n1819790600","n1819790733","n1819790743","n1819790567","n1819790764","n1819790722","n1819790638","n1819790917","n1819790800","n1819790741","n1819790667","n1819790913","n1819790744","n1819790816","n1819790591","n1819790745","n1819790885","n1819790652","n1819790588","n1819790617","n1819790551","n1819790666","n1819790869","n1819790630","n1819790723","n1819790792","n1819790783","n1819790681","n1819790919","n1819790593","n1819790670","n1819790777","n1819790922","n1819790562","n1819790736","n1819790565","n1819790801","n1819790538","n1819790640","n1819790616","n1819790572","n1819790620","n1819790883","n1819790849","n1819790675","n1819790851","n1819790803","n1819790611","n1819790703","n1819790734","n1819790793","n1819790614","n1819790581","n1819790776","n1819790797","n1819790728","n1819790584","n1819790624","n1819790604","n1819790725","n1819790732"]},"w206805240":{"id":"w206805240","version":"2","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:50Z","tags":{"waterway":"river"},"nodes":["n2168544738","n2168544739","n2168544740","n2168544741","n2168544742","n2168544743","n2168544744","n2168544745","n2168544746","n2168544747","n2168544748","n2168544749","n2168544750","n2168544751","n2168544752","n2168544753","n1819848944"]},"n394490429":{"id":"n394490429","loc":[-85.643883,41.954365],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n185953421":{"id":"n185953421","loc":[-85.641876,41.954946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185953417":{"id":"n185953417","loc":[-85.6418306,41.9551597],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185977233":{"id":"n185977233","loc":[-85.642987,41.95486],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:49Z","tags":{}},"n185977232":{"id":"n185977232","loc":[-85.642894,41.9547842],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1475293244":{"id":"n1475293244","loc":[-85.63974,41.9521543],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1819848890":{"id":"n1819848890","loc":[-85.6410004,41.9552822],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848965":{"id":"n1819848965","loc":[-85.6409795,41.9553892],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n2189015846":{"id":"n2189015846","loc":[-85.6420457,41.9549528],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015849":{"id":"n2189015849","loc":[-85.6425867,41.9551392],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015852":{"id":"n2189015852","loc":[-85.6426877,41.9549771],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2199109816":{"id":"n2199109816","loc":[-85.6399215,41.9540925],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109818":{"id":"n2199109818","loc":[-85.6399182,41.9538236],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109820":{"id":"n2199109820","loc":[-85.6402201,41.9538216],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109822":{"id":"n2199109822","loc":[-85.640222,41.9539771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109825":{"id":"n2199109825","loc":[-85.6402904,41.9539766],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109827":{"id":"n2199109827","loc":[-85.6402918,41.95409],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109829":{"id":"n2199109829","loc":[-85.6395845,41.9544626],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109831":{"id":"n2199109831","loc":[-85.6395792,41.9540671],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109833":{"id":"n2199109833","loc":[-85.6397173,41.9540661],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109835":{"id":"n2199109835","loc":[-85.6397226,41.9544616],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109837":{"id":"n2199109837","loc":[-85.6399641,41.9545058],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109839":{"id":"n2199109839","loc":[-85.6399637,41.9541859],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109841":{"id":"n2199109841","loc":[-85.6401098,41.9541858],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109843":{"id":"n2199109843","loc":[-85.64011,41.9543272],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109845":{"id":"n2199109845","loc":[-85.6400783,41.9543273],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109847":{"id":"n2199109847","loc":[-85.6400785,41.9545058],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109853":{"id":"n2199109853","loc":[-85.6396184,41.9554049],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109855":{"id":"n2199109855","loc":[-85.6396825,41.9553713],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n185949745":{"id":"n185949745","loc":[-85.6442727,41.9553112],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185949748":{"id":"n185949748","loc":[-85.6448804,41.9555238],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185949755":{"id":"n185949755","loc":[-85.6420011,41.9603536],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{}},"n185949763":{"id":"n185949763","loc":[-85.6408843,41.9555822],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185949765":{"id":"n185949765","loc":[-85.6414548,41.9557751],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185952158":{"id":"n185952158","loc":[-85.640066,41.956854],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185952160":{"id":"n185952160","loc":[-85.639848,41.957229],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185952161":{"id":"n185952161","loc":[-85.6396089,41.9576192],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185952163":{"id":"n185952163","loc":[-85.63892,41.957957],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185953413":{"id":"n185953413","loc":[-85.64162,41.955475],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185971651":{"id":"n185971651","loc":[-85.6440766,41.9543462],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185977234":{"id":"n185977234","loc":[-85.645044,41.955581],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:49Z","tags":{}},"n394490395":{"id":"n394490395","loc":[-85.657336,41.936762],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490396":{"id":"n394490396","loc":[-85.653896,41.936978],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490397":{"id":"n394490397","loc":[-85.653732,41.937386],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490398":{"id":"n394490398","loc":[-85.65182,41.937378],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490399":{"id":"n394490399","loc":[-85.651843,41.938445],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490400":{"id":"n394490400","loc":[-85.652536,41.938447],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490401":{"id":"n394490401","loc":[-85.652533,41.938901],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490402":{"id":"n394490402","loc":[-85.652084,41.9389],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490403":{"id":"n394490403","loc":[-85.6521,41.939627],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490404":{"id":"n394490404","loc":[-85.652301,41.939628],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490405":{"id":"n394490405","loc":[-85.652302,41.939755],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490406":{"id":"n394490406","loc":[-85.652783,41.939747],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490407":{"id":"n394490407","loc":[-85.652835,41.94112],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490408":{"id":"n394490408","loc":[-85.651968,41.941123],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490409":{"id":"n394490409","loc":[-85.651983,41.941969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490410":{"id":"n394490410","loc":[-85.652908,41.941961],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490411":{"id":"n394490411","loc":[-85.65292,41.94278],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490412":{"id":"n394490412","loc":[-85.651698,41.942816],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490413":{"id":"n394490413","loc":[-85.651509,41.942823],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490414":{"id":"n394490414","loc":[-85.651272,41.942837],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490415":{"id":"n394490415","loc":[-85.651272,41.943325],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490416":{"id":"n394490416","loc":[-85.65122,41.944053],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490417":{"id":"n394490417","loc":[-85.651193,41.944449],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490418":{"id":"n394490418","loc":[-85.651088,41.944969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490419":{"id":"n394490419","loc":[-85.650949,41.945554],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490420":{"id":"n394490420","loc":[-85.650907,41.945719],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490421":{"id":"n394490421","loc":[-85.650808,41.946016],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490422":{"id":"n394490422","loc":[-85.650712,41.946516],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490423":{"id":"n394490423","loc":[-85.650493,41.947166],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490424":{"id":"n394490424","loc":[-85.650626,41.947213],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490425":{"id":"n394490425","loc":[-85.650201,41.948109],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490426":{"id":"n394490426","loc":[-85.649868,41.948797],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490427":{"id":"n394490427","loc":[-85.649669,41.949161],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490428":{"id":"n394490428","loc":[-85.64659,41.954067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490430":{"id":"n394490430","loc":[-85.644034,41.95444],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490431":{"id":"n394490431","loc":[-85.644248,41.954507],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490432":{"id":"n394490432","loc":[-85.64491,41.954481],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490433":{"id":"n394490433","loc":[-85.645213,41.954433],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490434":{"id":"n394490434","loc":[-85.645426,41.954477],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490435":{"id":"n394490435","loc":[-85.6458,41.954704],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490436":{"id":"n394490436","loc":[-85.64605,41.954804],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490437":{"id":"n394490437","loc":[-85.646125,41.954817],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490438":{"id":"n394490438","loc":[-85.646002,41.954997],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490439":{"id":"n394490439","loc":[-85.645764,41.955366],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490440":{"id":"n394490440","loc":[-85.645525,41.955734],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490441":{"id":"n394490441","loc":[-85.64443,41.957424],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490442":{"id":"n394490442","loc":[-85.641712,41.961723],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490443":{"id":"n394490443","loc":[-85.640747,41.963246],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490444":{"id":"n394490444","loc":[-85.637803,41.967894],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490445":{"id":"n394490445","loc":[-85.637673,41.967861],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490446":{"id":"n394490446","loc":[-85.636637,41.969275],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490447":{"id":"n394490447","loc":[-85.634923,41.969269],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490448":{"id":"n394490448","loc":[-85.634893,41.968537],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490449":{"id":"n394490449","loc":[-85.634544,41.96927],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490450":{"id":"n394490450","loc":[-85.630835,41.969274],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490451":{"id":"n394490451","loc":[-85.630834,41.968348],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490452":{"id":"n394490452","loc":[-85.630857,41.968179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490453":{"id":"n394490453","loc":[-85.630924,41.968044],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490454":{"id":"n394490454","loc":[-85.631004,41.967925],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490455":{"id":"n394490455","loc":[-85.631143,41.967811],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490456":{"id":"n394490456","loc":[-85.631311,41.967736],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490457":{"id":"n394490457","loc":[-85.631595,41.967693],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490458":{"id":"n394490458","loc":[-85.63325,41.967702],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490459":{"id":"n394490459","loc":[-85.633247,41.967021],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490460":{"id":"n394490460","loc":[-85.634858,41.967021],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490461":{"id":"n394490461","loc":[-85.634865,41.967711],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490462":{"id":"n394490462","loc":[-85.634884,41.968231],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490463":{"id":"n394490463","loc":[-85.636559,41.963867],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490464":{"id":"n394490464","loc":[-85.634832,41.963866],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490465":{"id":"n394490465","loc":[-85.63481,41.961899],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490466":{"id":"n394490466","loc":[-85.637219,41.961842],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490467":{"id":"n394490467","loc":[-85.637837,41.960019],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490468":{"id":"n394490468","loc":[-85.637459,41.960022],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490469":{"id":"n394490469","loc":[-85.635295,41.959987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490470":{"id":"n394490470","loc":[-85.634783,41.959979],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490471":{"id":"n394490471","loc":[-85.634776,41.959834],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490472":{"id":"n394490472","loc":[-85.634767,41.959009],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490473":{"id":"n394490473","loc":[-85.634763,41.958292],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490474":{"id":"n394490474","loc":[-85.633346,41.958287],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490475":{"id":"n394490475","loc":[-85.632128,41.9583],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490476":{"id":"n394490476","loc":[-85.631414,41.958318],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490477":{"id":"n394490477","loc":[-85.63137,41.959033],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490478":{"id":"n394490478","loc":[-85.631325,41.959753],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490479":{"id":"n394490479","loc":[-85.631494,41.95977],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490480":{"id":"n394490480","loc":[-85.631456,41.960673],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490481":{"id":"n394490481","loc":[-85.631421,41.961494],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490482":{"id":"n394490482","loc":[-85.631404,41.961887],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490483":{"id":"n394490483","loc":[-85.631401,41.961968],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490484":{"id":"n394490484","loc":[-85.630962,41.961967],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490485":{"id":"n394490485","loc":[-85.6299,41.961973],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490486":{"id":"n394490486","loc":[-85.624929,41.962002],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490487":{"id":"n394490487","loc":[-85.623333,41.961987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490488":{"id":"n394490488","loc":[-85.621894,41.963956],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490489":{"id":"n394490489","loc":[-85.62131,41.963727],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490490":{"id":"n394490490","loc":[-85.621216,41.963868],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490491":{"id":"n394490491","loc":[-85.620356,41.965119],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490492":{"id":"n394490492","loc":[-85.620848,41.965341],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490493":{"id":"n394490493","loc":[-85.620684,41.965558],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490494":{"id":"n394490494","loc":[-85.620621,41.965658],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490495":{"id":"n394490495","loc":[-85.618165,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490496":{"id":"n394490496","loc":[-85.618071,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490497":{"id":"n394490497","loc":[-85.617986,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490498":{"id":"n394490498","loc":[-85.605673,41.965764],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490499":{"id":"n394490499","loc":[-85.605668,41.963548],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490500":{"id":"n394490500","loc":[-85.605664,41.962094],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490501":{"id":"n394490501","loc":[-85.595828,41.962159],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490502":{"id":"n394490502","loc":[-85.587869,41.962169],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490503":{"id":"n394490503","loc":[-85.586289,41.962179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490504":{"id":"n394490504","loc":[-85.583774,41.962178],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490505":{"id":"n394490505","loc":[-85.583774,41.961789],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490506":{"id":"n394490506","loc":[-85.581303,41.961783],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490507":{"id":"n394490507","loc":[-85.581304,41.961616],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490508":{"id":"n394490508","loc":[-85.581292,41.961616],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490509":{"id":"n394490509","loc":[-85.581247,41.959244],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490510":{"id":"n394490510","loc":[-85.581245,41.958394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490511":{"id":"n394490511","loc":[-85.581276,41.958372],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490512":{"id":"n394490512","loc":[-85.581302,41.958353],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490513":{"id":"n394490513","loc":[-85.581376,41.9583],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490514":{"id":"n394490514","loc":[-85.582256,41.957663],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490515":{"id":"n394490515","loc":[-85.585299,41.955483],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490516":{"id":"n394490516","loc":[-85.585588,41.955331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490517":{"id":"n394490517","loc":[-85.586053,41.955163],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490518":{"id":"n394490518","loc":[-85.58632,41.955076],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490519":{"id":"n394490519","loc":[-85.586478,41.955025],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490520":{"id":"n394490520","loc":[-85.58692,41.954947],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490521":{"id":"n394490521","loc":[-85.587327,41.954914],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490522":{"id":"n394490522","loc":[-85.587345,41.954913],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490523":{"id":"n394490523","loc":[-85.587358,41.954913],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490524":{"id":"n394490524","loc":[-85.58963,41.954877],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490525":{"id":"n394490525","loc":[-85.591077,41.954865],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490526":{"id":"n394490526","loc":[-85.594824,41.954843],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490527":{"id":"n394490527","loc":[-85.594804,41.95331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490528":{"id":"n394490528","loc":[-85.599336,41.95331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490529":{"id":"n394490529","loc":[-85.599336,41.954825],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490530":{"id":"n394490530","loc":[-85.597828,41.954839],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490531":{"id":"n394490531","loc":[-85.597833,41.95614],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490532":{"id":"n394490532","loc":[-85.596586,41.956151],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490533":{"id":"n394490533","loc":[-85.596586,41.956394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490534":{"id":"n394490534","loc":[-85.595933,41.956394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490535":{"id":"n394490535","loc":[-85.595933,41.958176],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490536":{"id":"n394490536","loc":[-85.597635,41.958179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490537":{"id":"n394490537","loc":[-85.597717,41.958177],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490538":{"id":"n394490538","loc":[-85.601671,41.958194],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490539":{"id":"n394490539","loc":[-85.605619,41.958194],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490540":{"id":"n394490540","loc":[-85.608054,41.958187],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490542":{"id":"n394490542","loc":[-85.6080762,41.9547864],"version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:47:47Z","tags":{}},"n394490545":{"id":"n394490545","loc":[-85.6104354,41.9548263],"version":"2","changeset":"12747630","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-16T08:22:38Z","tags":{}},"n394490546":{"id":"n394490546","loc":[-85.610274,41.951106],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490547":{"id":"n394490547","loc":[-85.610278,41.950829],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490548":{"id":"n394490548","loc":[-85.610309,41.948377],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490549":{"id":"n394490549","loc":[-85.610314,41.947986],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490550":{"id":"n394490550","loc":[-85.610464,41.947985],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490551":{"id":"n394490551","loc":[-85.610447,41.947468],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490552":{"id":"n394490552","loc":[-85.612469,41.947471],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490553":{"id":"n394490553","loc":[-85.612494,41.945576],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490554":{"id":"n394490554","loc":[-85.610292,41.94558],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490555":{"id":"n394490555","loc":[-85.608412,41.945625],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490556":{"id":"n394490556","loc":[-85.608412,41.943036],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490557":{"id":"n394490557","loc":[-85.608702,41.943087],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490558":{"id":"n394490558","loc":[-85.609196,41.943224],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490559":{"id":"n394490559","loc":[-85.609571,41.943263],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490560":{"id":"n394490560","loc":[-85.610116,41.943295],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490561":{"id":"n394490561","loc":[-85.610273,41.943275],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490562":{"id":"n394490562","loc":[-85.611339,41.943075],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490563":{"id":"n394490563","loc":[-85.611575,41.942997],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490564":{"id":"n394490564","loc":[-85.611847,41.942849],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490565":{"id":"n394490565","loc":[-85.612164,41.942568],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490566":{"id":"n394490566","loc":[-85.612341,41.942529],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490567":{"id":"n394490567","loc":[-85.612562,41.942524],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490568":{"id":"n394490568","loc":[-85.612768,41.942546],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490569":{"id":"n394490569","loc":[-85.612938,41.942633],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490570":{"id":"n394490570","loc":[-85.6131,41.942782],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490571":{"id":"n394490571","loc":[-85.613299,41.942919],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490572":{"id":"n394490572","loc":[-85.613498,41.942996],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490573":{"id":"n394490573","loc":[-85.614698,41.942842],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490574":{"id":"n394490574","loc":[-85.615288,41.942698],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490575":{"id":"n394490575","loc":[-85.616054,41.942693],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490576":{"id":"n394490576","loc":[-85.61603,41.942175],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490577":{"id":"n394490577","loc":[-85.616004,41.941741],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490578":{"id":"n394490578","loc":[-85.615994,41.940156],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490579":{"id":"n394490579","loc":[-85.615144,41.940159],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490580":{"id":"n394490580","loc":[-85.614915,41.940161],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490582":{"id":"n394490582","loc":[-85.614875,41.938532],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490583":{"id":"n394490583","loc":[-85.616167,41.938787],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490585":{"id":"n394490585","loc":[-85.616176,41.938589],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490586":{"id":"n394490586","loc":[-85.614537,41.938282],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490588":{"id":"n394490588","loc":[-85.610141,41.937459],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490589":{"id":"n394490589","loc":[-85.610172,41.937298],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490590":{"id":"n394490590","loc":[-85.609918,41.935495],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490592":{"id":"n394490592","loc":[-85.610092,41.935451],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490594":{"id":"n394490594","loc":[-85.610681,41.935247],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490595":{"id":"n394490595","loc":[-85.611446,41.934955],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490596":{"id":"n394490596","loc":[-85.612057,41.934696],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490598":{"id":"n394490598","loc":[-85.613256,41.934084],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490599":{"id":"n394490599","loc":[-85.613948,41.933682],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490601":{"id":"n394490601","loc":[-85.61436,41.933417],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490602":{"id":"n394490602","loc":[-85.614638,41.933212],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490604":{"id":"n394490604","loc":[-85.615249,41.9332],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490605":{"id":"n394490605","loc":[-85.618218,41.933223],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490607":{"id":"n394490607","loc":[-85.618241,41.933479],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490608":{"id":"n394490608","loc":[-85.618257,41.93365],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490609":{"id":"n394490609","loc":[-85.618298,41.935067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490611":{"id":"n394490611","loc":[-85.619791,41.935067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490612":{"id":"n394490612","loc":[-85.619794,41.933301],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490613":{"id":"n394490613","loc":[-85.619795,41.932692],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490614":{"id":"n394490614","loc":[-85.619729,41.929517],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490615":{"id":"n394490615","loc":[-85.619801,41.929305],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490616":{"id":"n394490616","loc":[-85.619809,41.927391],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490617":{"id":"n394490617","loc":[-85.620883,41.927378],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490618":{"id":"n394490618","loc":[-85.620988,41.927368],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490619":{"id":"n394490619","loc":[-85.621076,41.927368],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490620":{"id":"n394490620","loc":[-85.621156,41.927376],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490621":{"id":"n394490621","loc":[-85.621685,41.92737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490622":{"id":"n394490622","loc":[-85.624716,41.927359],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490623":{"id":"n394490623","loc":[-85.625308,41.92737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490624":{"id":"n394490624","loc":[-85.625655,41.927377],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490625":{"id":"n394490625","loc":[-85.625093,41.925591],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490626":{"id":"n394490626","loc":[-85.625174,41.92559],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490627":{"id":"n394490627","loc":[-85.625249,41.925597],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490628":{"id":"n394490628","loc":[-85.625532,41.925604],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490629":{"id":"n394490629","loc":[-85.625761,41.925597],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490630":{"id":"n394490630","loc":[-85.625955,41.926153],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490631":{"id":"n394490631","loc":[-85.626209,41.926155],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490632":{"id":"n394490632","loc":[-85.627757,41.926151],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490633":{"id":"n394490633","loc":[-85.627825,41.926298],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490634":{"id":"n394490634","loc":[-85.627994,41.926315],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490635":{"id":"n394490635","loc":[-85.628049,41.927196],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490636":{"id":"n394490636","loc":[-85.62949,41.927221],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490637":{"id":"n394490637","loc":[-85.629602,41.927277],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490638":{"id":"n394490638","loc":[-85.6297102,41.9273279],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{}},"n394490639":{"id":"n394490639","loc":[-85.630958,41.927398],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490699":{"id":"n394490699","loc":[-85.632741,41.927388],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490700":{"id":"n394490700","loc":[-85.632997,41.927391],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490701":{"id":"n394490701","loc":[-85.633149,41.927393],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490702":{"id":"n394490702","loc":[-85.633334,41.927393],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490703":{"id":"n394490703","loc":[-85.633468,41.927561],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490704":{"id":"n394490704","loc":[-85.633563,41.927755],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490705":{"id":"n394490705","loc":[-85.633662,41.928192],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490706":{"id":"n394490706","loc":[-85.633679,41.928807],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490707":{"id":"n394490707","loc":[-85.633687,41.929107],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490708":{"id":"n394490708","loc":[-85.633927,41.929109],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490709":{"id":"n394490709","loc":[-85.634126,41.929111],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490710":{"id":"n394490710","loc":[-85.634207,41.92911],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490711":{"id":"n394490711","loc":[-85.634323,41.929111],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490712":{"id":"n394490712","loc":[-85.636712,41.929128],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490713":{"id":"n394490713","loc":[-85.63808,41.9291],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490714":{"id":"n394490714","loc":[-85.639213,41.929088],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490715":{"id":"n394490715","loc":[-85.639189,41.92852],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490716":{"id":"n394490716","loc":[-85.639204,41.925488],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490717":{"id":"n394490717","loc":[-85.644204,41.925452],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490718":{"id":"n394490718","loc":[-85.651425,41.925406],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490719":{"id":"n394490719","loc":[-85.651449,41.926321],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490720":{"id":"n394490720","loc":[-85.651451,41.926969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490721":{"id":"n394490721","loc":[-85.651458,41.928052],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490722":{"id":"n394490722","loc":[-85.651446,41.928892],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490723":{"id":"n394490723","loc":[-85.651456,41.929447],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490724":{"id":"n394490724","loc":[-85.651707,41.929454],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490725":{"id":"n394490725","loc":[-85.652369,41.929473],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490726":{"id":"n394490726","loc":[-85.6525,41.929452],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490727":{"id":"n394490727","loc":[-85.654066,41.92946],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490728":{"id":"n394490728","loc":[-85.654816,41.92946],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490729":{"id":"n394490729","loc":[-85.654816,41.930337],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490730":{"id":"n394490730","loc":[-85.654587,41.930337],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490731":{"id":"n394490731","loc":[-85.654548,41.931072],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490732":{"id":"n394490732","loc":[-85.654538,41.931701],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490733":{"id":"n394490733","loc":[-85.654898,41.931689],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490734":{"id":"n394490734","loc":[-85.654898,41.932505],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490735":{"id":"n394490735","loc":[-85.654854,41.932514],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490736":{"id":"n394490736","loc":[-85.655497,41.932499],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490737":{"id":"n394490737","loc":[-85.656405,41.932493],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490738":{"id":"n394490738","loc":[-85.656422,41.933416],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490739":{"id":"n394490739","loc":[-85.657322,41.933438],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n1475293233":{"id":"n1475293233","loc":[-85.6385522,41.9585167],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{}},"n1475293242":{"id":"n1475293242","loc":[-85.64609,41.9540815],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293249":{"id":"n1475293249","loc":[-85.6358079,41.9692721],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293256":{"id":"n1475293256","loc":[-85.6387369,41.9581583],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293259":{"id":"n1475293259","loc":[-85.6455882,41.9541138],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1475293266":{"id":"n1475293266","loc":[-85.6451008,41.9541821],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1819800253":{"id":"n1819800253","loc":[-85.6134286,41.9429692],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n2114807558":{"id":"n2114807558","loc":[-85.6365609,41.963866],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{"railway":"level_crossing"}},"n2189015728":{"id":"n2189015728","loc":[-85.6383956,41.9590576],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015838":{"id":"n2189015838","loc":[-85.6435144,41.9563705],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015842":{"id":"n2189015842","loc":[-85.6415782,41.9557035],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015855":{"id":"n2189015855","loc":[-85.6440829,41.9554577],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2199109849":{"id":"n2199109849","loc":[-85.6393434,41.9565591],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109851":{"id":"n2199109851","loc":[-85.6393208,41.9565002],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109857":{"id":"n2199109857","loc":[-85.6401986,41.955545],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109859":{"id":"n2199109859","loc":[-85.6402362,41.955587],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109861":{"id":"n2199109861","loc":[-85.6395958,41.9565675],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109863":{"id":"n2199109863","loc":[-85.639528,41.9566011],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"w209717053":{"id":"w209717053","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109829","n2199109831","n2199109833","n2199109835","n2199109829"]},"w17966415":{"id":"w17966415","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"access":"private","highway":"service","name":"Manufacturing Way","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Manufacturing","tiger:name_type":"Way","tiger:reviewed":"no"},"nodes":["n185971642","n185977232","n185977233","n185949745","n185949748","n185977234"]},"w209717054":{"id":"w209717054","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109837","n2199109839","n2199109841","n2199109843","n2199109845","n2199109847","n2199109837"]},"w208627214":{"id":"w208627214","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949755","n2189015728","n1475293233","n1475293256","n185952163","n185952161","n185952160","n185952158","n185949763","n1819848965","n1819848890","n185952156"]},"w17963817":{"id":"w17963817","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"access":"private","highway":"service","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949765","n185953413","n185953417","n185953421","n185953423"]},"w34369809":{"id":"w34369809","version":"7","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:19Z","tags":{"admin_level":"8","boundary":"administrative","landuse":"residential","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490395","n394490396","n394490397","n394490398","n394490399","n394490400","n394490401","n394490402","n394490403","n394490404","n394490405","n394490406","n394490407","n394490408","n394490409","n394490410","n394490411","n394490412","n394490413","n394490414","n394490415","n394490416","n394490417","n394490418","n394490419","n394490420","n394490421","n394490422","n394490423","n394490424","n394490425","n394490426","n394490427","n394490428","n1475293242","n1475293259","n1475293266","n394490429","n394490430","n394490431","n394490432","n394490433","n394490434","n394490435","n394490436","n394490437","n394490438","n394490439","n394490440","n394490441","n394490442","n394490443","n394490444","n394490445","n394490446","n1475293249","n394490447","n394490448","n394490449","n394490450","n394490451","n394490452","n394490453","n394490454","n394490455","n394490456","n394490457","n394490458","n394490459","n394490460","n394490461","n394490462","n2114807558","n394490463","n1475293226","n394490464","n394490465","n394490466","n394490467","n394490468","n394490469","n394490470","n394490471","n394490472","n394490473","n394490474","n394490475","n394490476","n394490477","n394490478","n394490479","n394490480","n394490481","n394490482","n394490483","n394490484","n394490485","n394490486","n394490487","n394490488","n394490489","n394490490","n394490491","n394490492","n394490493","n394490494","n394490495","n394490496","n394490497","n394490498","n394490499","n394490500","n394490501","n394490502","n394490503","n394490504","n394490505","n394490506","n394490507","n394490508","n394490509","n394490510","n394490511","n394490512","n394490513","n394490514","n394490515","n394490516","n394490517","n394490518","n394490519","n394490520","n394490521","n394490522","n394490523","n394490524","n394490525","n394490526","n394490527","n394490528","n394490529","n394490530","n394490531","n394490532","n394490533","n394490534","n394490535","n394490536","n394490537","n394490538","n394490539","n394490540","n394490542","n394490545","n394490546","n394490547","n394490548","n394490549","n394490550","n394490551","n394490552","n394490553","n394490554","n394490555","n394490556","n394490557","n394490558","n394490559","n394490560","n394490561","n394490562","n394490563","n394490564","n394490565","n394490566","n394490567","n394490568","n394490569","n394490570","n394490571","n1819800253","n394490572","n394490573","n394490574","n394490575","n394490576","n394490577","n394490578","n394490579","n394490580","n394490582","n394490583","n394490585","n394490586","n394490588","n394490589","n394490590","n394490592","n394490594","n394490595","n394490596","n394490598","n394490599","n394490601","n394490602","n394490604","n394490605","n394490607","n394490608","n394490609","n394490611","n394490612","n394490613","n394490614","n394490615","n394490616","n394490617","n394490618","n394490619","n394490620","n394490621","n394490622","n394490623","n394490624","n394490625","n394490626","n394490627","n394490628","n394490629","n394490630","n394490631","n394490632","n394490633","n394490634","n394490635","n394490636","n394490637","n394490638","n394490639","n394490699","n394490700","n394490701","n394490702","n394490703","n394490704","n394490705","n394490706","n394490707","n394490708","n394490709","n394490710","n394490711","n394490712","n394490713","n394490714","n394490715","n394490716","n394490717","n394490718","n394490719","n394490720","n394490721","n394490722","n394490723","n394490724","n394490725","n394490726","n394490727","n394490728","n394490729","n394490730","n394490731","n394490732","n394490733","n394490734","n394490735","n394490736","n394490737","n394490738","n394490739","n394490395"]},"w208627221":{"id":"w208627221","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189015838","n2189015842","n2189015846","n2189015849","n2189015852","n2189015855","n2189015838"]},"w209717052":{"id":"w209717052","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109816","n2199109818","n2199109820","n2199109822","n2199109825","n2199109827","n2199109816"]},"w134151784":{"id":"w134151784","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"bridge":"yes","highway":"residential","name":"W Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312195:15312958:15312207:15313273:15328372:15328373","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185971648","n185971651"]},"w209717055":{"id":"w209717055","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","landuse":"basin"},"nodes":["n2199109849","n2199109851","n2199109853","n2199109855","n2199109857","n2199109859","n2199109861","n2199109863","n2199109849"]},"w17967763":{"id":"w17967763","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:04Z","tags":{"highway":"residential","name":"Rock River Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Rock River","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312230:15312252:15335064:15333550","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n1475293244","n185982166","n185975067","n185971637"]},"r134949":{"id":"r134949","version":"2","changeset":"14979874","user":"malenki","uid":"39504","visible":"true","timestamp":"2013-02-10T12:18:08Z","tags":{"admin_level":"8","border_type":"city","boundary":"administrative","is_in":"USA, Michigan","is_in:country":"USA","is_in:country_code":"US","is_in:iso_3166_2":"US:MI","is_in:state":"Michigan","is_in:state_code":"MI","name":"Three Rivers","place":"city","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)","tiger:CLASSFP":"C5","tiger:CPI":"Y","tiger:FUNCSTAT":"A","tiger:LSAD":"25","tiger:MTFCC":"G4110","tiger:NAME":"Three Rivers","tiger:NAMELSAD":"Three Rivers city","tiger:PCICBSA":"N","tiger:PCINECTA":"N","tiger:PLACEFP":"79760","tiger:PLACENS":"01627164","tiger:PLCIDFP":"2679760","tiger:STATEFP":"26","type":"boundary","wikipedia":"en:Three Rivers, Michigan"},"members":[{"id":"w34369809","type":"way","role":"outer"},{"id":"w34369821","type":"way","role":"outer"},{"id":"w34369822","type":"way","role":"outer"},{"id":"w34369823","type":"way","role":"outer"},{"id":"w34369824","type":"way","role":"outer"},{"id":"w34369825","type":"way","role":"outer"},{"id":"w34369826","type":"way","role":"outer"},{"id":"w34369810","type":"way","role":"inner"},{"id":"w34369811","type":"way","role":"inner"},{"id":"w34369812","type":"way","role":"inner"},{"id":"w34367079","type":"way","role":"inner"},{"id":"w34369814","type":"way","role":"inner"},{"id":"w34367080","type":"way","role":"inner"},{"id":"w34369815","type":"way","role":"inner"},{"id":"w34369820","type":"way","role":"inner"}]},"n1819848881":{"id":"n1819848881","loc":[-85.638562,41.9569965],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848947":{"id":"n1819848947","loc":[-85.6384348,41.9576565],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819849044":{"id":"n1819849044","loc":[-85.6385749,41.9573345],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n2114807547":{"id":"n2114807547","loc":[-85.6384626,41.9583756],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807564":{"id":"n2114807564","loc":[-85.638535,41.9581283],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015691":{"id":"n2189015691","loc":[-85.6435584,41.9565243],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015696":{"id":"n2189015696","loc":[-85.6435805,41.9566049],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015722":{"id":"n2189015722","loc":[-85.6435035,41.9567438],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015744":{"id":"n2189015744","loc":[-85.6437991,41.9569582],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015747":{"id":"n2189015747","loc":[-85.6433042,41.9567742],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015750":{"id":"n2189015750","loc":[-85.6433827,41.9566844],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015753":{"id":"n2189015753","loc":[-85.6430447,41.9565588],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015756":{"id":"n2189015756","loc":[-85.6431111,41.956451],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015759":{"id":"n2189015759","loc":[-85.6420247,41.956083],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015760":{"id":"n2189015760","loc":[-85.6419945,41.9561369],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015764":{"id":"n2189015764","loc":[-85.6413729,41.9558945],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015766":{"id":"n2189015766","loc":[-85.6412884,41.9560606],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015770":{"id":"n2189015770","loc":[-85.6411798,41.9560112],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015771":{"id":"n2189015771","loc":[-85.6410651,41.9562132],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015774":{"id":"n2189015774","loc":[-85.6409504,41.9561728],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015778":{"id":"n2189015778","loc":[-85.6407996,41.9564241],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015781":{"id":"n2189015781","loc":[-85.6406889,41.9563892],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015785":{"id":"n2189015785","loc":[-85.6404857,41.9567024],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015789":{"id":"n2189015789","loc":[-85.6406909,41.9567877],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015793":{"id":"n2189015793","loc":[-85.6405642,41.9570165],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015796":{"id":"n2189015796","loc":[-85.6415359,41.9573711],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015800":{"id":"n2189015800","loc":[-85.6411738,41.9579501],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015804":{"id":"n2189015804","loc":[-85.6411119,41.957921],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015808":{"id":"n2189015808","loc":[-85.6403186,41.9591751],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015909":{"id":"n2189015909","loc":[-85.6389293,41.9564636],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015926":{"id":"n2189015926","loc":[-85.6385431,41.9564617],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015929":{"id":"n2189015929","loc":[-85.6385457,41.9561823],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015932":{"id":"n2189015932","loc":[-85.6389319,41.9561843],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2199109865":{"id":"n2199109865","loc":[-85.6400768,41.956776],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109867":{"id":"n2199109867","loc":[-85.639902,41.9567153],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109869":{"id":"n2199109869","loc":[-85.640004,41.956553],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109871":{"id":"n2199109871","loc":[-85.6401788,41.9566137],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109873":{"id":"n2199109873","loc":[-85.6399316,41.9564506],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"man_made":"water_tower"}},"n2199109876":{"id":"n2199109876","loc":[-85.6397689,41.9572354],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109878":{"id":"n2199109878","loc":[-85.6399229,41.9569826],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109880":{"id":"n2199109880","loc":[-85.639706,41.9569095],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109882":{"id":"n2199109882","loc":[-85.639552,41.9571623],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109884":{"id":"n2199109884","loc":[-85.6391028,41.9569517],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109886":{"id":"n2199109886","loc":[-85.6392876,41.956646],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109888":{"id":"n2199109888","loc":[-85.639484,41.9567117],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109889":{"id":"n2199109889","loc":[-85.6394322,41.9567973],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109890":{"id":"n2199109890","loc":[-85.6393718,41.9567771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109891":{"id":"n2199109891","loc":[-85.6392387,41.9569972],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n1819848900":{"id":"n1819848900","loc":[-85.638281,41.9576578],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848978":{"id":"n1819848978","loc":[-85.6377186,41.9580867],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849039":{"id":"n1819849039","loc":[-85.6384217,41.9573405],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849050":{"id":"n1819849050","loc":[-85.6377011,41.9570042],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849088":{"id":"n1819849088","loc":[-85.6382879,41.9580817],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n2114807549":{"id":"n2114807549","loc":[-85.6362551,41.96473],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807587":{"id":"n2114807587","loc":[-85.6368694,41.9629829],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015725":{"id":"n2189015725","loc":[-85.644156,41.9569753],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015741":{"id":"n2189015741","loc":[-85.6419825,41.9597632],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"w208627217":{"id":"w208627217","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015741","n2189015744","n2189015747","n2189015750","n2189015753","n2189015756","n2189015759","n2189015760","n2189015764","n2189015766","n2189015770","n2189015771","n2189015774","n2189015778","n2189015781","n2189015785","n2189015789","n2189015793","n2189015796","n2189015800","n2189015804","n2189015808","n2189015741"]},"w208627212":{"id":"w208627212","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"highway":"service"},"nodes":["n2189015691","n2189015696","n2189015722","n2189015725"]},"w209717057":{"id":"w209717057","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109876","n2199109878","n2199109880","n2199109882","n2199109876"]},"w209717056":{"id":"w209717056","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109865","n2199109867","n2199109869","n2199109871","n2199109865"]},"w208627231":{"id":"w208627231","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015909","n2189015926","n2189015929","n2189015932","n2189015909"]},"w170848326":{"id":"w170848326","version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{"building":"yes","source":"Bing"},"nodes":["n1819848881","n1819849050","n1819848978","n1819849088","n1819848900","n1819848947","n1819849039","n1819849044","n1819848881"]},"w17963182":{"id":"w17963182","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949763","n185949765","n2189015691","n185949745"]},"w201484340":{"id":"w201484340","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807565","n2114807564","n2114807547","n2114807587","n2114807558","n2114807549","n2114807593"]},"w209717058":{"id":"w209717058","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109884","n2199109886","n2199109888","n2199109889","n2199109890","n2199109891","n2199109884"]},"n185954650":{"id":"n185954650","loc":[-85.627331,41.957439],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:31Z","tags":{}},"n185966949":{"id":"n185966949","loc":[-85.626868,41.957314],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185989335":{"id":"n185989335","loc":[-85.62529,41.958568],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989337":{"id":"n185989337","loc":[-85.624962,41.958453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989339":{"id":"n185989339","loc":[-85.624832,41.958399],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989340":{"id":"n185989340","loc":[-85.624707,41.958325],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989342":{"id":"n185989342","loc":[-85.624636,41.958251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989345":{"id":"n185989345","loc":[-85.624578,41.95818],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989347":{"id":"n185989347","loc":[-85.624533,41.958099],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989349":{"id":"n185989349","loc":[-85.624507,41.957985],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989351":{"id":"n185989351","loc":[-85.624495,41.957807],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989353":{"id":"n185989353","loc":[-85.624514,41.957663],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989354":{"id":"n185989354","loc":[-85.624577,41.957593],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989356":{"id":"n185989356","loc":[-85.624685,41.95754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989357":{"id":"n185989357","loc":[-85.624802,41.957523],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989359":{"id":"n185989359","loc":[-85.624996,41.957524],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989361":{"id":"n185989361","loc":[-85.625409,41.957515],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989364":{"id":"n185989364","loc":[-85.625634,41.957496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989367":{"id":"n185989367","loc":[-85.625832,41.957453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989368":{"id":"n185989368","loc":[-85.626044,41.957394],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n354031352":{"id":"n354031352","loc":[-85.6252778,41.9586111],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:26Z","tags":{"amenity":"place_of_worship","denomination":"baptist","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417873","gnis:state_id":"26","name":"First Baptist Church","religion":"christian"}},"n2199109892":{"id":"n2199109892","loc":[-85.6261578,41.9589963],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109893":{"id":"n2199109893","loc":[-85.6263191,41.9586865],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109894":{"id":"n2199109894","loc":[-85.6261186,41.9586288],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109895":{"id":"n2199109895","loc":[-85.6260644,41.9587329],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109896":{"id":"n2199109896","loc":[-85.6261547,41.9587589],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109898":{"id":"n2199109898","loc":[-85.6260476,41.9589646],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n185966951":{"id":"n185966951","loc":[-85.628404,41.957438],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"w17965351":{"id":"w17965351","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:20Z","tags":{"highway":"residential","name":"Flower Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Flower","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185966948","n185966949","n185954650","n185966951","n185966953","n185966955","n185966957"]},"w17967809":{"id":"w17967809","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Azaleamum Drive","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Azaleamum","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185982197","n185989335","n185989337","n185989339","n185989340","n185989342","n185989345","n185989347","n185989349","n185989351","n185989353","n185989354","n185989356","n185989357","n185989359","n185989361","n185989364","n185989367","n185989368","n185982196"]},"w209717059":{"id":"w209717059","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109892","n2199109893","n2199109894","n2199109895","n2199109896","n2199109898","n2199109892"]},"n185961390":{"id":"n185961390","loc":[-85.63137,41.959033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185961393":{"id":"n185961393","loc":[-85.634315,41.959017],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"w17966214":{"id":"w17966214","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Adams Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185975351","n185967434","n185968108"]},"w17964793":{"id":"w17964793","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:32:05Z","tags":{"highway":"residential","name":"Morris Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Morris","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312148:15328241:15328242","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185961389","n185961390","n185961391","n185961393","n185961396"]},"n185952166":{"id":"n185952166","loc":[-85.638174,41.95831],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:11Z","tags":{}},"n2114807552":{"id":"n2114807552","loc":[-85.6383526,41.9593788],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807591":{"id":"n2114807591","loc":[-85.6383741,41.9593968],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015731":{"id":"n2189015731","loc":[-85.6368404,41.9592785],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015734":{"id":"n2189015734","loc":[-85.6368404,41.9585918],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015737":{"id":"n2189015737","loc":[-85.6376009,41.9585918],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015738":{"id":"n2189015738","loc":[-85.6376009,41.9592785],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015897":{"id":"n2189015897","loc":[-85.6376839,41.9566137],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015900":{"id":"n2189015900","loc":[-85.6376831,41.9564865],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015903":{"id":"n2189015903","loc":[-85.6381161,41.9564851],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015906":{"id":"n2189015906","loc":[-85.6381168,41.9566122],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015937":{"id":"n2189015937","loc":[-85.6364789,41.9590634],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015940":{"id":"n2189015940","loc":[-85.6361137,41.9590672],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015943":{"id":"n2189015943","loc":[-85.6361169,41.9594033],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015945":{"id":"n2189015945","loc":[-85.6363456,41.9594021],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015952":{"id":"n2189015952","loc":[-85.636112,41.958892],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015955":{"id":"n2189015955","loc":[-85.6364757,41.9588894],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015957":{"id":"n2189015957","loc":[-85.6364729,41.9586747],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015958":{"id":"n2189015958","loc":[-85.6361103,41.9586765],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015959":{"id":"n2189015959","loc":[-85.6364719,41.9585562],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015960":{"id":"n2189015960","loc":[-85.6361093,41.958558],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015961":{"id":"n2189015961","loc":[-85.6355494,41.9586403],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015962":{"id":"n2189015962","loc":[-85.635549,41.9584711],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015963":{"id":"n2189015963","loc":[-85.6351831,41.9584715],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015964":{"id":"n2189015964","loc":[-85.6351834,41.9586408],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015966":{"id":"n2189015966","loc":[-85.6359579,41.9586359],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015968":{"id":"n2189015968","loc":[-85.6359561,41.9585465],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015971":{"id":"n2189015971","loc":[-85.6355476,41.9585509],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015974":{"id":"n2189015974","loc":[-85.6359516,41.9592934],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015977":{"id":"n2189015977","loc":[-85.635949,41.9586697],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015980":{"id":"n2189015980","loc":[-85.6351329,41.9586716],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015983":{"id":"n2189015983","loc":[-85.6351318,41.9583949],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015986":{"id":"n2189015986","loc":[-85.6349148,41.9583954],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015989":{"id":"n2189015989","loc":[-85.6349186,41.9592958],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015995":{"id":"n2189015995","loc":[-85.6360173,41.9593286],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015998":{"id":"n2189015998","loc":[-85.6360278,41.9583079],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2114807550":{"id":"n2114807550","loc":[-85.6383392,41.9595404],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807551":{"id":"n2114807551","loc":[-85.6375855,41.9616107],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807559":{"id":"n2114807559","loc":[-85.6373978,41.9621273],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807562":{"id":"n2114807562","loc":[-85.6373361,41.9622609],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807563":{"id":"n2114807563","loc":[-85.6376472,41.9613953],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807574":{"id":"n2114807574","loc":[-85.636974,41.9627695],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807589":{"id":"n2114807589","loc":[-85.6383017,41.9595005],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807592":{"id":"n2114807592","loc":[-85.6377169,41.9613494],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807595":{"id":"n2114807595","loc":[-85.6371081,41.962574],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015934":{"id":"n2189015934","loc":[-85.6364855,41.9595098],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015949":{"id":"n2189015949","loc":[-85.6363466,41.9595105],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"w208627244":{"id":"w208627244","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"highway":"service"},"nodes":["n2189015992","n2189015995","n2189015998"]},"w208627240":{"id":"w208627240","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015961","n2189015971","n2189015962","n2189015963","n2189015964","n2189015961"]},"w17967437":{"id":"w17967437","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:44Z","tags":{"highway":"residential","name":"Lyman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lyman","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313234","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185964361","n185984024"]},"w208627237":{"id":"w208627237","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015955","n2189015957","n2189015958","n2189015952","n2189015955"]},"w17967465":{"id":"w17967465","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:57Z","tags":{"highway":"residential","name":"W Adams St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312177","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978394","n185984022","n185964360"]},"w208627228":{"id":"w208627228","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015897","n2189015900","n2189015903","n2189015906","n2189015897"]},"w201484351":{"id":"w201484351","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807587","n2114807574","n2114807595","n2114807562","n2114807559","n2114807551","n2114807563","n2114807589","n2114807552"]},"w208627239":{"id":"w208627239","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015957","n2189015959","n2189015960","n2189015958","n2189015957"]},"w208627233":{"id":"w208627233","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015934","n2189015937","n2189015940","n2189015943","n2189015945","n2189015949","n2189015934"]},"w208627241":{"id":"w208627241","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015961","n2189015966","n2189015968","n2189015971","n2189015961"]},"w17967970":{"id":"w17967970","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:55:20Z","tags":{"highway":"residential","name":"Adams St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312180","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975351","n185978394"]},"w208627235":{"id":"w208627235","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015940","n2189015952","n2189015955","n2189015937","n2189015940"]},"w17965468":{"id":"w17965468","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:56Z","tags":{"highway":"residential","name":"Armstrong Blvd","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armstrong","tiger:name_type":"Blvd","tiger:reviewed":"no"},"nodes":["n185967917","n2189015998","n185967918","n185964362","n185952166"]},"w201484346":{"id":"w201484346","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807551","n2114807592","n2114807550","n2114807591"]},"w208627242":{"id":"w208627242","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189015974","n2189015977","n2189015980","n2189015983","n2189015986","n2189015989","n2189015974"]},"w208627216":{"id":"w208627216","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015731","n2189015734","n2189015737","n2189015738","n2189015731"]},"n185984309":{"id":"n185984309","loc":[-85.631421,41.961494],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:55Z","tags":{}},"n185987987":{"id":"n185987987","loc":[-85.631456,41.960673],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:29Z","tags":{}},"n185965397":{"id":"n185965397","loc":[-85.634603,41.959838],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"w17965196":{"id":"w17965196","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:10Z","tags":{"highway":"residential","name":"Burke Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Burke","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312145","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965395","n185965397","n185965399"]},"w17967215":{"id":"w17967215","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:56Z","tags":{"highway":"residential","name":"Kellogg Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kellogg","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185968114","n185984309","n185967440","n185978402"]},"w17967597":{"id":"w17967597","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"highway":"residential","name":"Barnard Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Barnard","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185968112","n185987987","n185967438","n185978399"]},"n394490857":{"id":"n394490857","loc":[-85.633952,41.960664],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:00Z","tags":{}},"n394490858":{"id":"n394490858","loc":[-85.633938,41.960227],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:00Z","tags":{}},"n394490859":{"id":"n394490859","loc":[-85.634794,41.960212],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490860":{"id":"n394490860","loc":[-85.634815,41.960662],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490861":{"id":"n394490861","loc":[-85.634103,41.961268],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490862":{"id":"n394490862","loc":[-85.634103,41.961001],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490863":{"id":"n394490863","loc":[-85.634504,41.961003],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490864":{"id":"n394490864","loc":[-85.634561,41.961269],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n1057629869":{"id":"n1057629869","loc":[-85.6382599,41.9612134],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:10Z","tags":{}},"n1057629937":{"id":"n1057629937","loc":[-85.6380035,41.9616137],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:11Z","tags":{}},"n2189016014":{"id":"n2189016014","loc":[-85.6360365,41.9626496],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016017":{"id":"n2189016017","loc":[-85.6360374,41.9623228],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016020":{"id":"n2189016020","loc":[-85.6367557,41.9623239],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016022":{"id":"n2189016022","loc":[-85.6367566,41.9619919],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016025":{"id":"n2189016025","loc":[-85.6351794,41.9619893],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016028":{"id":"n2189016028","loc":[-85.6351788,41.9622011],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016031":{"id":"n2189016031","loc":[-85.6350855,41.9622009],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016034":{"id":"n2189016034","loc":[-85.6350845,41.962527],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016037":{"id":"n2189016037","loc":[-85.6352732,41.9625273],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016039":{"id":"n2189016039","loc":[-85.6352738,41.9623178],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016042":{"id":"n2189016042","loc":[-85.6357712,41.9623186],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016044":{"id":"n2189016044","loc":[-85.6357702,41.9626492],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n1057629880":{"id":"n1057629880","loc":[-85.638817,41.9619017],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:10Z","tags":{}},"n1057629923":{"id":"n1057629923","loc":[-85.6390733,41.9615014],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:11Z","tags":{}},"w91092312":{"id":"w91092312","version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:12Z","tags":{"power":"station"},"nodes":["n1057629923","n1057629869","n1057629937","n1057629880","n1057629923"]},"w34369826":{"id":"w34369826","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490861","n394490862","n394490863","n394490864","n394490861"]},"w34369825":{"id":"w34369825","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490857","n394490858","n394490859","n394490860","n394490857"]},"w208627248":{"id":"w208627248","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189016014","n2189016017","n2189016020","n2189016022","n2189016025","n2189016028","n2189016031","n2189016034","n2189016037","n2189016039","n2189016042","n2189016044","n2189016014"]},"n394490766":{"id":"n394490766","loc":[-85.616777,41.955642],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490768":{"id":"n394490768","loc":[-85.617239,41.955644],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490792":{"id":"n394490792","loc":[-85.619034,41.95543],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n185972055":{"id":"n185972055","loc":[-85.6185905,41.9568211],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972057":{"id":"n185972057","loc":[-85.6186688,41.9570086],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972059":{"id":"n185972059","loc":[-85.6186924,41.9581453],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972060":{"id":"n185972060","loc":[-85.6187082,41.9588211],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{"highway":"turning_circle","source":"Bing"}},"n1819790724":{"id":"n1819790724","loc":[-85.6182155,41.9555703],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790735":{"id":"n1819790735","loc":[-85.6184059,41.9566188],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790799":{"id":"n1819790799","loc":[-85.6182372,41.9563771],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790896":{"id":"n1819790896","loc":[-85.6181431,41.9557227],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n185971405":{"id":"n185971405","loc":[-85.6186766,41.9577468],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971565":{"id":"n185971565","loc":[-85.6181613,41.9560879],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185967985":{"id":"n185967985","loc":[-85.6186798,41.9585791],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955753":{"id":"n185955753","loc":[-85.620773,41.9555854],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955755":{"id":"n185955755","loc":[-85.6212652,41.9559891],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955748":{"id":"n185955748","loc":[-85.620722,41.954858],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185955751":{"id":"n185955751","loc":[-85.6206912,41.955367],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185967987":{"id":"n185967987","loc":[-85.6159351,41.9585809],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971407":{"id":"n185971407","loc":[-85.6159142,41.9577578],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971570":{"id":"n185971570","loc":[-85.6162248,41.95603],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971572":{"id":"n185971572","loc":[-85.6160402,41.9560749],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971574":{"id":"n185971574","loc":[-85.61593,41.956201],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185981301":{"id":"n185981301","loc":[-85.6158973,41.9581601],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n394490762":{"id":"n394490762","loc":[-85.617193,41.954706],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490764":{"id":"n394490764","loc":[-85.616773,41.954737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490787":{"id":"n394490787","loc":[-85.618972,41.954737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490790":{"id":"n394490790","loc":[-85.619046,41.954929],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490794":{"id":"n394490794","loc":[-85.619922,41.955296],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490796":{"id":"n394490796","loc":[-85.61991,41.95501],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490798":{"id":"n394490798","loc":[-85.619974,41.954751],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n1819790677":{"id":"n1819790677","loc":[-85.6187031,41.9550522],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790787":{"id":"n1819790787","loc":[-85.6186436,41.9552022],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790828":{"id":"n1819790828","loc":[-85.6185127,41.9553393],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"w17966857":{"id":"w17966857","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:47:55Z","tags":{"access":"private","highway":"service","name":"Sable River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Sable River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326128","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972059","n185981301"]},"w34369814":{"id":"w34369814","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490787","n394490790","n394490792","n394490794","n394490796","n394490798","n394490787"]},"w17964176":{"id":"w17964176","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:27:42Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314404","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955747","n185955748","n185955751","n185955753","n185955755"]},"w17965838":{"id":"w17965838","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:09Z","tags":{"access":"private","highway":"service","name":"Pine River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Pine River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326123","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971405","n185971407"]},"w17965476":{"id":"w17965476","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:37:16Z","tags":{"access":"private","highway":"service","name":"Raisin River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Raisin River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326112","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185967985","n185967987"]},"w17965913":{"id":"w17965913","version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:06Z","tags":{"access":"private","highway":"service","name":"Shiawassee River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Shiawassee River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326124:15326125:15326111:15326113:15326119","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972054","n1819790677","n1819790787","n1819790828","n1819790724","n1819790896","n185971565","n1819790799","n1819790735","n185972055","n185972057","n185971405","n185972059","n185967985","n185972060"]},"w34369811":{"id":"w34369811","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490762","n394490764","n394490766","n394490768","n394490762"]},"w17965854":{"id":"w17965854","version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:06Z","tags":{"access":"private","highway":"service","name":"Sturgeon River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Sturgeon River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326117","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971565","n185971570","n185971572","n185971574"]},"n2139795769":{"id":"n2139795769","loc":[-85.6250804,41.9608796],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795770":{"id":"n2139795770","loc":[-85.6250315,41.9613684],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795771":{"id":"n2139795771","loc":[-85.6249671,41.9614362],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795772":{"id":"n2139795772","loc":[-85.6249698,41.961522],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795773":{"id":"n2139795773","loc":[-85.6250798,41.9615838],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795774":{"id":"n2139795774","loc":[-85.6252273,41.9615639],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795775":{"id":"n2139795775","loc":[-85.6252863,41.9614622],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795776":{"id":"n2139795776","loc":[-85.6252273,41.9613764],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795777":{"id":"n2139795777","loc":[-85.6251227,41.9613525],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795778":{"id":"n2139795778","loc":[-85.6249564,41.9612527],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795779":{"id":"n2139795779","loc":[-85.6249846,41.9610254],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795780":{"id":"n2139795780","loc":[-85.6266725,41.9599647],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795781":{"id":"n2139795781","loc":[-85.6259162,41.9599711],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795782":{"id":"n2139795782","loc":[-85.6257185,41.960019],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795783":{"id":"n2139795783","loc":[-85.6255509,41.9601213],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n185963539":{"id":"n185963539","loc":[-85.615718,41.983893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:58Z","tags":{}},"n185964418":{"id":"n185964418","loc":[-85.616626,42.049512],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:23Z","tags":{}},"n185966614":{"id":"n185966614","loc":[-85.615514,41.976603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:41Z","tags":{}},"n185966635":{"id":"n185966635","loc":[-85.616118,42.013017],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:42Z","tags":{}},"n185969040":{"id":"n185969040","loc":[-85.615632,41.972357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:45Z","tags":{}},"n185969070":{"id":"n185969070","loc":[-85.619145,41.967648],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:46Z","tags":{}},"n185972156":{"id":"n185972156","loc":[-85.621894,41.963956],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972157":{"id":"n185972157","loc":[-85.621806,41.964077],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972158":{"id":"n185972158","loc":[-85.620848,41.965341],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972159":{"id":"n185972159","loc":[-85.620684,41.965558],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972160":{"id":"n185972160","loc":[-85.620621,41.965658],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972161":{"id":"n185972161","loc":[-85.617844,41.969359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972162":{"id":"n185972162","loc":[-85.616843,41.97068],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972164":{"id":"n185972164","loc":[-85.616714,41.970839],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972166":{"id":"n185972166","loc":[-85.615879,41.971969],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972168":{"id":"n185972168","loc":[-85.615748,41.972159],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972170":{"id":"n185972170","loc":[-85.615589,41.972502],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972172":{"id":"n185972172","loc":[-85.615542,41.972733],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972175":{"id":"n185972175","loc":[-85.615524,41.972947],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972177":{"id":"n185972177","loc":[-85.615512,41.973715],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972179":{"id":"n185972179","loc":[-85.615513,41.976496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972180":{"id":"n185972180","loc":[-85.615538,41.977246],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972181":{"id":"n185972181","loc":[-85.61558,41.982139],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972184":{"id":"n185972184","loc":[-85.61557,41.983317],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972186":{"id":"n185972186","loc":[-85.615591,41.983463],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972188":{"id":"n185972188","loc":[-85.615763,41.984146],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972190":{"id":"n185972190","loc":[-85.615814,41.98435],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972192":{"id":"n185972192","loc":[-85.615965,41.998453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972194":{"id":"n185972194","loc":[-85.615982,42.001237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972195":{"id":"n185972195","loc":[-85.616055,42.00555],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972197":{"id":"n185972197","loc":[-85.616134,42.014887],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972199":{"id":"n185972199","loc":[-85.616177,42.018465],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972201":{"id":"n185972201","loc":[-85.616298,42.027627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972203":{"id":"n185972203","loc":[-85.616513,42.042212],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"w203968015":{"id":"w203968015","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential"},"nodes":["n2139795768","n2139795769"]},"w17965932":{"id":"w17965932","version":"2","changeset":"14531170","user":"bot-mode","uid":"451693","visible":"true","timestamp":"2013-01-04T21:15:18Z","tags":{"highway":"residential","name":"Buckhorn Road","name_1":"County Highway 122","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Buckhorn","tiger:name_base_1":"County Highway 122","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972155","n185972156","n185972157","n185972158","n185972159","n185972160","n185969070","n185972161","n185972162","n185972164","n185972166","n185972168","n185969040","n185972170","n185972172","n185972175","n185972177","n185972179","n185966614","n185972180","n185972181","n185972184","n185972186","n185963539","n185972188","n185972190","n185972192","n185972194","n185972195","n185966635","n185972197","n185972199","n185972201","n185972203","n185964418"]},"w203968016":{"id":"w203968016","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential","name":"New Jersey Court"},"nodes":["n2139795770","n2139795771","n2139795772","n2139795773","n2139795774","n2139795775","n2139795776","n2139795777","n2139795770","n2139795778","n2139795779","n2139795769"]},"w203968017":{"id":"w203968017","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential","name":"Oklahoma Drive"},"nodes":["n2139795780","n2139795781","n2139795782","n2139795783","n2139795769"]},"n1819790528":{"id":"n1819790528","loc":[-85.6184827,41.960025],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790530":{"id":"n1819790530","loc":[-85.6168626,41.9605834],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790534":{"id":"n1819790534","loc":[-85.6197379,41.9617163],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790541":{"id":"n1819790541","loc":[-85.6198881,41.9620833],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790543":{"id":"n1819790543","loc":[-85.619695,41.9619397],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790547":{"id":"n1819790547","loc":[-85.6190298,41.9609504],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790555":{"id":"n1819790555","loc":[-85.6180471,41.9609788],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790559":{"id":"n1819790559","loc":[-85.6203817,41.9605436],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790583":{"id":"n1819790583","loc":[-85.6201564,41.9603282],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790590":{"id":"n1819790590","loc":[-85.617045,41.9598894],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790609":{"id":"n1819790609","loc":[-85.6177638,41.9598495],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790618":{"id":"n1819790618","loc":[-85.6195234,41.9610143],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790642":{"id":"n1819790642","loc":[-85.6181179,41.9627933],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790659":{"id":"n1819790659","loc":[-85.6174634,41.962897],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790665":{"id":"n1819790665","loc":[-85.6170343,41.9630885],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790674":{"id":"n1819790674","loc":[-85.6194697,41.9601925],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790685":{"id":"n1819790685","loc":[-85.6207722,41.9610665],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790687":{"id":"n1819790687","loc":[-85.6202315,41.9622109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790697":{"id":"n1819790697","loc":[-85.6184505,41.9624662],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790726":{"id":"n1819790726","loc":[-85.6178926,41.9628492],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790738":{"id":"n1819790738","loc":[-85.6173347,41.9598016],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790762":{"id":"n1819790762","loc":[-85.6186221,41.9609105],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790774":{"id":"n1819790774","loc":[-85.6175922,41.9608308],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790781":{"id":"n1819790781","loc":[-85.6167768,41.9633198],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790796":{"id":"n1819790796","loc":[-85.619856,41.961461],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790811":{"id":"n1819790811","loc":[-85.6208215,41.9620195],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790833":{"id":"n1819790833","loc":[-85.618311,41.9612536],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790854":{"id":"n1819790854","loc":[-85.6183646,41.9626417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790863":{"id":"n1819790863","loc":[-85.6204997,41.9608547],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790867":{"id":"n1819790867","loc":[-85.6184934,41.9621391],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790877":{"id":"n1819790877","loc":[-85.6206928,41.9621152],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790881":{"id":"n1819790881","loc":[-85.6170879,41.960735],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790891":{"id":"n1819790891","loc":[-85.6168304,41.9601207],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790898":{"id":"n1819790898","loc":[-85.619813,41.9612297],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790909":{"id":"n1819790909","loc":[-85.6167982,41.960376],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790912":{"id":"n1819790912","loc":[-85.6205855,41.9610462],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790544":{"id":"n1819790544","loc":[-85.612968,41.9707781],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790549":{"id":"n1819790549","loc":[-85.614395,41.9697172],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790552":{"id":"n1819790552","loc":[-85.6180535,41.9655536],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790554":{"id":"n1819790554","loc":[-85.6111227,41.9703713],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790560":{"id":"n1819790560","loc":[-85.6112729,41.9701958],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790563":{"id":"n1819790563","loc":[-85.6137512,41.9689917],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790564":{"id":"n1819790564","loc":[-85.6181072,41.9659205],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790595":{"id":"n1819790595","loc":[-85.6170021,41.9666863],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790605":{"id":"n1819790605","loc":[-85.6168948,41.9644527],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790606":{"id":"n1819790606","loc":[-85.6128071,41.9701081],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790607":{"id":"n1819790607","loc":[-85.6129251,41.9704032],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790612":{"id":"n1819790612","loc":[-85.6177638,41.9663912],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790615":{"id":"n1819790615","loc":[-85.6152533,41.9670373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790622":{"id":"n1819790622","loc":[-85.6146739,41.9673804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790623":{"id":"n1819790623","loc":[-85.6180428,41.9661838],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790625":{"id":"n1819790625","loc":[-85.6172918,41.9646202],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790645":{"id":"n1819790645","loc":[-85.6178067,41.965043],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790647":{"id":"n1819790647","loc":[-85.6143306,41.9712488],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790649":{"id":"n1819790649","loc":[-85.6147383,41.9707702],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790654":{"id":"n1819790654","loc":[-85.6157361,41.9668459],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790657":{"id":"n1819790657","loc":[-85.6145666,41.9710733],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790668":{"id":"n1819790668","loc":[-85.6166909,41.9642692],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790671":{"id":"n1819790671","loc":[-85.6141482,41.9696538],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790679":{"id":"n1819790679","loc":[-85.6148349,41.9705388],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790686":{"id":"n1819790686","loc":[-85.6139551,41.9695501],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790696":{"id":"n1819790696","loc":[-85.6119703,41.9699087],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790704":{"id":"n1819790704","loc":[-85.6140731,41.9684174],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790706":{"id":"n1819790706","loc":[-85.6124745,41.9699246],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790718":{"id":"n1819790718","loc":[-85.6165407,41.9636868],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790720":{"id":"n1819790720","loc":[-85.61388,41.9687365],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790731":{"id":"n1819790731","loc":[-85.6165193,41.9639421],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790739":{"id":"n1819790739","loc":[-85.6146739,41.9699964],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790753":{"id":"n1819790753","loc":[-85.6173883,41.9665747],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790760":{"id":"n1819790760","loc":[-85.6133221,41.9712089],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790767":{"id":"n1819790767","loc":[-85.6116698,41.9699246],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790779":{"id":"n1819790779","loc":[-85.6130753,41.9710573],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790791":{"id":"n1819790791","loc":[-85.6137083,41.9692869],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790795":{"id":"n1819790795","loc":[-85.6141482,41.9679627],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790798":{"id":"n1819790798","loc":[-85.6137727,41.9694305],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790836":{"id":"n1819790836","loc":[-85.6143842,41.9676037],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790915":{"id":"n1819790915","loc":[-85.6148456,41.9702756],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790926":{"id":"n1819790926","loc":[-85.6138371,41.9713525],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790927":{"id":"n1819790927","loc":[-85.6141053,41.9713525],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790931":{"id":"n1819790931","loc":[-85.6162832,41.966814],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1821014625":{"id":"n1821014625","loc":[-85.5960611,41.9808498],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014627":{"id":"n1821014627","loc":[-85.5565843,42.010982],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014629":{"id":"n1821014629","loc":[-85.5971541,41.9805808],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014632":{"id":"n1821014632","loc":[-85.6061837,41.9725907],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014633":{"id":"n1821014633","loc":[-85.5247773,42.025766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014635":{"id":"n1821014635","loc":[-85.5908938,41.9902384],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014636":{"id":"n1821014636","loc":[-85.5917682,41.9860637],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014637":{"id":"n1821014637","loc":[-85.5456556,42.0166797],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014638":{"id":"n1821014638","loc":[-85.5795749,42.0032352],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014639":{"id":"n1821014639","loc":[-85.6103988,41.9723456],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014642":{"id":"n1821014642","loc":[-85.5818816,42.0022466],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014643":{"id":"n1821014643","loc":[-85.5570604,42.0091586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014644":{"id":"n1821014644","loc":[-85.5952886,41.9803792],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014645":{"id":"n1821014645","loc":[-85.5780366,42.0040343],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014646":{"id":"n1821014646","loc":[-85.6050505,41.9751971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014647":{"id":"n1821014647","loc":[-85.5854435,41.9946162],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014648":{"id":"n1821014648","loc":[-85.5452278,42.0168768],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014649":{"id":"n1821014649","loc":[-85.6023254,41.9780166],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014651":{"id":"n1821014651","loc":[-85.5761899,42.0046783],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014653":{"id":"n1821014653","loc":[-85.5897351,41.9876707],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014657":{"id":"n1821014657","loc":[-85.5963601,41.9808998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014658":{"id":"n1821014658","loc":[-85.5892952,41.9951983],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014660":{"id":"n1821014660","loc":[-85.5778328,42.0037194],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014661":{"id":"n1821014661","loc":[-85.5541475,42.0125705],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014663":{"id":"n1821014663","loc":[-85.5914047,41.9856469],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014664":{"id":"n1821014664","loc":[-85.6101681,41.9727723],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014665":{"id":"n1821014665","loc":[-85.5910172,41.9854696],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014666":{"id":"n1821014666","loc":[-85.5398688,42.0187699],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014667":{"id":"n1821014667","loc":[-85.5218752,42.0282884],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014668":{"id":"n1821014668","loc":[-85.5159582,42.0329384],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014669":{"id":"n1821014669","loc":[-85.5898102,41.9847319],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014670":{"id":"n1821014670","loc":[-85.5734809,42.0066235],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014671":{"id":"n1821014671","loc":[-85.5922939,41.980852],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014672":{"id":"n1821014672","loc":[-85.6023629,41.9781163],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014674":{"id":"n1821014674","loc":[-85.5409953,42.0191724],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014676":{"id":"n1821014676","loc":[-85.584435,41.9949909],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014677":{"id":"n1821014677","loc":[-85.5972399,41.9783835],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014678":{"id":"n1821014678","loc":[-85.5616738,42.0071337],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014681":{"id":"n1821014681","loc":[-85.5202994,42.0310755],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014682":{"id":"n1821014682","loc":[-85.5915912,41.9857767],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014684":{"id":"n1821014684","loc":[-85.6022288,41.977897],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014687":{"id":"n1821014687","loc":[-85.5933024,41.9846362],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014688":{"id":"n1821014688","loc":[-85.5846871,41.9956169],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014689":{"id":"n1821014689","loc":[-85.5898209,41.99037],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014691":{"id":"n1821014691","loc":[-85.5448939,42.0149261],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014692":{"id":"n1821014692","loc":[-85.5977763,41.9786348],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014694":{"id":"n1821014694","loc":[-85.5767706,42.0034523],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014695":{"id":"n1821014695","loc":[-85.6103559,41.9726766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014697":{"id":"n1821014697","loc":[-85.5922134,41.9809876],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014698":{"id":"n1821014698","loc":[-85.5935277,41.9831728],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014700":{"id":"n1821014700","loc":[-85.5674674,42.0078273],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014703":{"id":"n1821014703","loc":[-85.6021,41.9778053],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014704":{"id":"n1821014704","loc":[-85.5756763,42.0053737],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014705":{"id":"n1821014705","loc":[-85.5887695,41.9895207],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014707":{"id":"n1821014707","loc":[-85.6061073,41.9746866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014708":{"id":"n1821014708","loc":[-85.6033446,41.9751692],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014710":{"id":"n1821014710","loc":[-85.5180986,42.0322332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014711":{"id":"n1821014711","loc":[-85.543365,42.0163569],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014712":{"id":"n1821014712","loc":[-85.6030656,41.9753646],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014713":{"id":"n1821014713","loc":[-85.6104417,41.9704792],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014714":{"id":"n1821014714","loc":[-85.5205716,42.030998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014716":{"id":"n1821014716","loc":[-85.516382,42.032536],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014717":{"id":"n1821014717","loc":[-85.5932863,41.9820882],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014718":{"id":"n1821014718","loc":[-85.5361928,42.0194974],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014720":{"id":"n1821014720","loc":[-85.6011613,41.9773586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014721":{"id":"n1821014721","loc":[-85.554287,42.0109124],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014722":{"id":"n1821014722","loc":[-85.5577524,42.0103425],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014725":{"id":"n1821014725","loc":[-85.5867256,41.9921004],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014726":{"id":"n1821014726","loc":[-85.5856045,41.9968807],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014727":{"id":"n1821014727","loc":[-85.5545445,42.0106454],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014728":{"id":"n1821014728","loc":[-85.5923797,41.9842534],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014729":{"id":"n1821014729","loc":[-85.5696346,42.0081462],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014730":{"id":"n1821014730","loc":[-85.5998322,41.9786884],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014735":{"id":"n1821014735","loc":[-85.5337426,42.0218266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014736":{"id":"n1821014736","loc":[-85.5847944,41.994672],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014740":{"id":"n1821014740","loc":[-85.5315271,42.0238669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014741":{"id":"n1821014741","loc":[-85.5248846,42.027085],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014742":{"id":"n1821014742","loc":[-85.5853376,41.997018],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014743":{"id":"n1821014743","loc":[-85.5894883,41.988811],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014745":{"id":"n1821014745","loc":[-85.6095311,41.9726226],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014746":{"id":"n1821014746","loc":[-85.5531511,42.0133416],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014747":{"id":"n1821014747","loc":[-85.5735882,42.007058],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014749":{"id":"n1821014749","loc":[-85.5428554,42.0164366],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014751":{"id":"n1821014751","loc":[-85.5395255,42.0186304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014752":{"id":"n1821014752","loc":[-85.571378,42.0083176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014754":{"id":"n1821014754","loc":[-85.5541918,42.0113925],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014755":{"id":"n1821014755","loc":[-85.5278029,42.0250806],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014756":{"id":"n1821014756","loc":[-85.5936725,41.9827102],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014757":{"id":"n1821014757","loc":[-85.5176266,42.0346677],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014758":{"id":"n1821014758","loc":[-85.6096692,41.9714245],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014759":{"id":"n1821014759","loc":[-85.5770321,42.0034266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014761":{"id":"n1821014761","loc":[-85.5988921,41.9779369],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014762":{"id":"n1821014762","loc":[-85.5811788,42.0024499],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014763":{"id":"n1821014763","loc":[-85.5154003,42.0381101],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014764":{"id":"n1821014764","loc":[-85.5155827,42.0374089],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014765":{"id":"n1821014765","loc":[-85.5891249,41.9884978],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014766":{"id":"n1821014766","loc":[-85.5313863,42.0238293],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014768":{"id":"n1821014768","loc":[-85.593297,41.9833363],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014769":{"id":"n1821014769","loc":[-85.5849446,41.9957245],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014770":{"id":"n1821014770","loc":[-85.5537774,42.0130847],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014771":{"id":"n1821014771","loc":[-85.6111766,41.9706069],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014772":{"id":"n1821014772","loc":[-85.5585477,42.008989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014774":{"id":"n1821014774","loc":[-85.5928142,41.9852623],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014777":{"id":"n1821014777","loc":[-85.5891933,41.9882608],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014778":{"id":"n1821014778","loc":[-85.5926909,41.9817532],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014779":{"id":"n1821014779","loc":[-85.5260272,42.0252201],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014781":{"id":"n1821014781","loc":[-85.5894615,41.9950468],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014782":{"id":"n1821014782","loc":[-85.5461063,42.0143242],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014783":{"id":"n1821014783","loc":[-85.5711527,42.0085886],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014784":{"id":"n1821014784","loc":[-85.5329379,42.0218624],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014786":{"id":"n1821014786","loc":[-85.583047,42.0020252],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014787":{"id":"n1821014787","loc":[-85.5758962,42.0054095],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014788":{"id":"n1821014788","loc":[-85.5626354,42.0077733],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014789":{"id":"n1821014789","loc":[-85.6029852,41.9755999],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014790":{"id":"n1821014790","loc":[-85.5892362,41.9886755],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014791":{"id":"n1821014791","loc":[-85.5157597,42.0372017],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014793":{"id":"n1821014793","loc":[-85.6054582,41.9751094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014794":{"id":"n1821014794","loc":[-85.5986936,41.9778412],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014795":{"id":"n1821014795","loc":[-85.5880775,41.98976],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014796":{"id":"n1821014796","loc":[-85.5858727,41.9963624],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014798":{"id":"n1821014798","loc":[-85.5792543,42.0035958],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014799":{"id":"n1821014799","loc":[-85.5921665,41.9838326],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014801":{"id":"n1821014801","loc":[-85.599214,41.9782599],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014802":{"id":"n1821014802","loc":[-85.5571905,42.0090967],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014803":{"id":"n1821014803","loc":[-85.5426891,42.0173612],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014804":{"id":"n1821014804","loc":[-85.5889626,41.9896404],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014805":{"id":"n1821014805","loc":[-85.5491264,42.0141648],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014806":{"id":"n1821014806","loc":[-85.5618897,42.0072631],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014808":{"id":"n1821014808","loc":[-85.5573501,42.0109802],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014809":{"id":"n1821014809","loc":[-85.5983463,41.9778031],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014810":{"id":"n1821014810","loc":[-85.5885173,41.9895128],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014811":{"id":"n1821014811","loc":[-85.6084998,41.9721143],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014812":{"id":"n1821014812","loc":[-85.5737598,42.0056389],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014814":{"id":"n1821014814","loc":[-85.5542173,42.0118132],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014816":{"id":"n1821014816","loc":[-85.5277868,42.024451],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014817":{"id":"n1821014817","loc":[-85.5403999,42.0191724],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014819":{"id":"n1821014819","loc":[-85.5983879,41.9791452],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014820":{"id":"n1821014820","loc":[-85.5891302,41.9897578],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014822":{"id":"n1821014822","loc":[-85.5930731,41.9805108],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014824":{"id":"n1821014824","loc":[-85.515395,42.0378471],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014825":{"id":"n1821014825","loc":[-85.5352755,42.0205136],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014826":{"id":"n1821014826","loc":[-85.5502744,42.0133398],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014828":{"id":"n1821014828","loc":[-85.5701295,42.0088256],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014830":{"id":"n1821014830","loc":[-85.5888929,41.9953099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014832":{"id":"n1821014832","loc":[-85.5880077,41.9901547],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014833":{"id":"n1821014833","loc":[-85.5451192,42.0157072],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014834":{"id":"n1821014834","loc":[-85.6096478,41.9711932],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014835":{"id":"n1821014835","loc":[-85.5806424,42.0026532],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014836":{"id":"n1821014836","loc":[-85.5911674,41.9868732],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014838":{"id":"n1821014838","loc":[-85.5930302,41.9836571],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014839":{"id":"n1821014839","loc":[-85.588925,41.9938148],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014840":{"id":"n1821014840","loc":[-85.6111874,41.9705311],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014841":{"id":"n1821014841","loc":[-85.5680843,42.0075842],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014842":{"id":"n1821014842","loc":[-85.6012793,41.9775062],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014843":{"id":"n1821014843","loc":[-85.5855562,41.9989777],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014844":{"id":"n1821014844","loc":[-85.5506137,42.0131662],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014845":{"id":"n1821014845","loc":[-85.5270049,42.025457],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014846":{"id":"n1821014846","loc":[-85.5257054,42.025244],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014847":{"id":"n1821014847","loc":[-85.6011184,41.9771832],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014848":{"id":"n1821014848","loc":[-85.515534,42.0389234],"version":"2","changeset":"15306911","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:57:21Z","tags":{}},"n1821014850":{"id":"n1821014850","loc":[-85.5847032,42.0010347],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014853":{"id":"n1821014853","loc":[-85.5361499,42.019063],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014854":{"id":"n1821014854","loc":[-85.5439176,42.0165721],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014855":{"id":"n1821014855","loc":[-85.5838825,42.0017284],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014857":{"id":"n1821014857","loc":[-85.5542173,42.0122317],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014859":{"id":"n1821014859","loc":[-85.5708201,42.0089195],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014860":{"id":"n1821014860","loc":[-85.5844833,41.9954415],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014862":{"id":"n1821014862","loc":[-85.5223204,42.0295396],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014863":{"id":"n1821014863","loc":[-85.5777898,42.0035918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014864":{"id":"n1821014864","loc":[-85.591044,41.9898078],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014865":{"id":"n1821014865","loc":[-85.5973204,41.980182],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014866":{"id":"n1821014866","loc":[-85.5699578,42.0085825],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014867":{"id":"n1821014867","loc":[-85.5210598,42.0305278],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014868":{"id":"n1821014868","loc":[-85.5929108,41.9819008],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014869":{"id":"n1821014869","loc":[-85.5279799,42.0242995],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014870":{"id":"n1821014870","loc":[-85.5196114,42.0320539],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014871":{"id":"n1821014871","loc":[-85.5785449,42.0040883],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014872":{"id":"n1821014872","loc":[-85.588292,41.9895766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014873":{"id":"n1821014873","loc":[-85.5160172,42.0331775],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014874":{"id":"n1821014874","loc":[-85.5688849,42.0077016],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014876":{"id":"n1821014876","loc":[-85.5857976,41.9996036],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014879":{"id":"n1821014879","loc":[-85.5990906,41.9780765],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014881":{"id":"n1821014881","loc":[-85.5483647,42.0144279],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014883":{"id":"n1821014883","loc":[-85.5691209,42.0077972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014885":{"id":"n1821014885","loc":[-85.6076844,41.9721103],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014886":{"id":"n1821014886","loc":[-85.6015489,41.9766147],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014887":{"id":"n1821014887","loc":[-85.574822,42.0052802],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014888":{"id":"n1821014888","loc":[-85.5880024,41.9899593],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014890":{"id":"n1821014890","loc":[-85.5909421,41.9893772],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014892":{"id":"n1821014892","loc":[-85.5497326,42.0138141],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014893":{"id":"n1821014893","loc":[-85.5167106,42.0357811],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014895":{"id":"n1821014895","loc":[-85.5844404,41.9952501],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014896":{"id":"n1821014896","loc":[-85.5362465,42.0192662],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014898":{"id":"n1821014898","loc":[-85.5906095,41.9889147],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014899":{"id":"n1821014899","loc":[-85.5590667,42.0089354],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014900":{"id":"n1821014900","loc":[-85.5921598,41.9844209],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014902":{"id":"n1821014902","loc":[-85.5778971,42.0039266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014903":{"id":"n1821014903","loc":[-85.603012,41.9761981],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014904":{"id":"n1821014904","loc":[-85.6108977,41.9706787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014905":{"id":"n1821014905","loc":[-85.5685738,42.0076139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014906":{"id":"n1821014906","loc":[-85.5392787,42.0186304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014907":{"id":"n1821014907","loc":[-85.5227885,42.0274972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014908":{"id":"n1821014908","loc":[-85.5857547,41.9961431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014910":{"id":"n1821014910","loc":[-85.5610354,42.0072812],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014911":{"id":"n1821014911","loc":[-85.5209632,42.0308705],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014912":{"id":"n1821014912","loc":[-85.5709757,42.0087959],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014913":{"id":"n1821014913","loc":[-85.59231,41.9839344],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014914":{"id":"n1821014914","loc":[-85.5375245,42.0185865],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014916":{"id":"n1821014916","loc":[-85.5901548,41.9839841],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014917":{"id":"n1821014917","loc":[-85.5611213,42.0086405],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014918":{"id":"n1821014918","loc":[-85.5360426,42.0198122],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014919":{"id":"n1821014919","loc":[-85.5862817,41.9948691],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014921":{"id":"n1821014921","loc":[-85.5469807,42.0144438],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014922":{"id":"n1821014922","loc":[-85.5761309,42.0053838],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014924":{"id":"n1821014924","loc":[-85.516264,42.0332971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014925":{"id":"n1821014925","loc":[-85.5277224,42.0246661],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014926":{"id":"n1821014926","loc":[-85.5980016,41.9798231],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014928":{"id":"n1821014928","loc":[-85.5924548,41.9806965],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014930":{"id":"n1821014930","loc":[-85.5899121,41.985023],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014931":{"id":"n1821014931","loc":[-85.5706015,42.0089492],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014932":{"id":"n1821014932","loc":[-85.515926,42.033046],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014933":{"id":"n1821014933","loc":[-85.5982377,41.9796796],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014936":{"id":"n1821014936","loc":[-85.5475721,42.0145253],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014938":{"id":"n1821014938","loc":[-85.5895701,41.9902323],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014939":{"id":"n1821014939","loc":[-85.6030495,41.9759947],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014942":{"id":"n1821014942","loc":[-85.6094721,41.9724989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014944":{"id":"n1821014944","loc":[-85.5921973,41.9811112],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014945":{"id":"n1821014945","loc":[-85.5223526,42.0291332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014946":{"id":"n1821014946","loc":[-85.5965103,41.9808998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014948":{"id":"n1821014948","loc":[-85.517766,42.0349227],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014950":{"id":"n1821014950","loc":[-85.5889894,41.990996],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014951":{"id":"n1821014951","loc":[-85.5601932,42.0092902],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014954":{"id":"n1821014954","loc":[-85.6028135,41.9764055],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014955":{"id":"n1821014955","loc":[-85.5520621,42.0130666],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014956":{"id":"n1821014956","loc":[-85.593002,41.9839344],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014957":{"id":"n1821014957","loc":[-85.515926,42.0369666],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014960":{"id":"n1821014960","loc":[-85.5761255,42.003877],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014961":{"id":"n1821014961","loc":[-85.5716355,42.007911],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014962":{"id":"n1821014962","loc":[-85.5575378,42.0109045],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014963":{"id":"n1821014963","loc":[-85.5735667,42.0068188],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014964":{"id":"n1821014964","loc":[-85.5915214,41.9865861],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014965":{"id":"n1821014965","loc":[-85.5866344,41.9923157],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014967":{"id":"n1821014967","loc":[-85.5283138,42.0242256],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014968":{"id":"n1821014968","loc":[-85.5177875,42.0355801],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014969":{"id":"n1821014969","loc":[-85.548071,42.0144934],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014972":{"id":"n1821014972","loc":[-85.5611159,42.0088557],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014973":{"id":"n1821014973","loc":[-85.541686,42.0188757],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014974":{"id":"n1821014974","loc":[-85.5917628,41.9862631],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014975":{"id":"n1821014975","loc":[-85.5854864,41.9959478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014977":{"id":"n1821014977","loc":[-85.609102,41.9722317],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014980":{"id":"n1821014980","loc":[-85.5761202,42.0042438],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014982":{"id":"n1821014982","loc":[-85.5465944,42.0143601],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014983":{"id":"n1821014983","loc":[-85.5173261,42.0342732],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014984":{"id":"n1821014984","loc":[-85.5897297,41.9888509],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014985":{"id":"n1821014985","loc":[-85.5856688,41.999181],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014986":{"id":"n1821014986","loc":[-85.5344011,42.0217251],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014987":{"id":"n1821014987","loc":[-85.601467,41.9768203],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014988":{"id":"n1821014988","loc":[-85.5457254,42.0165123],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014989":{"id":"n1821014989","loc":[-85.6023482,41.9784332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014991":{"id":"n1821014991","loc":[-85.5361606,42.01823],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014992":{"id":"n1821014992","loc":[-85.5178465,42.0351139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014995":{"id":"n1821014995","loc":[-85.5634293,42.0078092],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014996":{"id":"n1821014996","loc":[-85.573497,42.0072015],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014997":{"id":"n1821014997","loc":[-85.5976328,41.9799725],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014998":{"id":"n1821014998","loc":[-85.5210651,42.0303166],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015003":{"id":"n1821015003","loc":[-85.5222131,42.0288064],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015004":{"id":"n1821015004","loc":[-85.5897941,41.984405],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015005":{"id":"n1821015005","loc":[-85.5975725,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015006":{"id":"n1821015006","loc":[-85.5765708,42.0034903],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015007":{"id":"n1821015007","loc":[-85.5250187,42.026559],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015009":{"id":"n1821015009","loc":[-85.5426998,42.0166279],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015010":{"id":"n1821015010","loc":[-85.5957606,41.9806584],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015011":{"id":"n1821015011","loc":[-85.5262753,42.0252497],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015012":{"id":"n1821015012","loc":[-85.5266455,42.0253374],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015014":{"id":"n1821015014","loc":[-85.5515632,42.0130187],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015015":{"id":"n1821015015","loc":[-85.6024058,41.9765212],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015017":{"id":"n1821015017","loc":[-85.5175032,42.0357156],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015018":{"id":"n1821015018","loc":[-85.5302718,42.0236039],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015019":{"id":"n1821015019","loc":[-85.6024005,41.9782759],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015020":{"id":"n1821015020","loc":[-85.5907758,41.9890821],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015021":{"id":"n1821015021","loc":[-85.6019445,41.9777215],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015022":{"id":"n1821015022","loc":[-85.5942854,41.9800881],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015024":{"id":"n1821015024","loc":[-85.5325826,42.0222711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015029":{"id":"n1821015029","loc":[-85.555093,42.0105316],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015033":{"id":"n1821015033","loc":[-85.5249704,42.0270372],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015034":{"id":"n1821015034","loc":[-85.5243965,42.0272205],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015038":{"id":"n1821015038","loc":[-85.5413426,42.0190749],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015039":{"id":"n1821015039","loc":[-85.5920431,41.9848175],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015041":{"id":"n1821015041","loc":[-85.5577685,42.0106015],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015042":{"id":"n1821015042","loc":[-85.5453606,42.0158866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015045":{"id":"n1821015045","loc":[-85.5333228,42.0217889],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015046":{"id":"n1821015046","loc":[-85.5426891,42.0175924],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015048":{"id":"n1821015048","loc":[-85.5886836,41.9936474],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015050":{"id":"n1821015050","loc":[-85.6001152,41.9786467],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015051":{"id":"n1821015051","loc":[-85.6094064,41.9723655],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015053":{"id":"n1821015053","loc":[-85.605721,41.9749738],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015055":{"id":"n1821015055","loc":[-85.6106791,41.9705048],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015057":{"id":"n1821015057","loc":[-85.5210437,42.0307071],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015059":{"id":"n1821015059","loc":[-85.5995694,41.9786725],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015060":{"id":"n1821015060","loc":[-85.5371638,42.0182938],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015062":{"id":"n1821015062","loc":[-85.6111766,41.9704593],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015065":{"id":"n1821015065","loc":[-85.577704,42.0034921],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015067":{"id":"n1821015067","loc":[-85.5570067,42.0093699],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015068":{"id":"n1821015068","loc":[-85.5920364,41.9845525],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015069":{"id":"n1821015069","loc":[-85.5252065,42.0253954],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015072":{"id":"n1821015072","loc":[-85.5664159,42.0088517],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015073":{"id":"n1821015073","loc":[-85.5880399,41.991905],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015075":{"id":"n1821015075","loc":[-85.6099871,41.9727861],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015076":{"id":"n1821015076","loc":[-85.5319603,42.0231478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015078":{"id":"n1821015078","loc":[-85.6036088,41.9751112],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015080":{"id":"n1821015080","loc":[-85.5983128,41.9789179],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015082":{"id":"n1821015082","loc":[-85.5614069,42.0071395],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015083":{"id":"n1821015083","loc":[-85.60968,41.9709738],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015086":{"id":"n1821015086","loc":[-85.5914195,41.9837351],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015087":{"id":"n1821015087","loc":[-85.5895473,41.9948036],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015090":{"id":"n1821015090","loc":[-85.5929913,41.9851905],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015093":{"id":"n1821015093","loc":[-85.5907396,41.9838485],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015095":{"id":"n1821015095","loc":[-85.5893864,41.9880176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015096":{"id":"n1821015096","loc":[-85.5788024,42.0039807],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015097":{"id":"n1821015097","loc":[-85.5630592,42.0078411],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015098":{"id":"n1821015098","loc":[-85.5350609,42.0211274],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015099":{"id":"n1821015099","loc":[-85.5967195,41.9808679],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015100":{"id":"n1821015100","loc":[-85.5666734,42.0088119],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015101":{"id":"n1821015101","loc":[-85.564694,42.0077675],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015103":{"id":"n1821015103","loc":[-85.6066544,41.9726527],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015104":{"id":"n1821015104","loc":[-85.6011827,41.9769838],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015105":{"id":"n1821015105","loc":[-85.5972131,41.9776697],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015106":{"id":"n1821015106","loc":[-85.5880828,41.9903341],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015107":{"id":"n1821015107","loc":[-85.5510268,42.0130626],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015108":{"id":"n1821015108","loc":[-85.6102164,41.970543],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015109":{"id":"n1821015109","loc":[-85.5905344,41.9853899],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015111":{"id":"n1821015111","loc":[-85.5888821,41.9913429],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015112":{"id":"n1821015112","loc":[-85.606295,41.9741921],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015114":{"id":"n1821015114","loc":[-85.5969556,41.9807443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015115":{"id":"n1821015115","loc":[-85.5882223,41.9934081],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015116":{"id":"n1821015116","loc":[-85.6104471,41.9724971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015118":{"id":"n1821015118","loc":[-85.5406091,42.0192162],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015120":{"id":"n1821015120","loc":[-85.589955,41.9888429],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015121":{"id":"n1821015121","loc":[-85.5598821,42.0092304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015122":{"id":"n1821015122","loc":[-85.545598,42.0144097],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015123":{"id":"n1821015123","loc":[-85.5649528,42.0079965],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015125":{"id":"n1821015125","loc":[-85.5883993,41.9917814],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015126":{"id":"n1821015126","loc":[-85.5295785,42.0239967],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015129":{"id":"n1821015129","loc":[-85.5648723,42.0078809],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015132":{"id":"n1821015132","loc":[-85.564989,42.0081103],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015133":{"id":"n1821015133","loc":[-85.5946127,41.9800841],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015134":{"id":"n1821015134","loc":[-85.583448,42.0019078],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015135":{"id":"n1821015135","loc":[-85.5905934,41.9871842],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015137":{"id":"n1821015137","loc":[-85.610608,41.9704752],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015138":{"id":"n1821015138","loc":[-85.5752257,42.0052939],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015139":{"id":"n1821015139","loc":[-85.5893864,41.9943491],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015140":{"id":"n1821015140","loc":[-85.5426247,42.0169866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015141":{"id":"n1821015141","loc":[-85.562001,42.0074526],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015142":{"id":"n1821015142","loc":[-85.5212046,42.0301094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015143":{"id":"n1821015143","loc":[-85.602214,41.9784531],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015144":{"id":"n1821015144","loc":[-85.5858687,41.9948293],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015145":{"id":"n1821015145","loc":[-85.5608477,42.0074805],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015146":{"id":"n1821015146","loc":[-85.5651607,42.0083614],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015147":{"id":"n1821015147","loc":[-85.5288288,42.0242495],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015149":{"id":"n1821015149","loc":[-85.5450334,42.0146989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015151":{"id":"n1821015151","loc":[-85.5578275,42.0092304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015154":{"id":"n1821015154","loc":[-85.6056634,41.9724511],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015155":{"id":"n1821015155","loc":[-85.5902179,41.9852742],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015156":{"id":"n1821015156","loc":[-85.5156256,42.0387157],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015157":{"id":"n1821015157","loc":[-85.5734433,42.0059459],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015158":{"id":"n1821015158","loc":[-85.6050773,41.9731273],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015160":{"id":"n1821015160","loc":[-85.5223419,42.0275233],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015163":{"id":"n1821015163","loc":[-85.6053562,41.972525],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015164":{"id":"n1821015164","loc":[-85.5850412,41.9946082],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015165":{"id":"n1821015165","loc":[-85.5359031,42.0186326],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015166":{"id":"n1821015166","loc":[-85.5608745,42.0077635],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015169":{"id":"n1821015169","loc":[-85.572876,42.0073189],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015171":{"id":"n1821015171","loc":[-85.5875424,41.9919188],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015172":{"id":"n1821015172","loc":[-85.5240116,42.0272581],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015173":{"id":"n1821015173","loc":[-85.5318369,42.0236818],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015174":{"id":"n1821015174","loc":[-85.566888,42.0086923],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015175":{"id":"n1821015175","loc":[-85.5931522,41.9850669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015176":{"id":"n1821015176","loc":[-85.5604842,42.0093199],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015177":{"id":"n1821015177","loc":[-85.5868168,41.9927543],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015178":{"id":"n1821015178","loc":[-85.6052275,41.9732549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015179":{"id":"n1821015179","loc":[-85.5910118,41.9900431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015182":{"id":"n1821015182","loc":[-85.5610032,42.0082897],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015183":{"id":"n1821015183","loc":[-85.5425443,42.0179431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015184":{"id":"n1821015184","loc":[-85.5843277,42.0014055],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015186":{"id":"n1821015186","loc":[-85.5733307,42.0063564],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015188":{"id":"n1821015188","loc":[-85.5277385,42.0248694],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015189":{"id":"n1821015189","loc":[-85.5558427,42.0108168],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015190":{"id":"n1821015190","loc":[-85.5650587,42.0082618],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015191":{"id":"n1821015191","loc":[-85.5660351,42.0088278],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015192":{"id":"n1821015192","loc":[-85.5849768,41.9980049],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015194":{"id":"n1821015194","loc":[-85.5359139,42.0188199],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015195":{"id":"n1821015195","loc":[-85.593238,41.9849194],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015197":{"id":"n1821015197","loc":[-85.5850841,41.9983239],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015199":{"id":"n1821015199","loc":[-85.5983396,41.9794283],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015204":{"id":"n1821015204","loc":[-85.5452801,42.0145355],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015205":{"id":"n1821015205","loc":[-85.5340685,42.0218407],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015207":{"id":"n1821015207","loc":[-85.5773272,42.0034186],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015209":{"id":"n1821015209","loc":[-85.5535212,42.0132419],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015211":{"id":"n1821015211","loc":[-85.6107703,41.9706045],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015212":{"id":"n1821015212","loc":[-85.6030066,41.9758193],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015213":{"id":"n1821015213","loc":[-85.5359943,42.0184213],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015214":{"id":"n1821015214","loc":[-85.5922993,41.9813305],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015215":{"id":"n1821015215","loc":[-85.5672689,42.0080465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015217":{"id":"n1821015217","loc":[-85.5160494,42.0365682],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015218":{"id":"n1821015218","loc":[-85.5401142,42.0190351],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015219":{"id":"n1821015219","loc":[-85.5607632,42.0092282],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015220":{"id":"n1821015220","loc":[-85.5866197,41.9947894],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015221":{"id":"n1821015221","loc":[-85.6017889,41.9765132],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015222":{"id":"n1821015222","loc":[-85.5595978,42.009059],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015226":{"id":"n1821015226","loc":[-85.5871494,41.9929018],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015227":{"id":"n1821015227","loc":[-85.5857708,41.9998866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015228":{"id":"n1821015228","loc":[-85.5317135,42.0238094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015231":{"id":"n1821015231","loc":[-85.5733521,42.0061372],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015233":{"id":"n1821015233","loc":[-85.5855991,42.0001936],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015234":{"id":"n1821015234","loc":[-85.5213924,42.029962],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015235":{"id":"n1821015235","loc":[-85.6052221,41.9726567],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015236":{"id":"n1821015236","loc":[-85.5763723,42.0035422],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015237":{"id":"n1821015237","loc":[-85.5858512,41.9966215],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015238":{"id":"n1821015238","loc":[-85.567061,42.008439],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015239":{"id":"n1821015239","loc":[-85.5250563,42.0269057],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015240":{"id":"n1821015240","loc":[-85.5347551,42.0214263],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015241":{"id":"n1821015241","loc":[-85.6098463,41.9707066],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015242":{"id":"n1821015242","loc":[-85.5676927,42.0076519],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015243":{"id":"n1821015243","loc":[-85.516775,42.0322669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015244":{"id":"n1821015244","loc":[-85.5762275,42.0036538],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015245":{"id":"n1821015245","loc":[-85.5583639,42.0090949],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015246":{"id":"n1821015246","loc":[-85.5554041,42.0106432],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015247":{"id":"n1821015247","loc":[-85.5973364,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015248":{"id":"n1821015248","loc":[-85.6098945,41.9717513],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015249":{"id":"n1821015249","loc":[-85.6045315,41.9751511],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015250":{"id":"n1821015250","loc":[-85.5579938,42.0092264],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015253":{"id":"n1821015253","loc":[-85.6058873,41.9724652],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015254":{"id":"n1821015254","loc":[-85.5869456,41.9947517],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015255":{"id":"n1821015255","loc":[-85.5936565,41.9823713],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015256":{"id":"n1821015256","loc":[-85.5218269,42.0278102],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015258":{"id":"n1821015258","loc":[-85.5887802,41.9905534],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015259":{"id":"n1821015259","loc":[-85.5901924,41.9904515],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015263":{"id":"n1821015263","loc":[-85.5249222,42.0255787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015265":{"id":"n1821015265","loc":[-85.5175206,42.0321672],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015266":{"id":"n1821015266","loc":[-85.5275722,42.0254034],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015267":{"id":"n1821015267","loc":[-85.6016226,41.9765451],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015269":{"id":"n1821015269","loc":[-85.5569316,42.011032],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015271":{"id":"n1821015271","loc":[-85.6010714,41.9785209],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015272":{"id":"n1821015272","loc":[-85.6050666,41.9729917],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015273":{"id":"n1821015273","loc":[-85.5891235,41.99529],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015274":{"id":"n1821015274","loc":[-85.515454,42.0376439],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015276":{"id":"n1821015276","loc":[-85.5776021,42.0034443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015277":{"id":"n1821015277","loc":[-85.6041707,41.9751453],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015278":{"id":"n1821015278","loc":[-85.5444701,42.0167435],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015280":{"id":"n1821015280","loc":[-85.5923274,41.9852202],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015283":{"id":"n1821015283","loc":[-85.5893649,41.9900271],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015284":{"id":"n1821015284","loc":[-85.5933453,41.9804412],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015285":{"id":"n1821015285","loc":[-85.5247237,42.026017],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015286":{"id":"n1821015286","loc":[-85.5286182,42.0242477],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015287":{"id":"n1821015287","loc":[-85.5904003,41.9888549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015288":{"id":"n1821015288","loc":[-85.6062146,41.9739369],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015290":{"id":"n1821015290","loc":[-85.5762596,42.0052602],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015292":{"id":"n1821015292","loc":[-85.5849715,41.9975465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015293":{"id":"n1821015293","loc":[-85.585229,42.0006241],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015294":{"id":"n1821015294","loc":[-85.5926922,41.9805946],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015295":{"id":"n1821015295","loc":[-85.5703387,42.0089133],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015299":{"id":"n1821015299","loc":[-85.5789955,42.0038611],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015301":{"id":"n1821015301","loc":[-85.6072888,41.9721918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015302":{"id":"n1821015302","loc":[-85.5356349,42.0200992],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015304":{"id":"n1821015304","loc":[-85.5891772,41.994066],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015306":{"id":"n1821015306","loc":[-85.606295,41.9744952],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015307":{"id":"n1821015307","loc":[-85.538871,42.0186583],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015308":{"id":"n1821015308","loc":[-85.587997,41.994971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015311":{"id":"n1821015311","loc":[-85.606869,41.9725809],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015312":{"id":"n1821015312","loc":[-85.5171974,42.0339943],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015314":{"id":"n1821015314","loc":[-85.5327435,42.0220479],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015315":{"id":"n1821015315","loc":[-85.5383439,42.0187282],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015316":{"id":"n1821015316","loc":[-85.5248095,42.0263119],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015318":{"id":"n1821015318","loc":[-85.5732502,42.0073051],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015319":{"id":"n1821015319","loc":[-85.5924226,41.9852663],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015321":{"id":"n1821015321","loc":[-85.5179001,42.0353052],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015322":{"id":"n1821015322","loc":[-85.5456771,42.0162413],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015323":{"id":"n1821015323","loc":[-85.5936618,41.9829096],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015325":{"id":"n1821015325","loc":[-85.5656931,42.0086582],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015326":{"id":"n1821015326","loc":[-85.5448456,42.0150975],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015327":{"id":"n1821015327","loc":[-85.5220039,42.027615],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015329":{"id":"n1821015329","loc":[-85.517884,42.0354885],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015330":{"id":"n1821015330","loc":[-85.5576666,42.0101671],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015332":{"id":"n1821015332","loc":[-85.5368754,42.0181402],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015333":{"id":"n1821015333","loc":[-85.5367078,42.0181145],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015334":{"id":"n1821015334","loc":[-85.5903909,41.9904316],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015335":{"id":"n1821015335","loc":[-85.5430767,42.0163587],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015336":{"id":"n1821015336","loc":[-85.5277492,42.0252878],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015337":{"id":"n1821015337","loc":[-85.5312146,42.0236898],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015338":{"id":"n1821015338","loc":[-85.5886568,41.991614],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015339":{"id":"n1821015339","loc":[-85.5782498,42.0040883],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015341":{"id":"n1821015341","loc":[-85.562233,42.0076457],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015342":{"id":"n1821015342","loc":[-85.588626,41.9952479],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015343":{"id":"n1821015343","loc":[-85.5762865,42.005033],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015344":{"id":"n1821015344","loc":[-85.5850841,41.9971478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015346":{"id":"n1821015346","loc":[-85.5643144,42.0076936],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015347":{"id":"n1821015347","loc":[-85.5164893,42.0359467],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015348":{"id":"n1821015348","loc":[-85.5906846,41.9903541],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015349":{"id":"n1821015349","loc":[-85.557688,42.0107769],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015350":{"id":"n1821015350","loc":[-85.5363698,42.0181424],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015351":{"id":"n1821015351","loc":[-85.5939636,41.9801918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015352":{"id":"n1821015352","loc":[-85.5524041,42.0131644],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015354":{"id":"n1821015354","loc":[-85.5308606,42.0236221],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015355":{"id":"n1821015355","loc":[-85.5877449,41.9932367],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015356":{"id":"n1821015356","loc":[-85.519885,42.0318586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015357":{"id":"n1821015357","loc":[-85.5454035,42.0168431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015358":{"id":"n1821015358","loc":[-85.5970629,41.9781881],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015359":{"id":"n1821015359","loc":[-85.5932541,41.9844767],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015360":{"id":"n1821015360","loc":[-85.5970736,41.9778252],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015361":{"id":"n1821015361","loc":[-85.537031,42.0181601],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015362":{"id":"n1821015362","loc":[-85.5548355,42.0105156],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015363":{"id":"n1821015363","loc":[-85.5168648,42.0336158],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015365":{"id":"n1821015365","loc":[-85.5870435,41.9919507],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015366":{"id":"n1821015366","loc":[-85.5719681,42.0075443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015367":{"id":"n1821015367","loc":[-85.5969985,41.9780446],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015368":{"id":"n1821015368","loc":[-85.5926761,41.98528],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015369":{"id":"n1821015369","loc":[-85.5224009,42.0293444],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015371":{"id":"n1821015371","loc":[-85.518737,42.0322651],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015372":{"id":"n1821015372","loc":[-85.6064573,41.9726465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015373":{"id":"n1821015373","loc":[-85.5201103,42.0313088],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015375":{"id":"n1821015375","loc":[-85.5378182,42.0186844],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015376":{"id":"n1821015376","loc":[-85.6109741,41.9706882],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015377":{"id":"n1821015377","loc":[-85.5993333,41.9785488],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015378":{"id":"n1821015378","loc":[-85.5889787,41.9907368],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015380":{"id":"n1821015380","loc":[-85.6060161,41.9737375],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015381":{"id":"n1821015381","loc":[-85.5743016,42.0053679],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015382":{"id":"n1821015382","loc":[-85.6014724,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015383":{"id":"n1821015383","loc":[-85.5574426,42.0091644],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015385":{"id":"n1821015385","loc":[-85.5208613,42.0309302],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015386":{"id":"n1821015386","loc":[-85.5919023,41.9837789],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015387":{"id":"n1821015387","loc":[-85.5455484,42.0160221],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015392":{"id":"n1821015392","loc":[-85.5801757,42.0028964],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015395":{"id":"n1821015395","loc":[-85.5493785,42.0139974],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015396":{"id":"n1821015396","loc":[-85.5449475,42.015488],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015398":{"id":"n1821015398","loc":[-85.611123,41.9706627],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015400":{"id":"n1821015400","loc":[-85.5935706,41.9822477],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015401":{"id":"n1821015401","loc":[-85.5724254,42.0073508],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015403":{"id":"n1821015403","loc":[-85.5486812,42.0143442],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015404":{"id":"n1821015404","loc":[-85.5161835,42.0327711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015406":{"id":"n1821015406","loc":[-85.5921705,41.9851107],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015407":{"id":"n1821015407","loc":[-85.531912,42.0234069],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015410":{"id":"n1821015410","loc":[-85.5292566,42.024176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015411":{"id":"n1821015411","loc":[-85.5845316,41.9948315],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015413":{"id":"n1821015413","loc":[-85.5217947,42.0280413],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015414":{"id":"n1821015414","loc":[-85.5527367,42.013272],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015415":{"id":"n1821015415","loc":[-85.5191179,42.0321973],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015416":{"id":"n1821015416","loc":[-85.5540241,42.0128655],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015418":{"id":"n1821015418","loc":[-85.5272892,42.0254849],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015419":{"id":"n1821015419","loc":[-85.5449744,42.016867],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015420":{"id":"n1821015420","loc":[-85.5852665,41.9986787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015421":{"id":"n1821015421","loc":[-85.6102701,41.972186],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015423":{"id":"n1821015423","loc":[-85.6026365,41.9764972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015427":{"id":"n1821015427","loc":[-85.5898692,41.9841498],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015429":{"id":"n1821015429","loc":[-85.5422546,42.0183855],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015430":{"id":"n1821015430","loc":[-85.5866505,41.9925549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015431":{"id":"n1821015431","loc":[-85.5234376,42.0273577],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015432":{"id":"n1821015432","loc":[-85.6096746,41.9727284],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015433":{"id":"n1821015433","loc":[-85.5824891,42.0021567],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015434":{"id":"n1821015434","loc":[-85.5923905,41.9841139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015435":{"id":"n1821015435","loc":[-85.5874565,41.9948014],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015437":{"id":"n1821015437","loc":[-85.6055279,41.9734423],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015438":{"id":"n1821015438","loc":[-85.5299379,42.0237376],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015439":{"id":"n1821015439","loc":[-85.5155022,42.0383651],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015442":{"id":"n1821015442","loc":[-85.527422,42.0254711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015443":{"id":"n1821015443","loc":[-85.5920699,41.9849291],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015444":{"id":"n1821015444","loc":[-85.5639711,42.0077494],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015445":{"id":"n1821015445","loc":[-85.5162586,42.0361777],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015446":{"id":"n1821015446","loc":[-85.5220039,42.029695],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015448":{"id":"n1821015448","loc":[-85.5176641,42.0356956],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015449":{"id":"n1821015449","loc":[-85.5930556,41.9841577],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015451":{"id":"n1821015451","loc":[-85.5320783,42.0228848],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015452":{"id":"n1821015452","loc":[-85.5170096,42.0357235],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015453":{"id":"n1821015453","loc":[-85.5571355,42.009613],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015454":{"id":"n1821015454","loc":[-85.5609979,42.009059],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015455":{"id":"n1821015455","loc":[-85.6097336,41.9708342],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015456":{"id":"n1821015456","loc":[-85.5884476,41.9904218],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"w170843846":{"id":"w170843846","version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{"source":"Bing","waterway":"river"},"nodes":["n1819790555","n1819790762","n1819790547","n1819790618","n1819790898","n1819790796","n1819790534","n1819790543","n1819790541","n1819790687","n1819790877","n1819790811","n1819790670"]},"w209083541":{"id":"w209083541","version":"1","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:46Z","tags":{"name":"Portage River","source":"Bing","waterway":"river"},"nodes":["n1821014848","n1821015156","n1821015439","n1821014763","n1821014824","n1821015274","n1821014764","n1821014791","n1821014957","n1821015217","n1821015445","n1821015347","n1821014893","n1821015452","n1821015017","n1821015448","n1821014968","n1821015329","n1821015321","n1821014992","n1821014948","n1821014757","n1821014983","n1821015312","n1821015363","n1821014924","n1821014873","n1821014932","n1821014668","n1821015404","n1821014716","n1821015243","n1821015265","n1821014710","n1821015371","n1821015415","n1821014870","n1821015356","n1821015373","n1821014681","n1821014714","n1821015385","n1821014911","n1821015057","n1821014867","n1821014998","n1821015142","n1821015234","n1821015446","n1821014862","n1821015369","n1821014945","n1821015003","n1821014667","n1821015413","n1821015256","n1821015327","n1821015160","n1821014907","n1821015431","n1821015172","n1821015034","n1821014741","n1821015033","n1821015239","n1821015007","n1821015316","n1821015285","n1821014633","n1821015263","n1821015069","n1821014846","n1821014779","n1821015011","n1821015012","n1821014845","n1821015418","n1821015442","n1821015266","n1821015336","n1821014755","n1821015188","n1821014925","n1821014816","n1821014869","n1821014967","n1821015286","n1821015147","n1821015410","n1821015126","n1821015438","n1821015018","n1821015354","n1821015337","n1821014766","n1821014740","n1821015228","n1821015173","n1821015407","n1821015076","n1821015451","n1821015024","n1821015314","n1821014784","n1821015045","n1821014735","n1821015205","n1821014986","n1821015240","n1821015098","n1821014825","n1821015302","n1821014918","n1821014718","n1821014896","n1821014853","n1821015194","n1821015165","n1821015213","n1821014991","n1821015350","n1821015333","n1821015332","n1821015361","n1821015060","n1821014914","n1821015375","n1821015315","n1821015307","n1821014906","n1821014751","n1821014666","n1821015218","n1821014817","n1821015118","n1821014674","n1821015038","n1821014973","n1821015429","n1821015183","n1821015046","n1821014803","n1821015140","n1821015009","n1821014749","n1821015335","n1821014711","n1821014854","n1821015278","n1821015419","n1821014648","n1821015357","n1821014637","n1821014988","n1821015322","n1821015387","n1821015042","n1821014833","n1821015396","n1821015326","n1821014691","n1821015149","n1821015204","n1821015122","n1821014782","n1821014982","n1821014921","n1821014936","n1821014969","n1821014881","n1821015403","n1821014805","n1821015395","n1821014892","n1821014826","n1821014844","n1821015107","n1821015014","n1821014955","n1821015352","n1821015414","n1821014746","n1821015209","n1821014770","n1821015416","n1821014661","n1821014857","n1821014814","n1821014754","n1821014721","n1821014727","n1821015362","n1821015029","n1821015246","n1821015189","n1821014627","n1821015269","n1821014808","n1821014962","n1821015349","n1821015041","n1821014722","n1821015330","n1821015453","n1821015067","n1821014643","n1821014802","n1821015383","n1821015151","n1821015250","n1821015245","n1821014772","n1821014899","n1821015222","n1821015121","n1821014951","n1821015176","n1821015219","n1821015454","n1821014972","n1821014917","n1821015182","n1821015166","n1821015145","n1821014910","n1821015082","n1821014678","n1821014806","n1821015141","n1821015341","n1821014788","n1821015097","n1821014995","n1821015444","n1821015346","n1821015101","n1821015129","n1821015123","n1821015132","n1821015190","n1821015146","n1821015325","n1821015191","n1821015072","n1821015100","n1821015174","n1821015238","n1821015215","n1821014700","n1821015242","n1821014841","n1821014905","n1821014874","n1821014883","n1821014729","n1821014866","n1821014828","n1821015295","n1821014931","n1821014859","n1821014912","n1821014783","n1821014752","n1821014961","n1821015366","n1821015401","n1821015169","n1821015318","n1821014996","n1821014747","n1821014963","n1821014670","n1821015186","n1821015231","n1821015157","n1821014812","n1821015381","n1821014887","n1821015138","n1821014704","n1821014787","n1821014922","n1821015290","n1821015343","n1821014651","n1821014980","n1821014960","n1821015244","n1821015236","n1821015006","n1821014694","n1821014759","n1821015207","n1821015276","n1821015065","n1821014863","n1821014660","n1821014902","n1821014645","n1821015339","n1821014871","n1821015096","n1821015299","n1821014798","n1821014638","n1821015392","n1821014835","n1821014762","n1821014642","n1821015433","n1821014786","n1821015134","n1821014855","n1821015184","n1821014850","n1821015293","n1821015233","n1821015227","n1821014876","n1821014985","n1821014843","n1821015420","n1821015197","n1821015192","n1821015292","n1821015344","n1821014742","n1821014726","n1821015237","n1821014796","n1821014908","n1821014975","n1821014769","n1821014688","n1821014860","n1821014895","n1821014676","n1821015411","n1821014736","n1821015164","n1821014647","n1821015144","n1821014919","n1821015220","n1821015254","n1821015435","n1821015308","n1821015342","n1821014830","n1821015273","n1821014658","n1821014781","n1821015087","n1821015139","n1821015304","n1821014839","n1821015048","n1821015115","n1821015355","n1821015226","n1821015177","n1821015430","n1821014965","n1821014725","n1821015365","n1821015171","n1821015073","n1821015125","n1821015338","n1821015111","n1821014950","n1821015378","n1821015258","n1821015456","n1821015106","n1821014832","n1821014888","n1821014795","n1821014872","n1821014810","n1821014705","n1821014804","n1821014820","n1821015283","n1821014938","n1821014689","n1821015259","n1821015334","n1821015348","n1821014635","n1821015179","n1821014864","n1821014890","n1821015020","n1821014898","n1821015287","n1821015120","n1821014984","n1821014743","n1821014790","n1821014765","n1821014777","n1821015095","n1821014653","n1821015135","n1821014836","n1821014964","n1821014974","n1821014636","n1821014682","n1821014663","n1821014665","n1821015109","n1821015155","n1821014930","n1821014669","n1821015004","n1821015427","n1821014916","n1821015093","n1821015086","n1821015386","n1821014799","n1821014913","n1821015434","n1821014728","n1821014900","n1821015068","n1821015039","n1821015443","n1821015406","n1821015280","n1821015319","n1821015368","n1821014774","n1821015090","n1821015175","n1821015195","n1821014687","n1821015359","n1821015449","n1821014956","n1821014838","n1821014768","n1821014698","n1821015323","n1821014756","n1821015255","n1821015400","n1821014717","n1821014868","n1821014778","n1821015214","n1821014944","n1821014697","n1821014671","n1821014928","n1821015294","n1821014822","n1821015284","n1821015351","n1821015022","n1821015133","n1821014644","n1821015010","n1821014625","n1821014657","n1821014946","n1821015099","n1821015114","n1821014629","n1821014865","n1821014997","n1821014926","n1821014933","n1821015199","n1821014819","n1821015080","n1821014692","n1821014677","n1821015358","n1821015367","n1821015360","n1821015105","n1821015247","n1821015005","n1821014809","n1821014794","n1821014761","n1821014879","n1821014801","n1821015377","n1821015059","n1821014730","n1821015050","n1821015271","n1821015143","n1821014989","n1821015019","n1821014672","n1821014649","n1821014684","n1821014703","n1821015021","n1821015382","n1821014842","n1821014720","n1821014847","n1821015104","n1821014987","n1821014886","n1821015267","n1821015221","n1821015015","n1821015423","n1821014954","n1821014903","n1821014939","n1821015212","n1821014789","n1821014712","n1821014708","n1821015078","n1821015277","n1821015249","n1821014646","n1821014793","n1821015053","n1821014707","n1821015306","n1821015112","n1821015288","n1821015380","n1821015437","n1821015178","n1821015158","n1821015272","n1821015235","n1821015163","n1821015154","n1821015253","n1821014632","n1821015372","n1821015103","n1821015311","n1821015301","n1821014885","n1821014811","n1821014977","n1821015051","n1821014942","n1821014745","n1821015432","n1821015075","n1821014664","n1821014695","n1821015116","n1821014639","n1821015421","n1821015248","n1821014758","n1821014834","n1821015083","n1821015455","n1821015241","n1821015108","n1821014713","n1821015137","n1821015055","n1821015211","n1821014904","n1821015376","n1821015398","n1821014771","n1821014840","n1821015062","n1819790554","n1819790560","n1819790767","n1819790696","n1819790706","n1819790606","n1819790607","n1819790544","n1819790779","n1819790760","n1819790926","n1819790927","n1819790647","n1819790657","n1819790649","n1819790679","n1819790915","n1819790739","n1819790549","n1819790671","n1819790686","n1819790798","n1819790791","n1819790563","n1819790720","n1819790704","n1819790795","n1819790836","n1819790622","n1819790615","n1819790654","n1819790931","n1819790595","n1819790753","n1819790612","n1819790623","n1819790564","n1819790552","n1819790645","n1819790625","n1819790605","n1819790668","n1819790731","n1819790718","n1819790781","n1819790665","n1819790659","n1819790726","n1819790642","n1819790854","n1819790697","n1819790867","n1819790833","n1819790555","n1819790774","n1819790881","n1819790530","n1819790909","n1819790891","n1819790590","n1819790738","n1819790609","n1819790528","n1819790674","n1819790583","n1819790559","n1819790863","n1819790912","n1819790685","n1819790913"]},"n185955128":{"id":"n185955128","loc":[-85.6189367,41.9519432],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185948818":{"id":"n185948818","loc":[-85.616755,41.952231],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:44Z","tags":{}},"n185978819":{"id":"n185978819","loc":[-85.616773,41.954737],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978821":{"id":"n185978821","loc":[-85.616699,41.954742],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n2138420714":{"id":"n2138420714","loc":[-85.6176304,41.9515154],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420715":{"id":"n2138420715","loc":[-85.6177355,41.9515717],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420716":{"id":"n2138420716","loc":[-85.6192901,41.951573],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420718":{"id":"n2138420718","loc":[-85.6171481,41.9513579],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420719":{"id":"n2138420719","loc":[-85.6165981,41.9519199],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420720":{"id":"n2138420720","loc":[-85.6165719,41.9519922],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420721":{"id":"n2138420721","loc":[-85.6165832,41.9520757],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420722":{"id":"n2138420722","loc":[-85.6166355,41.9521453],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420723":{"id":"n2138420723","loc":[-85.6169161,41.9522788],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420724":{"id":"n2138420724","loc":[-85.6170882,41.9522538],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420725":{"id":"n2138420725","loc":[-85.6189204,41.9514674],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420726":{"id":"n2138420726","loc":[-85.6180346,41.9514735],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420727":{"id":"n2138420727","loc":[-85.6180362,41.9515719],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420728":{"id":"n2138420728","loc":[-85.6189204,41.9515727],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420744":{"id":"n2138420744","loc":[-85.618919,41.9519571],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420745":{"id":"n2138420745","loc":[-85.6194575,41.9522374],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420746":{"id":"n2138420746","loc":[-85.6181777,41.9536179],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420747":{"id":"n2138420747","loc":[-85.6176582,41.9533658],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420748":{"id":"n2138420748","loc":[-85.6179871,41.9530242],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420749":{"id":"n2138420749","loc":[-85.618429,41.9532476],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420750":{"id":"n2138420750","loc":[-85.6185538,41.9531194],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420751":{"id":"n2138420751","loc":[-85.6180765,41.9528677],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420752":{"id":"n2138420752","loc":[-85.6180394,41.9528855],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420753":{"id":"n2138420753","loc":[-85.6193752,41.9521695],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420754":{"id":"n2138420754","loc":[-85.6181374,41.9535376],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420755":{"id":"n2138420755","loc":[-85.6179898,41.9535545],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420756":{"id":"n2138420756","loc":[-85.6177286,41.9534228],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420757":{"id":"n2138420757","loc":[-85.6181011,41.9530292],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420759":{"id":"n2138420759","loc":[-85.6185158,41.9531194],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420760":{"id":"n2138420760","loc":[-85.6191318,41.9520425],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420761":{"id":"n2138420761","loc":[-85.6182348,41.9529815],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420762":{"id":"n2138420762","loc":[-85.6184853,41.9524248],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420763":{"id":"n2138420763","loc":[-85.6186764,41.9525193],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420764":{"id":"n2138420764","loc":[-85.6189421,41.9526483],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420765":{"id":"n2138420765","loc":[-85.6182875,41.9531222],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420766":{"id":"n2138420766","loc":[-85.6179141,41.9535163],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420767":{"id":"n2138420767","loc":[-85.6178363,41.9535735],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n185948824":{"id":"n185948824","loc":[-85.6165667,41.9529715],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n2138420758":{"id":"n2138420758","loc":[-85.6184408,41.953201],"version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:47Z","tags":{}},"n2138422349":{"id":"n2138422349","loc":[-85.6175136,41.9533346],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422350":{"id":"n2138422350","loc":[-85.6171867,41.9531679],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422351":{"id":"n2138422351","loc":[-85.61722,41.9531305],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422352":{"id":"n2138422352","loc":[-85.6171889,41.9531158],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422353":{"id":"n2138422353","loc":[-85.6171733,41.9531284],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422354":{"id":"n2138422354","loc":[-85.616765,41.9529207],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422355":{"id":"n2138422355","loc":[-85.6167565,41.9529355],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422356":{"id":"n2138422356","loc":[-85.6164772,41.9527911],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422357":{"id":"n2138422357","loc":[-85.6168227,41.9524261],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422358":{"id":"n2138422358","loc":[-85.6171913,41.9526158],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422359":{"id":"n2138422359","loc":[-85.6172403,41.9525589],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422360":{"id":"n2138422360","loc":[-85.6172097,41.952542],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422361":{"id":"n2138422361","loc":[-85.6173948,41.9523512],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422362":{"id":"n2138422362","loc":[-85.6174256,41.9523678],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422363":{"id":"n2138422363","loc":[-85.6174831,41.9523086],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422364":{"id":"n2138422364","loc":[-85.6173316,41.9522289],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422365":{"id":"n2138422365","loc":[-85.6174507,41.9521024],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422366":{"id":"n2138422366","loc":[-85.6174773,41.9521155],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422367":{"id":"n2138422367","loc":[-85.6176577,41.9519232],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422368":{"id":"n2138422368","loc":[-85.6176336,41.9519105],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422369":{"id":"n2138422369","loc":[-85.617747,41.9517861],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422370":{"id":"n2138422370","loc":[-85.6182675,41.9520559],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422371":{"id":"n2138422371","loc":[-85.6182105,41.9521219],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422372":{"id":"n2138422372","loc":[-85.6183863,41.9522203],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422373":{"id":"n2138422373","loc":[-85.6180984,41.9525266],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422374":{"id":"n2138422374","loc":[-85.6179159,41.9524295],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422375":{"id":"n2138422375","loc":[-85.617854,41.9524979],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422376":{"id":"n2138422376","loc":[-85.6177686,41.9524531],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422377":{"id":"n2138422377","loc":[-85.6174716,41.9527765],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422378":{"id":"n2138422378","loc":[-85.6178545,41.9529756],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138425424":{"id":"n2138425424","loc":[-85.6171736,41.9536385],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425425":{"id":"n2138425425","loc":[-85.6180159,41.9535782],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425426":{"id":"n2138425426","loc":[-85.6181068,41.9536282],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425427":{"id":"n2138425427","loc":[-85.6180673,41.9542678],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425428":{"id":"n2138425428","loc":[-85.6178636,41.9542634],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425429":{"id":"n2138425429","loc":[-85.6176204,41.9542046],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425430":{"id":"n2138425430","loc":[-85.6174366,41.9541031],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425431":{"id":"n2138425431","loc":[-85.6172942,41.9539781],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425432":{"id":"n2138425432","loc":[-85.6172171,41.9538399],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425433":{"id":"n2138425433","loc":[-85.6168138,41.9543266],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425434":{"id":"n2138425434","loc":[-85.6167779,41.9538098],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425435":{"id":"n2138425435","loc":[-85.6165849,41.9537073],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425441":{"id":"n2138425441","loc":[-85.616458,41.9543184],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425442":{"id":"n2138425442","loc":[-85.6166428,41.954345],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425445":{"id":"n2138425445","loc":[-85.6181332,41.9514117],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425446":{"id":"n2138425446","loc":[-85.6183263,41.9514111],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425447":{"id":"n2138425447","loc":[-85.6185033,41.9514102],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425449":{"id":"n2138425449","loc":[-85.6186809,41.9514093],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425451":{"id":"n2138425451","loc":[-85.6188681,41.9514082],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138436008":{"id":"n2138436008","loc":[-85.6170474,41.9513604],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436009":{"id":"n2138436009","loc":[-85.6164937,41.9519586],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436010":{"id":"n2138436010","loc":[-85.616497,41.9520725],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436011":{"id":"n2138436011","loc":[-85.6165654,41.9521645],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436012":{"id":"n2138436012","loc":[-85.6166631,41.9522178],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436013":{"id":"n2138436013","loc":[-85.6167327,41.9522554],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436014":{"id":"n2138436014","loc":[-85.6172383,41.9525125],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138439319":{"id":"n2138439319","loc":[-85.6170432,41.9524057],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439320":{"id":"n2138439320","loc":[-85.617691,41.9517107],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439321":{"id":"n2138439321","loc":[-85.6177727,41.9516794],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439322":{"id":"n2138439322","loc":[-85.619085,41.9516811],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439323":{"id":"n2138439323","loc":[-85.6179432,41.952895],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439324":{"id":"n2138439324","loc":[-85.6180389,41.9529384],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439325":{"id":"n2138439325","loc":[-85.6176303,41.9533604],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439326":{"id":"n2138439326","loc":[-85.6175538,41.9534396],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439327":{"id":"n2138439327","loc":[-85.6173806,41.9523658],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439328":{"id":"n2138439328","loc":[-85.6171841,41.9522542],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439329":{"id":"n2138439329","loc":[-85.6172077,41.9524958],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439330":{"id":"n2138439330","loc":[-85.6171235,41.9525809],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439331":{"id":"n2138439331","loc":[-85.6180938,41.9527349],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439332":{"id":"n2138439332","loc":[-85.6177023,41.9525253],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439333":{"id":"n2138439333","loc":[-85.6175543,41.9526865],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439334":{"id":"n2138439334","loc":[-85.6179589,41.9528783],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n185948820":{"id":"n185948820","loc":[-85.6163249,41.952701],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185948822":{"id":"n185948822","loc":[-85.6163757,41.952855],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185955123":{"id":"n185955123","loc":[-85.6198103,41.9510408],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185958839":{"id":"n185958839","loc":[-85.611651,41.954761],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185965033":{"id":"n185965033","loc":[-85.614195,41.954754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185976502":{"id":"n185976502","loc":[-85.617375,41.947559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:32Z","tags":{}},"n185976504":{"id":"n185976504","loc":[-85.6174164,41.9510804],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185978828":{"id":"n185978828","loc":[-85.613542,41.954756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:36Z","tags":{}},"n185978830":{"id":"n185978830","loc":[-85.610373,41.954774],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:36Z","tags":{}},"n2138420713":{"id":"n2138420713","loc":[-85.6174641,41.9506942],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:11Z","tags":{}},"n2138420717":{"id":"n2138420717","loc":[-85.6173027,41.9512895],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420768":{"id":"n2138420768","loc":[-85.61745,41.9501974],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420773":{"id":"n2138420773","loc":[-85.6174135,41.9489136],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138425436":{"id":"n2138425436","loc":[-85.6159148,41.9538036],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425437":{"id":"n2138425437","loc":[-85.6159534,41.9539677],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425438":{"id":"n2138425438","loc":[-85.6160306,41.9540846],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425439":{"id":"n2138425439","loc":[-85.6161354,41.954181],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425440":{"id":"n2138425440","loc":[-85.6162733,41.954263],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425443":{"id":"n2138425443","loc":[-85.6183273,41.9510826],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425444":{"id":"n2138425444","loc":[-85.6181354,41.9510835],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425448":{"id":"n2138425448","loc":[-85.6185033,41.9510816],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425450":{"id":"n2138425450","loc":[-85.6186816,41.9510808],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425452":{"id":"n2138425452","loc":[-85.6188641,41.9510818],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138435984":{"id":"n2138435984","loc":[-85.6167607,41.9501009],"version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:47Z","tags":{}},"n2138436000":{"id":"n2138436000","loc":[-85.6173169,41.947558],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436001":{"id":"n2138436001","loc":[-85.6173362,41.948883],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436002":{"id":"n2138436002","loc":[-85.6167791,41.9492952],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436003":{"id":"n2138436003","loc":[-85.6167543,41.949349],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436004":{"id":"n2138436004","loc":[-85.6167648,41.9509125],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436005":{"id":"n2138436005","loc":[-85.6168832,41.9510412],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436006":{"id":"n2138436006","loc":[-85.6170045,41.9511417],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436007":{"id":"n2138436007","loc":[-85.6170624,41.9512483],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436017":{"id":"n2138436017","loc":[-85.6168094,41.9492729],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436021":{"id":"n2138436021","loc":[-85.6167553,41.9494886],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436023":{"id":"n2138436023","loc":[-85.6167585,41.9499707],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436025":{"id":"n2138436025","loc":[-85.6167567,41.9497018],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"w203838284":{"id":"w203838284","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"baseball"},"nodes":["n2138425424","n2138425425","n2138425426","n2138425427","n2138425428","n2138425429","n2138425430","n2138425431","n2138425432","n2138425424"]},"w203837928":{"id":"w203837928","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"highway":"service"},"nodes":["n2138420717","n2138420718","n2138420719","n2138420720","n2138420721","n2138420722","n185948818","n2138420723","n2138420724","n2138420715"]},"w203839364":{"id":"w203839364","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439331","n2138439332"]},"w203837932":{"id":"w203837932","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2138420744","n2138420745","n2138420746","n2138420747","n2138420748","n2138420749","n2138420750","n2138420751","n2138420744"]},"w203839362":{"id":"w203839362","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439327","n2138439328"]},"w203839363":{"id":"w203839363","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439329","n2138439330"]},"w203837933":{"id":"w203837933","version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:42Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n185955128","n2138420760","n2138420753","n2138420764","n2138420759","n2138420758","n2138420754","n2138420755","n2138420766","n2138420756"]},"w203837936":{"id":"w203837936","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420765","n2138420766"]},"w17966364":{"id":"w17966364","version":"2","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"access":"private","highway":"service","name":"Collins Dr","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Collins","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313686","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185961362","n185976502","n2138420773","n2138420768","n2138420713","n185976504","n2138420717","n2138420714","n2138420715","n2138420727","n2138420728","n2138420716"]},"w203838040":{"id":"w203838040","version":"3","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:19Z","tags":{"amenity":"school","area":"yes","building":"yes","name":"Three Rivers Middle School"},"nodes":["n2138422349","n2138422350","n2138422351","n2138422352","n2138422353","n2138422354","n2138422355","n2138422356","n2138422357","n2138439330","n2138422358","n2138422359","n2138422360","n2138436014","n2138439327","n2138422361","n2138422362","n2138422363","n2138422364","n2138422365","n2138422366","n2138422367","n2138422368","n2138422369","n2138422370","n2138422371","n2138422372","n2138422373","n2138422374","n2138422375","n2138422376","n2138439332","n2138439333","n2138422377","n2138422378","n2138422349"]},"w17964049":{"id":"w17964049","version":"3","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:46Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335181","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955120","n185955123","n2138420716","n185955128","n2138420762","n2138420752","n2138420761","n2138420759"]},"w41074899":{"id":"w41074899","version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"highway":"secondary","name":"E Hoffman St","ref":"M 60","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978817","n185978819","n185978821","n185965033","n185978828","n185958839","n185978830"]},"w203839365":{"id":"w203839365","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439333","n2138439334"]},"w203837935":{"id":"w203837935","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420762","n2138420763","n2138420764"]},"w203838287":{"id":"w203838287","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425446","n2138425447","n2138425448","n2138425443","n2138425446"]},"w203837934":{"id":"w203837934","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420760","n2138420763","n2138420761"]},"w203838289":{"id":"w203838289","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425449","n2138425451","n2138425452","n2138425450","n2138425449"]},"w17963047":{"id":"w17963047","version":"4","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:19Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331535","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185948818","n2138436013","n185948820","n185948822","n185948824","n2138439326","n2138420767","n2138420766"]},"w203839091":{"id":"w203839091","version":"3","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:44Z","tags":{"highway":"footway"},"nodes":["n185976502","n2138436000","n2138436001","n2138436017","n2138436002","n2138436003","n2138436021","n2138436025","n2138436023","n2138435984","n2138436004","n2138436005","n2138436006","n2138436007","n2138436008","n2138436009","n2138436010","n2138436011","n2138436012","n2138436013","n2138439319","n2138439329","n2138436014"]},"w204830797":{"id":"w204830797","version":"1","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:37Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420756","n2138420757","n2138420765","n2138420758"]},"w203838288":{"id":"w203838288","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425447","n2138425449","n2138425450","n2138425448","n2138425447"]},"w203838285":{"id":"w203838285","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"baseball"},"nodes":["n2138425433","n2138425434","n2138425435","n2138425436","n2138425437","n2138425438","n2138425439","n2138425440","n2138425441","n2138425442","n2138425433"]},"w203838286":{"id":"w203838286","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425443","n2138425444","n2138425445","n2138425446","n2138425443"]},"w203837929":{"id":"w203837929","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2138420725","n2138420726","n2138420727","n2138420728","n2138420725"]},"w203839361":{"id":"w203839361","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439319","n2138439328","n2138439320","n2138439321","n2138439322","n2138439331","n2138439334","n2138439323","n2138439324","n2138439325","n2138439326"]},"n394381698":{"id":"n394381698","loc":[-85.614471,41.954755],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381699":{"id":"n394381699","loc":[-85.6152,41.954744],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381700":{"id":"n394381700","loc":[-85.615201,41.954081],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381701":{"id":"n394381701","loc":[-85.614426,41.954042],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381702":{"id":"n394381702","loc":[-85.616319,41.954749],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381704":{"id":"n394381704","loc":[-85.616152,41.954752],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381706":{"id":"n394381706","loc":[-85.615201,41.95483],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394490775":{"id":"n394490775","loc":[-85.613971,41.954839],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490782":{"id":"n394490782","loc":[-85.614372,41.954841],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n185958835":{"id":"n185958835","loc":[-85.611615,41.953704],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958837":{"id":"n185958837","loc":[-85.611636,41.953938],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958842":{"id":"n185958842","loc":[-85.611187,41.951686],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958844":{"id":"n185958844","loc":[-85.611087,41.951741],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958845":{"id":"n185958845","loc":[-85.611034,41.951852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958847":{"id":"n185958847","loc":[-85.611016,41.95196],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958849":{"id":"n185958849","loc":[-85.610989,41.95328],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958851":{"id":"n185958851","loc":[-85.611021,41.953484],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958852":{"id":"n185958852","loc":[-85.611091,41.953603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958853":{"id":"n185958853","loc":[-85.6112,41.953661],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958855":{"id":"n185958855","loc":[-85.611364,41.953686],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185965031":{"id":"n185965031","loc":[-85.614204,41.953696],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965032":{"id":"n185965032","loc":[-85.6142,41.953978],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965062":{"id":"n185965062","loc":[-85.614617,41.951639],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965064":{"id":"n185965064","loc":[-85.61463,41.951852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965066":{"id":"n185965066","loc":[-85.614642,41.953436],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965068":{"id":"n185965068","loc":[-85.6146,41.953551],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965071":{"id":"n185965071","loc":[-85.614487,41.95363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965073":{"id":"n185965073","loc":[-85.614354,41.953672],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185966288":{"id":"n185966288","loc":[-85.61179,41.953695],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966290":{"id":"n185966290","loc":[-85.612232,41.953685],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966293":{"id":"n185966293","loc":[-85.613438,41.953677],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966349":{"id":"n185966349","loc":[-85.611323,41.951653],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966351":{"id":"n185966351","loc":[-85.611892,41.951642],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966352":{"id":"n185966352","loc":[-85.612216,41.951641],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966353":{"id":"n185966353","loc":[-85.613111,41.951639],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966354":{"id":"n185966354","loc":[-85.613396,41.95164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966355":{"id":"n185966355","loc":[-85.614221,41.95164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185973839":{"id":"n185973839","loc":[-85.61341,41.951919],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185973840":{"id":"n185973840","loc":[-85.613438,41.953308],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185980222":{"id":"n185980222","loc":[-85.613781,41.955164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980223":{"id":"n185980223","loc":[-85.613815,41.955237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980225":{"id":"n185980225","loc":[-85.613837,41.955316],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185990345":{"id":"n185990345","loc":[-85.612211,41.951977],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:15:01Z","tags":{}},"n185955743":{"id":"n185955743","loc":[-85.613873,41.95635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185980227":{"id":"n185980227","loc":[-85.613851,41.955415],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980229":{"id":"n185980229","loc":[-85.613918,41.957134],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n394381703":{"id":"n394381703","loc":[-85.616287,41.955674],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381705":{"id":"n394381705","loc":[-85.615164,41.955676],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394490777":{"id":"n394490777","loc":[-85.613973,41.955979],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490780":{"id":"n394490780","loc":[-85.614364,41.955987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"w17965307":{"id":"w17965307","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:58Z","tags":{"highway":"residential","name":"Bates Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bates","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313640:15313641","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958842","n185966349","n185966351","n185966352","n185966353","n185966354","n185966355","n185965062"]},"w17967957":{"id":"w17967957","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:55:16Z","tags":{"highway":"residential","name":"Krum Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Krum","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313643","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966352","n185990345","n185966290"]},"w17964508":{"id":"w17964508","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:11Z","tags":{"highway":"residential","name":"Blossom Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Blossom","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15324628","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958842","n185958844","n185958845","n185958847","n185958849","n185958851","n185958852","n185958853","n185958855","n185958835"]},"w17964507":{"id":"w17964507","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:10Z","tags":{"highway":"residential","name":"Blossom Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Blossom","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313629","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958835","n185958837","n185958839"]},"w34367080":{"id":"w34367080","version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394381699","n394381706","n394381705","n394381703","n394381702","n394381704","n394381699"]},"w17965302":{"id":"w17965302","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:55Z","tags":{"highway":"residential","name":"Clausen Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Clausen","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313630:15313631:15313632","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958835","n185966288","n185966290","n185966293","n185965031"]},"w17965156":{"id":"w17965156","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:54Z","tags":{"highway":"residential","name":"Orchard Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Orchard","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15327962","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965062","n185965064","n185965066","n185965068","n185965071","n185965073","n185965031"]},"w34369812":{"id":"w34369812","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490775","n394490777","n394490780","n394490782","n394490775"]},"w17965151":{"id":"w17965151","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:52Z","tags":{"highway":"residential","name":"Orchard Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Orchard","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313628","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965031","n185965032","n185965033"]},"w17966756":{"id":"w17966756","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:47:10Z","tags":{"access":"private","highway":"service","name":"Lockport Dr","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Lockport","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313621:15314402","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978828","n185980222","n185980223","n185980225","n185980227","n185955743","n185980229"]},"w17966056":{"id":"w17966056","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:57Z","tags":{"highway":"residential","name":"Angell Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Angell","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313639","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966354","n185973839","n185973840","n185966293"]},"w34367079":{"id":"w34367079","version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394381700","n394381701","n394381698","n394381699","n394381700"]},"n185955744":{"id":"n185955744","loc":[-85.611753,41.956208],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185988932":{"id":"n185988932","loc":[-85.6159,41.956336],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185988934":{"id":"n185988934","loc":[-85.6159158,41.9590646],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185988935":{"id":"n185988935","loc":[-85.6157358,41.959364],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{"highway":"turning_circle","source":"Bing"}},"n2138447007":{"id":"n2138447007","loc":[-85.6130784,41.9590689],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447008":{"id":"n2138447008","loc":[-85.6133328,41.9593805],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447003":{"id":"n2138447003","loc":[-85.610238,41.9547745],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447004":{"id":"n2138447004","loc":[-85.6102652,41.9566041],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447005":{"id":"n2138447005","loc":[-85.610325,41.9568823],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447006":{"id":"n2138447006","loc":[-85.6105644,41.9571383],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447009":{"id":"n2138447009","loc":[-85.6135946,41.959948],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447010":{"id":"n2138447010","loc":[-85.6136071,41.9629372],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447011":{"id":"n2138447011","loc":[-85.6134392,41.9633182],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447012":{"id":"n2138447012","loc":[-85.6130151,41.9636073],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447013":{"id":"n2138447013","loc":[-85.6122729,41.9637125],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447014":{"id":"n2138447014","loc":[-85.6056682,41.963752],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"w17964174":{"id":"w17964174","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:27:41Z","tags":{"access":"private","highway":"service","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314401","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955743","n185955744"]},"w17967743":{"id":"w17967743","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:06Z","tags":{"access":"private","highway":"service","name":"Manistee River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Manistee River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326121:15326126:15326127:15326116","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971574","n185988932","n185971407","n185981301","n185967987","n185988934","n185988935"]},"w203839666":{"id":"w203839666","version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{"highway":"residential","name":"Hov Aire Drive"},"nodes":["n2138447003","n2138447004","n2138447005","n2138447006","n2138447007","n2138447008","n2138447009","n2138447010","n2138447011","n2138447012","n2138447013","n2138447014"]}}';iD.data = {
38740     "deprecated": [
38741         {
38742             "old": {
38743                 "amenity": "firepit"
38744             },
38745             "replace": {
38746                 "leisure": "firepit"
38747             }
38748         },
38749         {
38750             "old": {
38751                 "barrier": "wire_fence"
38752             },
38753             "replace": {
38754                 "barrier": "fence",
38755                 "fence_type": "chain"
38756             }
38757         },
38758         {
38759             "old": {
38760                 "barrier": "wood_fence"
38761             },
38762             "replace": {
38763                 "barrier": "fence",
38764                 "fence_type": "wood"
38765             }
38766         },
38767         {
38768             "old": {
38769                 "highway": "ford"
38770             },
38771             "replace": {
38772                 "ford": "yes"
38773             }
38774         },
38775         {
38776             "old": {
38777                 "highway": "stile"
38778             },
38779             "replace": {
38780                 "barrier": "stile"
38781             }
38782         },
38783         {
38784             "old": {
38785                 "highway": "incline"
38786             },
38787             "replace": {
38788                 "highway": "road",
38789                 "incline": "up"
38790             }
38791         },
38792         {
38793             "old": {
38794                 "highway": "incline_steep"
38795             },
38796             "replace": {
38797                 "highway": "road",
38798                 "incline": "up"
38799             }
38800         },
38801         {
38802             "old": {
38803                 "highway": "unsurfaced"
38804             },
38805             "replace": {
38806                 "highway": "road",
38807                 "incline": "unpaved"
38808             }
38809         },
38810         {
38811             "old": {
38812                 "landuse": "wood"
38813             },
38814             "replace": {
38815                 "landuse": "forest",
38816                 "natural": "wood"
38817             }
38818         },
38819         {
38820             "old": {
38821                 "natural": "marsh"
38822             },
38823             "replace": {
38824                 "natural": "wetland",
38825                 "wetland": "marsh"
38826             }
38827         },
38828         {
38829             "old": {
38830                 "power_source": "*"
38831             },
38832             "replace": {
38833                 "generator:source": "$1"
38834             }
38835         },
38836         {
38837             "old": {
38838                 "power_rating": "*"
38839             },
38840             "replace": {
38841                 "generator:output": "$1"
38842             }
38843         },
38844         {
38845             "old": {
38846                 "shop": "organic"
38847             },
38848             "replace": {
38849                 "shop": "supermarket",
38850                 "organic": "only"
38851             }
38852         }
38853     ],
38854     "discarded": [
38855         "created_by",
38856         "odbl",
38857         "odbl:note",
38858         "tiger:upload_uuid",
38859         "tiger:tlid",
38860         "tiger:source",
38861         "tiger:separated",
38862         "geobase:datasetName",
38863         "geobase:uuid",
38864         "sub_sea:type",
38865         "KSJ2:ADS",
38866         "KSJ2:ARE",
38867         "KSJ2:AdminArea",
38868         "KSJ2:COP_label",
38869         "KSJ2:DFD",
38870         "KSJ2:INT",
38871         "KSJ2:INT_label",
38872         "KSJ2:LOC",
38873         "KSJ2:LPN",
38874         "KSJ2:OPC",
38875         "KSJ2:PubFacAdmin",
38876         "KSJ2:RAC",
38877         "KSJ2:RAC_label",
38878         "KSJ2:RIC",
38879         "KSJ2:RIN",
38880         "KSJ2:WSC",
38881         "KSJ2:coordinate",
38882         "KSJ2:curve_id",
38883         "KSJ2:curve_type",
38884         "KSJ2:filename",
38885         "KSJ2:lake_id",
38886         "KSJ2:lat",
38887         "KSJ2:long",
38888         "KSJ2:river_id",
38889         "yh:LINE_NAME",
38890         "yh:LINE_NUM",
38891         "yh:STRUCTURE",
38892         "yh:TOTYUMONO",
38893         "yh:TYPE",
38894         "yh:WIDTH_RANK",
38895         "SK53_bulk:load"
38896     ],
38897     "wikipedia": [
38898         [
38899             "English",
38900             "English",
38901             "en"
38902         ],
38903         [
38904             "German",
38905             "Deutsch",
38906             "de"
38907         ],
38908         [
38909             "Dutch",
38910             "Nederlands",
38911             "nl"
38912         ],
38913         [
38914             "French",
38915             "Français",
38916             "fr"
38917         ],
38918         [
38919             "Italian",
38920             "Italiano",
38921             "it"
38922         ],
38923         [
38924             "Russian",
38925             "Русский",
38926             "ru"
38927         ],
38928         [
38929             "Spanish",
38930             "Español",
38931             "es"
38932         ],
38933         [
38934             "Polish",
38935             "Polski",
38936             "pl"
38937         ],
38938         [
38939             "Swedish",
38940             "Svenska",
38941             "sv"
38942         ],
38943         [
38944             "Japanese",
38945             "日本語",
38946             "ja"
38947         ],
38948         [
38949             "Portuguese",
38950             "Português",
38951             "pt"
38952         ],
38953         [
38954             "Chinese",
38955             "中文",
38956             "zh"
38957         ],
38958         [
38959             "Vietnamese",
38960             "Tiếng Việt",
38961             "vi"
38962         ],
38963         [
38964             "Ukrainian",
38965             "Українська",
38966             "uk"
38967         ],
38968         [
38969             "Catalan",
38970             "Català",
38971             "ca"
38972         ],
38973         [
38974             "Norwegian (Bokmål)",
38975             "Norsk (Bokmål)",
38976             "no"
38977         ],
38978         [
38979             "Waray-Waray",
38980             "Winaray",
38981             "war"
38982         ],
38983         [
38984             "Cebuano",
38985             "Sinugboanong Binisaya",
38986             "ceb"
38987         ],
38988         [
38989             "Finnish",
38990             "Suomi",
38991             "fi"
38992         ],
38993         [
38994             "Persian",
38995             "فارسی",
38996             "fa"
38997         ],
38998         [
38999             "Czech",
39000             "Čeština",
39001             "cs"
39002         ],
39003         [
39004             "Hungarian",
39005             "Magyar",
39006             "hu"
39007         ],
39008         [
39009             "Korean",
39010             "한국어",
39011             "ko"
39012         ],
39013         [
39014             "Romanian",
39015             "Română",
39016             "ro"
39017         ],
39018         [
39019             "Arabic",
39020             "العربية",
39021             "ar"
39022         ],
39023         [
39024             "Turkish",
39025             "Türkçe",
39026             "tr"
39027         ],
39028         [
39029             "Indonesian",
39030             "Bahasa Indonesia",
39031             "id"
39032         ],
39033         [
39034             "Kazakh",
39035             "Қазақша",
39036             "kk"
39037         ],
39038         [
39039             "Malay",
39040             "Bahasa Melayu",
39041             "ms"
39042         ],
39043         [
39044             "Serbian",
39045             "Српски / Srpski",
39046             "sr"
39047         ],
39048         [
39049             "Slovak",
39050             "Slovenčina",
39051             "sk"
39052         ],
39053         [
39054             "Esperanto",
39055             "Esperanto",
39056             "eo"
39057         ],
39058         [
39059             "Danish",
39060             "Dansk",
39061             "da"
39062         ],
39063         [
39064             "Lithuanian",
39065             "Lietuvių",
39066             "lt"
39067         ],
39068         [
39069             "Basque",
39070             "Euskara",
39071             "eu"
39072         ],
39073         [
39074             "Bulgarian",
39075             "Български",
39076             "bg"
39077         ],
39078         [
39079             "Hebrew",
39080             "עברית",
39081             "he"
39082         ],
39083         [
39084             "Slovenian",
39085             "Slovenščina",
39086             "sl"
39087         ],
39088         [
39089             "Croatian",
39090             "Hrvatski",
39091             "hr"
39092         ],
39093         [
39094             "Volapük",
39095             "Volapük",
39096             "vo"
39097         ],
39098         [
39099             "Estonian",
39100             "Eesti",
39101             "et"
39102         ],
39103         [
39104             "Hindi",
39105             "हिन्दी",
39106             "hi"
39107         ],
39108         [
39109             "Uzbek",
39110             "O‘zbek",
39111             "uz"
39112         ],
39113         [
39114             "Galician",
39115             "Galego",
39116             "gl"
39117         ],
39118         [
39119             "Norwegian (Nynorsk)",
39120             "Nynorsk",
39121             "nn"
39122         ],
39123         [
39124             "Simple English",
39125             "Simple English",
39126             "simple"
39127         ],
39128         [
39129             "Azerbaijani",
39130             "Azərbaycanca",
39131             "az"
39132         ],
39133         [
39134             "Latin",
39135             "Latina",
39136             "la"
39137         ],
39138         [
39139             "Greek",
39140             "Ελληνικά",
39141             "el"
39142         ],
39143         [
39144             "Thai",
39145             "ไทย",
39146             "th"
39147         ],
39148         [
39149             "Serbo-Croatian",
39150             "Srpskohrvatski / Српскохрватски",
39151             "sh"
39152         ],
39153         [
39154             "Georgian",
39155             "ქართული",
39156             "ka"
39157         ],
39158         [
39159             "Occitan",
39160             "Occitan",
39161             "oc"
39162         ],
39163         [
39164             "Macedonian",
39165             "Македонски",
39166             "mk"
39167         ],
39168         [
39169             "Newar / Nepal Bhasa",
39170             "नेपाल भाषा",
39171             "new"
39172         ],
39173         [
39174             "Tagalog",
39175             "Tagalog",
39176             "tl"
39177         ],
39178         [
39179             "Piedmontese",
39180             "Piemontèis",
39181             "pms"
39182         ],
39183         [
39184             "Belarusian",
39185             "Беларуская",
39186             "be"
39187         ],
39188         [
39189             "Haitian",
39190             "Krèyol ayisyen",
39191             "ht"
39192         ],
39193         [
39194             "Tamil",
39195             "தமிழ்",
39196             "ta"
39197         ],
39198         [
39199             "Telugu",
39200             "తెలుగు",
39201             "te"
39202         ],
39203         [
39204             "Belarusian (Taraškievica)",
39205             "Беларуская (тарашкевіца)",
39206             "be-x-old"
39207         ],
39208         [
39209             "Latvian",
39210             "Latviešu",
39211             "lv"
39212         ],
39213         [
39214             "Breton",
39215             "Brezhoneg",
39216             "br"
39217         ],
39218         [
39219             "Malagasy",
39220             "Malagasy",
39221             "mg"
39222         ],
39223         [
39224             "Albanian",
39225             "Shqip",
39226             "sq"
39227         ],
39228         [
39229             "Armenian",
39230             "Հայերեն",
39231             "hy"
39232         ],
39233         [
39234             "Tatar",
39235             "Tatarça / Татарча",
39236             "tt"
39237         ],
39238         [
39239             "Javanese",
39240             "Basa Jawa",
39241             "jv"
39242         ],
39243         [
39244             "Welsh",
39245             "Cymraeg",
39246             "cy"
39247         ],
39248         [
39249             "Marathi",
39250             "मराठी",
39251             "mr"
39252         ],
39253         [
39254             "Luxembourgish",
39255             "Lëtzebuergesch",
39256             "lb"
39257         ],
39258         [
39259             "Icelandic",
39260             "Íslenska",
39261             "is"
39262         ],
39263         [
39264             "Bosnian",
39265             "Bosanski",
39266             "bs"
39267         ],
39268         [
39269             "Burmese",
39270             "မြန်မာဘာသာ",
39271             "my"
39272         ],
39273         [
39274             "Yoruba",
39275             "Yorùbá",
39276             "yo"
39277         ],
39278         [
39279             "Bashkir",
39280             "Башҡорт",
39281             "ba"
39282         ],
39283         [
39284             "Malayalam",
39285             "മലയാളം",
39286             "ml"
39287         ],
39288         [
39289             "Aragonese",
39290             "Aragonés",
39291             "an"
39292         ],
39293         [
39294             "Lombard",
39295             "Lumbaart",
39296             "lmo"
39297         ],
39298         [
39299             "Afrikaans",
39300             "Afrikaans",
39301             "af"
39302         ],
39303         [
39304             "West Frisian",
39305             "Frysk",
39306             "fy"
39307         ],
39308         [
39309             "Western Panjabi",
39310             "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)",
39311             "pnb"
39312         ],
39313         [
39314             "Bengali",
39315             "বাংলা",
39316             "bn"
39317         ],
39318         [
39319             "Swahili",
39320             "Kiswahili",
39321             "sw"
39322         ],
39323         [
39324             "Bishnupriya Manipuri",
39325             "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী",
39326             "bpy"
39327         ],
39328         [
39329             "Ido",
39330             "Ido",
39331             "io"
39332         ],
39333         [
39334             "Kirghiz",
39335             "Кыргызча",
39336             "ky"
39337         ],
39338         [
39339             "Urdu",
39340             "اردو",
39341             "ur"
39342         ],
39343         [
39344             "Nepali",
39345             "नेपाली",
39346             "ne"
39347         ],
39348         [
39349             "Sicilian",
39350             "Sicilianu",
39351             "scn"
39352         ],
39353         [
39354             "Gujarati",
39355             "ગુજરાતી",
39356             "gu"
39357         ],
39358         [
39359             "Cantonese",
39360             "粵語",
39361             "zh-yue"
39362         ],
39363         [
39364             "Low Saxon",
39365             "Plattdüütsch",
39366             "nds"
39367         ],
39368         [
39369             "Kurdish",
39370             "Kurdî / كوردی",
39371             "ku"
39372         ],
39373         [
39374             "Irish",
39375             "Gaeilge",
39376             "ga"
39377         ],
39378         [
39379             "Asturian",
39380             "Asturianu",
39381             "ast"
39382         ],
39383         [
39384             "Quechua",
39385             "Runa Simi",
39386             "qu"
39387         ],
39388         [
39389             "Sundanese",
39390             "Basa Sunda",
39391             "su"
39392         ],
39393         [
39394             "Chuvash",
39395             "Чăваш",
39396             "cv"
39397         ],
39398         [
39399             "Scots",
39400             "Scots",
39401             "sco"
39402         ],
39403         [
39404             "Interlingua",
39405             "Interlingua",
39406             "ia"
39407         ],
39408         [
39409             "Alemannic",
39410             "Alemannisch",
39411             "als"
39412         ],
39413         [
39414             "Buginese",
39415             "Basa Ugi",
39416             "bug"
39417         ],
39418         [
39419             "Neapolitan",
39420             "Nnapulitano",
39421             "nap"
39422         ],
39423         [
39424             "Samogitian",
39425             "Žemaitėška",
39426             "bat-smg"
39427         ],
39428         [
39429             "Kannada",
39430             "ಕನ್ನಡ",
39431             "kn"
39432         ],
39433         [
39434             "Banyumasan",
39435             "Basa Banyumasan",
39436             "map-bms"
39437         ],
39438         [
39439             "Walloon",
39440             "Walon",
39441             "wa"
39442         ],
39443         [
39444             "Amharic",
39445             "አማርኛ",
39446             "am"
39447         ],
39448         [
39449             "Sorani",
39450             "Soranî / کوردی",
39451             "ckb"
39452         ],
39453         [
39454             "Scottish Gaelic",
39455             "Gàidhlig",
39456             "gd"
39457         ],
39458         [
39459             "Fiji Hindi",
39460             "Fiji Hindi",
39461             "hif"
39462         ],
39463         [
39464             "Min Nan",
39465             "Bân-lâm-gú",
39466             "zh-min-nan"
39467         ],
39468         [
39469             "Tajik",
39470             "Тоҷикӣ",
39471             "tg"
39472         ],
39473         [
39474             "Mazandarani",
39475             "مَزِروني",
39476             "mzn"
39477         ],
39478         [
39479             "Egyptian Arabic",
39480             "مصرى (Maṣrī)",
39481             "arz"
39482         ],
39483         [
39484             "Yiddish",
39485             "ייִדיש",
39486             "yi"
39487         ],
39488         [
39489             "Venetian",
39490             "Vèneto",
39491             "vec"
39492         ],
39493         [
39494             "Mongolian",
39495             "Монгол",
39496             "mn"
39497         ],
39498         [
39499             "Tarantino",
39500             "Tarandíne",
39501             "roa-tara"
39502         ],
39503         [
39504             "Sanskrit",
39505             "संस्कृतम्",
39506             "sa"
39507         ],
39508         [
39509             "Nahuatl",
39510             "Nāhuatl",
39511             "nah"
39512         ],
39513         [
39514             "Ossetian",
39515             "Иронау",
39516             "os"
39517         ],
39518         [
39519             "Sakha",
39520             "Саха тыла (Saxa Tyla)",
39521             "sah"
39522         ],
39523         [
39524             "Kapampangan",
39525             "Kapampangan",
39526             "pam"
39527         ],
39528         [
39529             "Upper Sorbian",
39530             "Hornjoserbsce",
39531             "hsb"
39532         ],
39533         [
39534             "Sinhalese",
39535             "සිංහල",
39536             "si"
39537         ],
39538         [
39539             "Northern Sami",
39540             "Sámegiella",
39541             "se"
39542         ],
39543         [
39544             "Limburgish",
39545             "Limburgs",
39546             "li"
39547         ],
39548         [
39549             "Maori",
39550             "Māori",
39551             "mi"
39552         ],
39553         [
39554             "Bavarian",
39555             "Boarisch",
39556             "bar"
39557         ],
39558         [
39559             "Corsican",
39560             "Corsu",
39561             "co"
39562         ],
39563         [
39564             "Ilokano",
39565             "Ilokano",
39566             "ilo"
39567         ],
39568         [
39569             "Gan",
39570             "贛語",
39571             "gan"
39572         ],
39573         [
39574             "Tibetan",
39575             "བོད་སྐད",
39576             "bo"
39577         ],
39578         [
39579             "Gilaki",
39580             "گیلکی",
39581             "glk"
39582         ],
39583         [
39584             "Faroese",
39585             "Føroyskt",
39586             "fo"
39587         ],
39588         [
39589             "Rusyn",
39590             "русиньскый язык",
39591             "rue"
39592         ],
39593         [
39594             "Punjabi",
39595             "ਪੰਜਾਬੀ",
39596             "pa"
39597         ],
39598         [
39599             "Central_Bicolano",
39600             "Bikol",
39601             "bcl"
39602         ],
39603         [
39604             "Hill Mari",
39605             "Кырык Мары (Kyryk Mary) ",
39606             "mrj"
39607         ],
39608         [
39609             "Võro",
39610             "Võro",
39611             "fiu-vro"
39612         ],
39613         [
39614             "Dutch Low Saxon",
39615             "Nedersaksisch",
39616             "nds-nl"
39617         ],
39618         [
39619             "Turkmen",
39620             "تركمن / Туркмен",
39621             "tk"
39622         ],
39623         [
39624             "Pashto",
39625             "پښتو",
39626             "ps"
39627         ],
39628         [
39629             "West Flemish",
39630             "West-Vlams",
39631             "vls"
39632         ],
39633         [
39634             "Mingrelian",
39635             "მარგალური (Margaluri)",
39636             "xmf"
39637         ],
39638         [
39639             "Manx",
39640             "Gaelg",
39641             "gv"
39642         ],
39643         [
39644             "Zazaki",
39645             "Zazaki",
39646             "diq"
39647         ],
39648         [
39649             "Pangasinan",
39650             "Pangasinan",
39651             "pag"
39652         ],
39653         [
39654             "Komi",
39655             "Коми",
39656             "kv"
39657         ],
39658         [
39659             "Zeelandic",
39660             "Zeêuws",
39661             "zea"
39662         ],
39663         [
39664             "Divehi",
39665             "ދިވެހިބަސް",
39666             "dv"
39667         ],
39668         [
39669             "Oriya",
39670             "ଓଡ଼ିଆ",
39671             "or"
39672         ],
39673         [
39674             "Khmer",
39675             "ភាសាខ្មែរ",
39676             "km"
39677         ],
39678         [
39679             "Norman",
39680             "Nouormand/Normaund",
39681             "nrm"
39682         ],
39683         [
39684             "Romansh",
39685             "Rumantsch",
39686             "rm"
39687         ],
39688         [
39689             "Komi-Permyak",
39690             "Перем Коми (Perem Komi)",
39691             "koi"
39692         ],
39693         [
39694             "Udmurt",
39695             "Удмурт кыл",
39696             "udm"
39697         ],
39698         [
39699             "Meadow Mari",
39700             "Олык Марий (Olyk Marij)",
39701             "mhr"
39702         ],
39703         [
39704             "Ladino",
39705             "Dzhudezmo",
39706             "lad"
39707         ],
39708         [
39709             "North Frisian",
39710             "Nordfriisk",
39711             "frr"
39712         ],
39713         [
39714             "Kashubian",
39715             "Kaszëbsczi",
39716             "csb"
39717         ],
39718         [
39719             "Ligurian",
39720             "Líguru",
39721             "lij"
39722         ],
39723         [
39724             "Wu",
39725             "吴语",
39726             "wuu"
39727         ],
39728         [
39729             "Friulian",
39730             "Furlan",
39731             "fur"
39732         ],
39733         [
39734             "Vepsian",
39735             "Vepsän",
39736             "vep"
39737         ],
39738         [
39739             "Classical Chinese",
39740             "古文 / 文言文",
39741             "zh-classical"
39742         ],
39743         [
39744             "Uyghur",
39745             "ئۇيغۇر تىلى",
39746             "ug"
39747         ],
39748         [
39749             "Saterland Frisian",
39750             "Seeltersk",
39751             "stq"
39752         ],
39753         [
39754             "Sardinian",
39755             "Sardu",
39756             "sc"
39757         ],
39758         [
39759             "Aromanian",
39760             "Armãneashce",
39761             "roa-rup"
39762         ],
39763         [
39764             "Pali",
39765             "पाऴि",
39766             "pi"
39767         ],
39768         [
39769             "Somali",
39770             "Soomaaliga",
39771             "so"
39772         ],
39773         [
39774             "Bihari",
39775             "भोजपुरी",
39776             "bh"
39777         ],
39778         [
39779             "Maltese",
39780             "Malti",
39781             "mt"
39782         ],
39783         [
39784             "Aymara",
39785             "Aymar",
39786             "ay"
39787         ],
39788         [
39789             "Ripuarian",
39790             "Ripoarisch",
39791             "ksh"
39792         ],
39793         [
39794             "Novial",
39795             "Novial",
39796             "nov"
39797         ],
39798         [
39799             "Anglo-Saxon",
39800             "Englisc",
39801             "ang"
39802         ],
39803         [
39804             "Cornish",
39805             "Kernewek/Karnuack",
39806             "kw"
39807         ],
39808         [
39809             "Navajo",
39810             "Diné bizaad",
39811             "nv"
39812         ],
39813         [
39814             "Picard",
39815             "Picard",
39816             "pcd"
39817         ],
39818         [
39819             "Hakka",
39820             "Hak-kâ-fa / 客家話",
39821             "hak"
39822         ],
39823         [
39824             "Guarani",
39825             "Avañe'ẽ",
39826             "gn"
39827         ],
39828         [
39829             "Extremaduran",
39830             "Estremeñu",
39831             "ext"
39832         ],
39833         [
39834             "Franco-Provençal/Arpitan",
39835             "Arpitan",
39836             "frp"
39837         ],
39838         [
39839             "Assamese",
39840             "অসমীয়া",
39841             "as"
39842         ],
39843         [
39844             "Silesian",
39845             "Ślůnski",
39846             "szl"
39847         ],
39848         [
39849             "Gagauz",
39850             "Gagauz",
39851             "gag"
39852         ],
39853         [
39854             "Interlingue",
39855             "Interlingue",
39856             "ie"
39857         ],
39858         [
39859             "Lingala",
39860             "Lingala",
39861             "ln"
39862         ],
39863         [
39864             "Emilian-Romagnol",
39865             "Emiliàn e rumagnòl",
39866             "eml"
39867         ],
39868         [
39869             "Chechen",
39870             "Нохчийн",
39871             "ce"
39872         ],
39873         [
39874             "Kalmyk",
39875             "Хальмг",
39876             "xal"
39877         ],
39878         [
39879             "Palatinate German",
39880             "Pfälzisch",
39881             "pfl"
39882         ],
39883         [
39884             "Hawaiian",
39885             "Hawai`i",
39886             "haw"
39887         ],
39888         [
39889             "Karachay-Balkar",
39890             "Къарачай-Малкъар (Qarachay-Malqar)",
39891             "krc"
39892         ],
39893         [
39894             "Pennsylvania German",
39895             "Deitsch",
39896             "pdc"
39897         ],
39898         [
39899             "Kinyarwanda",
39900             "Ikinyarwanda",
39901             "rw"
39902         ],
39903         [
39904             "Crimean Tatar",
39905             "Qırımtatarca",
39906             "crh"
39907         ],
39908         [
39909             "Acehnese",
39910             "Bahsa Acèh",
39911             "ace"
39912         ],
39913         [
39914             "Tongan",
39915             "faka Tonga",
39916             "to"
39917         ],
39918         [
39919             "Greenlandic",
39920             "Kalaallisut",
39921             "kl"
39922         ],
39923         [
39924             "Lower Sorbian",
39925             "Dolnoserbski",
39926             "dsb"
39927         ],
39928         [
39929             "Aramaic",
39930             "ܐܪܡܝܐ",
39931             "arc"
39932         ],
39933         [
39934             "Erzya",
39935             "Эрзянь (Erzjanj Kelj)",
39936             "myv"
39937         ],
39938         [
39939             "Lezgian",
39940             "Лезги чІал (Lezgi č’al)",
39941             "lez"
39942         ],
39943         [
39944             "Banjar",
39945             "Bahasa Banjar",
39946             "bjn"
39947         ],
39948         [
39949             "Shona",
39950             "chiShona",
39951             "sn"
39952         ],
39953         [
39954             "Papiamentu",
39955             "Papiamentu",
39956             "pap"
39957         ],
39958         [
39959             "Kabyle",
39960             "Taqbaylit",
39961             "kab"
39962         ],
39963         [
39964             "Tok Pisin",
39965             "Tok Pisin",
39966             "tpi"
39967         ],
39968         [
39969             "Lak",
39970             "Лакку",
39971             "lbe"
39972         ],
39973         [
39974             "Buryat (Russia)",
39975             "Буряад",
39976             "bxr"
39977         ],
39978         [
39979             "Lojban",
39980             "Lojban",
39981             "jbo"
39982         ],
39983         [
39984             "Wolof",
39985             "Wolof",
39986             "wo"
39987         ],
39988         [
39989             "Moksha",
39990             "Мокшень (Mokshanj Kälj)",
39991             "mdf"
39992         ],
39993         [
39994             "Zamboanga Chavacano",
39995             "Chavacano de Zamboanga",
39996             "cbk-zam"
39997         ],
39998         [
39999             "Avar",
40000             "Авар",
40001             "av"
40002         ],
40003         [
40004             "Sranan",
40005             "Sranantongo",
40006             "srn"
40007         ],
40008         [
40009             "Mirandese",
40010             "Mirandés",
40011             "mwl"
40012         ],
40013         [
40014             "Kabardian Circassian",
40015             "Адыгэбзэ (Adighabze)",
40016             "kbd"
40017         ],
40018         [
40019             "Tahitian",
40020             "Reo Mā`ohi",
40021             "ty"
40022         ],
40023         [
40024             "Lao",
40025             "ລາວ",
40026             "lo"
40027         ],
40028         [
40029             "Abkhazian",
40030             "Аҧсуа",
40031             "ab"
40032         ],
40033         [
40034             "Tetum",
40035             "Tetun",
40036             "tet"
40037         ],
40038         [
40039             "Latgalian",
40040             "Latgaļu",
40041             "ltg"
40042         ],
40043         [
40044             "Nauruan",
40045             "dorerin Naoero",
40046             "na"
40047         ],
40048         [
40049             "Kongo",
40050             "KiKongo",
40051             "kg"
40052         ],
40053         [
40054             "Igbo",
40055             "Igbo",
40056             "ig"
40057         ],
40058         [
40059             "Northern Sotho",
40060             "Sesotho sa Leboa",
40061             "nso"
40062         ],
40063         [
40064             "Zhuang",
40065             "Cuengh",
40066             "za"
40067         ],
40068         [
40069             "Karakalpak",
40070             "Qaraqalpaqsha",
40071             "kaa"
40072         ],
40073         [
40074             "Zulu",
40075             "isiZulu",
40076             "zu"
40077         ],
40078         [
40079             "Cheyenne",
40080             "Tsetsêhestâhese",
40081             "chy"
40082         ],
40083         [
40084             "Romani",
40085             "romani - रोमानी",
40086             "rmy"
40087         ],
40088         [
40089             "Old Church Slavonic",
40090             "Словѣньскъ",
40091             "cu"
40092         ],
40093         [
40094             "Tswana",
40095             "Setswana",
40096             "tn"
40097         ],
40098         [
40099             "Cherokee",
40100             "ᏣᎳᎩ",
40101             "chr"
40102         ],
40103         [
40104             "Bislama",
40105             "Bislama",
40106             "bi"
40107         ],
40108         [
40109             "Min Dong",
40110             "Mìng-dĕ̤ng-ngṳ̄",
40111             "cdo"
40112         ],
40113         [
40114             "Gothic",
40115             "𐌲𐌿𐍄𐌹𐍃𐌺",
40116             "got"
40117         ],
40118         [
40119             "Samoan",
40120             "Gagana Samoa",
40121             "sm"
40122         ],
40123         [
40124             "Moldovan",
40125             "Молдовеняскэ",
40126             "mo"
40127         ],
40128         [
40129             "Bambara",
40130             "Bamanankan",
40131             "bm"
40132         ],
40133         [
40134             "Inuktitut",
40135             "ᐃᓄᒃᑎᑐᑦ",
40136             "iu"
40137         ],
40138         [
40139             "Norfolk",
40140             "Norfuk",
40141             "pih"
40142         ],
40143         [
40144             "Pontic",
40145             "Ποντιακά",
40146             "pnt"
40147         ],
40148         [
40149             "Sindhi",
40150             "سنڌي، سندھی ، सिन्ध",
40151             "sd"
40152         ],
40153         [
40154             "Swati",
40155             "SiSwati",
40156             "ss"
40157         ],
40158         [
40159             "Kikuyu",
40160             "Gĩkũyũ",
40161             "ki"
40162         ],
40163         [
40164             "Ewe",
40165             "Eʋegbe",
40166             "ee"
40167         ],
40168         [
40169             "Hausa",
40170             "هَوُسَ",
40171             "ha"
40172         ],
40173         [
40174             "Oromo",
40175             "Oromoo",
40176             "om"
40177         ],
40178         [
40179             "Fijian",
40180             "Na Vosa Vakaviti",
40181             "fj"
40182         ],
40183         [
40184             "Tigrinya",
40185             "ትግርኛ",
40186             "ti"
40187         ],
40188         [
40189             "Tsonga",
40190             "Xitsonga",
40191             "ts"
40192         ],
40193         [
40194             "Kashmiri",
40195             "कश्मीरी / كشميري",
40196             "ks"
40197         ],
40198         [
40199             "Venda",
40200             "Tshivenda",
40201             "ve"
40202         ],
40203         [
40204             "Sango",
40205             "Sängö",
40206             "sg"
40207         ],
40208         [
40209             "Kirundi",
40210             "Kirundi",
40211             "rn"
40212         ],
40213         [
40214             "Sesotho",
40215             "Sesotho",
40216             "st"
40217         ],
40218         [
40219             "Dzongkha",
40220             "ཇོང་ཁ",
40221             "dz"
40222         ],
40223         [
40224             "Cree",
40225             "Nehiyaw",
40226             "cr"
40227         ],
40228         [
40229             "Akan",
40230             "Akana",
40231             "ak"
40232         ],
40233         [
40234             "Tumbuka",
40235             "chiTumbuka",
40236             "tum"
40237         ],
40238         [
40239             "Luganda",
40240             "Luganda",
40241             "lg"
40242         ],
40243         [
40244             "Chichewa",
40245             "Chi-Chewa",
40246             "ny"
40247         ],
40248         [
40249             "Fula",
40250             "Fulfulde",
40251             "ff"
40252         ],
40253         [
40254             "Inupiak",
40255             "Iñupiak",
40256             "ik"
40257         ],
40258         [
40259             "Chamorro",
40260             "Chamoru",
40261             "ch"
40262         ],
40263         [
40264             "Twi",
40265             "Twi",
40266             "tw"
40267         ],
40268         [
40269             "Xhosa",
40270             "isiXhosa",
40271             "xh"
40272         ],
40273         [
40274             "Ndonga",
40275             "Oshiwambo",
40276             "ng"
40277         ],
40278         [
40279             "Sichuan Yi",
40280             "ꆇꉙ",
40281             "ii"
40282         ],
40283         [
40284             "Choctaw",
40285             "Choctaw",
40286             "cho"
40287         ],
40288         [
40289             "Marshallese",
40290             "Ebon",
40291             "mh"
40292         ],
40293         [
40294             "Afar",
40295             "Afar",
40296             "aa"
40297         ],
40298         [
40299             "Kuanyama",
40300             "Kuanyama",
40301             "kj"
40302         ],
40303         [
40304             "Hiri Motu",
40305             "Hiri Motu",
40306             "ho"
40307         ],
40308         [
40309             "Muscogee",
40310             "Muskogee",
40311             "mus"
40312         ],
40313         [
40314             "Kanuri",
40315             "Kanuri",
40316             "kr"
40317         ],
40318         [
40319             "Herero",
40320             "Otsiherero",
40321             "hz"
40322         ]
40323     ],
40324     "imperial": {
40325         "type": "FeatureCollection",
40326         "features": [
40327             {
40328                 "type": "Feature",
40329                 "properties": {
40330                     "id": 0
40331                 },
40332                 "geometry": {
40333                     "type": "MultiPolygon",
40334                     "coordinates": [
40335                         [
40336                             [
40337                                 [
40338                                     -1.426496,
40339                                     50.639342
40340                                 ],
40341                                 [
40342                                     -1.445953,
40343                                     50.648139
40344                                 ],
40345                                 [
40346                                     -1.452789,
40347                                     50.654283
40348                                 ],
40349                                 [
40350                                     -1.485951,
40351                                     50.669338
40352                                 ],
40353                                 [
40354                                     -1.497426,
40355                                     50.672309
40356                                 ],
40357                                 [
40358                                     -1.535146,
40359                                     50.669379
40360                                 ],
40361                                 [
40362                                     -1.551503,
40363                                     50.665107
40364                                 ],
40365                                 [
40366                                     -1.569488,
40367                                     50.658026
40368                                 ],
40369                                 [
40370                                     -1.545318,
40371                                     50.686103
40372                                 ],
40373                                 [
40374                                     -1.50593,
40375                                     50.707709
40376                                 ],
40377                                 [
40378                                     -1.418691,
40379                                     50.733791
40380                                 ],
40381                                 [
40382                                     -1.420888,
40383                                     50.730455
40384                                 ],
40385                                 [
40386                                     -1.423451,
40387                                     50.7237
40388                                 ],
40389                                 [
40390                                     -1.425364,
40391                                     50.72012
40392                                 ],
40393                                 [
40394                                     -1.400868,
40395                                     50.721991
40396                                 ],
40397                                 [
40398                                     -1.377553,
40399                                     50.734198
40400                                 ],
40401                                 [
40402                                     -1.343495,
40403                                     50.761054
40404                                 ],
40405                                 [
40406                                     -1.318512,
40407                                     50.772162
40408                                 ],
40409                                 [
40410                                     -1.295766,
40411                                     50.773179
40412                                 ],
40413                                 [
40414                                     -1.144276,
40415                                     50.733791
40416                                 ],
40417                                 [
40418                                     -1.119537,
40419                                     50.734198
40420                                 ],
40421                                 [
40422                                     -1.10912,
40423                                     50.732856
40424                                 ],
40425                                 [
40426                                     -1.097035,
40427                                     50.726955
40428                                 ],
40429                                 [
40430                                     -1.096425,
40431                                     50.724433
40432                                 ],
40433                                 [
40434                                     -1.097646,
40435                                     50.71601
40436                                 ],
40437                                 [
40438                                     -1.097035,
40439                                     50.713324
40440                                 ],
40441                                 [
40442                                     -1.094228,
40443                                     50.712633
40444                                 ],
40445                                 [
40446                                     -1.085561,
40447                                     50.714016
40448                                 ],
40449                                 [
40450                                     -1.082753,
40451                                     50.713324
40452                                 ],
40453                                 [
40454                                     -1.062327,
40455                                     50.692816
40456                                 ],
40457                                 [
40458                                     -1.062327,
40459                                     50.685289
40460                                 ],
40461                                 [
40462                                     -1.066965,
40463                                     50.685248
40464                                 ],
40465                                 [
40466                                     -1.069651,
40467                                     50.683498
40468                                 ],
40469                                 [
40470                                     -1.071889,
40471                                     50.680976
40472                                 ],
40473                                 [
40474                                     -1.075307,
40475                                     50.678534
40476                                 ],
40477                                 [
40478                                     -1.112701,
40479                                     50.671454
40480                                 ],
40481                                 [
40482                                     -1.128651,
40483                                     50.666449
40484                                 ],
40485                                 [
40486                                     -1.156361,
40487                                     50.650784
40488                                 ],
40489                                 [
40490                                     -1.162221,
40491                                     50.645982
40492                                 ],
40493                                 [
40494                                     -1.164703,
40495                                     50.640937
40496                                 ],
40497                                 [
40498                                     -1.164666,
40499                                     50.639543
40500                                 ],
40501                                 [
40502                                     -1.426496,
40503                                     50.639342
40504                                 ]
40505                             ]
40506                         ],
40507                         [
40508                             [
40509                                 [
40510                                     -7.240314,
40511                                     55.050389
40512                                 ],
40513                                 [
40514                                     -7.013736,
40515                                     55.1615
40516                                 ],
40517                                 [
40518                                     -6.958913,
40519                                     55.20349
40520                                 ],
40521                                 [
40522                                     -6.571562,
40523                                     55.268366
40524                                 ],
40525                                 [
40526                                     -6.509633,
40527                                     55.31398
40528                                 ],
40529                                 [
40530                                     -6.226158,
40531                                     55.344406
40532                                 ],
40533                                 [
40534                                     -6.07105,
40535                                     55.25001
40536                                 ],
40537                                 [
40538                                     -5.712696,
40539                                     55.017635
40540                                 ],
40541                                 [
40542                                     -5.242021,
40543                                     54.415204
40544                                 ],
40545                                 [
40546                                     -5.695554,
40547                                     54.14284
40548                                 ],
40549                                 [
40550                                     -5.72473,
40551                                     54.07455
40552                                 ],
40553                                 [
40554                                     -6.041633,
40555                                     54.006238
40556                                 ],
40557                                 [
40558                                     -6.153953,
40559                                     54.054931
40560                                 ],
40561                                 [
40562                                     -6.220539,
40563                                     54.098803
40564                                 ],
40565                                 [
40566                                     -6.242502,
40567                                     54.099758
40568                                 ],
40569                                 [
40570                                     -6.263661,
40571                                     54.104682
40572                                 ],
40573                                 [
40574                                     -6.269887,
40575                                     54.097927
40576                                 ],
40577                                 [
40578                                     -6.28465,
40579                                     54.105226
40580                                 ],
40581                                 [
40582                                     -6.299585,
40583                                     54.104037
40584                                 ],
40585                                 [
40586                                     -6.313796,
40587                                     54.099696
40588                                 ],
40589                                 [
40590                                     -6.327128,
40591                                     54.097888
40592                                 ],
40593                                 [
40594                                     -6.338962,
40595                                     54.102952
40596                                 ],
40597                                 [
40598                                     -6.346662,
40599                                     54.109877
40600                                 ],
40601                                 [
40602                                     -6.354827,
40603                                     54.110652
40604                                 ],
40605                                 [
40606                                     -6.368108,
40607                                     54.097319
40608                                 ],
40609                                 [
40610                                     -6.369348,
40611                                     54.091118
40612                                 ],
40613                                 [
40614                                     -6.367643,
40615                                     54.083418
40616                                 ],
40617                                 [
40618                                     -6.366919,
40619                                     54.075098
40620                                 ],
40621                                 [
40622                                     -6.371157,
40623                                     54.066778
40624                                 ],
40625                                 [
40626                                     -6.377513,
40627                                     54.063264
40628                                 ],
40629                                 [
40630                                     -6.401026,
40631                                     54.060887
40632                                 ],
40633                                 [
40634                                     -6.426761,
40635                                     54.05541
40636                                 ],
40637                                 [
40638                                     -6.433892,
40639                                     54.055306
40640                                 ],
40641                                 [
40642                                     -6.4403,
40643                                     54.057993
40644                                 ],
40645                                 [
40646                                     -6.446243,
40647                                     54.062438
40648                                 ],
40649                                 [
40650                                     -6.450222,
40651                                     54.066675
40652                                 ],
40653                                 [
40654                                     -6.450894,
40655                                     54.068432
40656                                 ],
40657                                 [
40658                                     -6.47854,
40659                                     54.067709
40660                                 ],
40661                                 [
40662                                     -6.564013,
40663                                     54.04895
40664                                 ],
40665                                 [
40666                                     -6.571868,
40667                                     54.049519
40668                                 ],
40669                                 [
40670                                     -6.587164,
40671                                     54.053343
40672                                 ],
40673                                 [
40674                                     -6.595071,
40675                                     54.052412
40676                                 ],
40677                                 [
40678                                     -6.60029,
40679                                     54.04895
40680                                 ],
40681                                 [
40682                                     -6.605217,
40683                                     54.044475
40684                                 ],
40685                                 [
40686                                     -6.610987,
40687                                     54.039235
40688                                 ],
40689                                 [
40690                                     -6.616465,
40691                                     54.037271
40692                                 ],
40693                                 [
40694                                     -6.630624,
40695                                     54.041819
40696                                 ],
40697                                 [
40698                                     -6.657289,
40699                                     54.061146
40700                                 ],
40701                                 [
40702                                     -6.672534,
40703                                     54.068432
40704                                 ],
40705                                 [
40706                                     -6.657082,
40707                                     54.091945
40708                                 ],
40709                                 [
40710                                     -6.655791,
40711                                     54.103314
40712                                 ],
40713                                 [
40714                                     -6.666436,
40715                                     54.114786
40716                                 ],
40717                                 [
40718                                     -6.643957,
40719                                     54.131839
40720                                 ],
40721                                 [
40722                                     -6.634552,
40723                                     54.150133
40724                                 ],
40725                                 [
40726                                     -6.640339,
40727                                     54.168013
40728                                 ],
40729                                 [
40730                                     -6.648448,
40731                                     54.173665
40732                                 ],
40733                                 [
40734                                     -6.663025,
40735                                     54.183826
40736                                 ],
40737                                 [
40738                                     -6.683954,
40739                                     54.194368
40740                                 ],
40741                                 [
40742                                     -6.694651,
40743                                     54.197985
40744                                 ],
40745                                 [
40746                                     -6.706537,
40747                                     54.198915
40748                                 ],
40749                                 [
40750                                     -6.717234,
40751                                     54.195143
40752                                 ],
40753                                 [
40754                                     -6.724779,
40755                                     54.188631
40756                                 ],
40757                                 [
40758                                     -6.73284,
40759                                     54.183567
40760                                 ],
40761                                 [
40762                                     -6.744777,
40763                                     54.184187
40764                                 ],
40765                                 [
40766                                     -6.766481,
40767                                     54.192352
40768                                 ],
40769                                 [
40770                                     -6.787824,
40771                                     54.202998
40772                                 ],
40773                                 [
40774                                     -6.807358,
40775                                     54.21633
40776                                 ],
40777                                 [
40778                                     -6.823946,
40779                                     54.23235
40780                                 ],
40781                                 [
40782                                     -6.829733,
40783                                     54.242375
40784                                 ],
40785                                 [
40786                                     -6.833196,
40787                                     54.25209
40788                                 ],
40789                                 [
40790                                     -6.837743,
40791                                     54.260513
40792                                 ],
40793                                 [
40794                                     -6.846683,
40795                                     54.266456
40796                                 ],
40797                                 [
40798                                     -6.882185,
40799                                     54.277257
40800                                 ],
40801                                 [
40802                                     -6.864667,
40803                                     54.282734
40804                                 ],
40805                                 [
40806                                     -6.856657,
40807                                     54.292811
40808                                 ],
40809                                 [
40810                                     -6.858414,
40811                                     54.307332
40812                                 ],
40813                                 [
40814                                     -6.870015,
40815                                     54.326001
40816                                 ],
40817                                 [
40818                                     -6.879705,
40819                                     54.341594
40820                                 ],
40821                                 [
40822                                     -6.885957,
40823                                     54.345624
40824                                 ],
40825                                 [
40826                                     -6.897895,
40827                                     54.346193
40828                                 ],
40829                                 [
40830                                     -6.905956,
40831                                     54.349035
40832                                 ],
40833                                 [
40834                                     -6.915051,
40835                                     54.365933
40836                                 ],
40837                                 [
40838                                     -6.922028,
40839                                     54.372703
40840                                 ],
40841                                 [
40842                                     -6.984091,
40843                                     54.403089
40844                                 ],
40845                                 [
40846                                     -7.017836,
40847                                     54.413166
40848                                 ],
40849                                 [
40850                                     -7.049255,
40851                                     54.411512
40852                                 ],
40853                                 [
40854                                     -7.078504,
40855                                     54.394717
40856                                 ],
40857                                 [
40858                                     -7.127028,
40859                                     54.349759
40860                                 ],
40861                                 [
40862                                     -7.159894,
40863                                     54.335186
40864                                 ],
40865                                 [
40866                                     -7.168059,
40867                                     54.335031
40868                                 ],
40869                                 [
40870                                     -7.185629,
40871                                     54.336943
40872                                 ],
40873                                 [
40874                                     -7.18947,
40875                                     54.335692
40876                                 ],
40877                                 [
40878                                     -7.19245,
40879                                     54.334721
40880                                 ],
40881                                 [
40882                                     -7.193949,
40883                                     54.329967
40884                                 ],
40885                                 [
40886                                     -7.191468,
40887                                     54.323869
40888                                 ],
40889                                 [
40890                                     -7.187644,
40891                                     54.318804
40892                                 ],
40893                                 [
40894                                     -7.185009,
40895                                     54.317254
40896                                 ],
40897                                 [
40898                                     -7.184647,
40899                                     54.316634
40900                                 ],
40901                                 [
40902                                     -7.192399,
40903                                     54.307384
40904                                 ],
40905                                 [
40906                                     -7.193691,
40907                                     54.307539
40908                                 ],
40909                                 [
40910                                     -7.199168,
40911                                     54.303457
40912                                 ],
40913                                 [
40914                                     -7.206661,
40915                                     54.304903
40916                                 ],
40917                                 [
40918                                     -7.211467,
40919                                     54.30418
40920                                 ],
40921                                 [
40922                                     -7.209038,
40923                                     54.293431
40924                                 ],
40925                                 [
40926                                     -7.1755,
40927                                     54.283664
40928                                 ],
40929                                 [
40930                                     -7.181495,
40931                                     54.269763
40932                                 ],
40933                                 [
40934                                     -7.14589,
40935                                     54.25209
40936                                 ],
40937                                 [
40938                                     -7.159739,
40939                                     54.24067
40940                                 ],
40941                                 [
40942                                     -7.153331,
40943                                     54.224237
40944                                 ],
40945                                 [
40946                                     -7.174725,
40947                                     54.216072
40948                                 ],
40949                                 [
40950                                     -7.229502,
40951                                     54.207545
40952                                 ],
40953                                 [
40954                                     -7.240871,
40955                                     54.202326
40956                                 ],
40957                                 [
40958                                     -7.249088,
40959                                     54.197416
40960                                 ],
40961                                 [
40962                                     -7.255496,
40963                                     54.190854
40964                                 ],
40965                                 [
40966                                     -7.261128,
40967                                     54.18088
40968                                 ],
40969                                 [
40970                                     -7.256322,
40971                                     54.176901
40972                                 ],
40973                                 [
40974                                     -7.247021,
40975                                     54.17225
40976                                 ],
40977                                 [
40978                                     -7.24578,
40979                                     54.166979
40980                                 ],
40981                                 [
40982                                     -7.265366,
40983                                     54.16114
40984                                 ],
40985                                 [
40986                                     -7.26087,
40987                                     54.151166
40988                                 ],
40989                                 [
40990                                     -7.263505,
40991                                     54.140986
40992                                 ],
40993                                 [
40994                                     -7.27074,
40995                                     54.132253
40996                                 ],
40997                                 [
40998                                     -7.280042,
40999                                     54.126155
41000                                 ],
41001                                 [
41002                                     -7.293788,
41003                                     54.122021
41004                                 ],
41005                                 [
41006                                     -7.297353,
41007                                     54.125896
41008                                 ],
41009                                 [
41010                                     -7.29632,
41011                                     54.134991
41012                                 ],
41013                                 [
41014                                     -7.296423,
41015                                     54.146515
41016                                 ],
41017                                 [
41018                                     -7.295028,
41019                                     54.155404
41020                                 ],
41021                                 [
41022                                     -7.292134,
41023                                     54.162638
41024                                 ],
41025                                 [
41026                                     -7.295545,
41027                                     54.165119
41028                                 ],
41029                                 [
41030                                     -7.325982,
41031                                     54.154577
41032                                 ],
41033                                 [
41034                                     -7.333165,
41035                                     54.149409
41036                                 ],
41037                                 [
41038                                     -7.333165,
41039                                     54.142743
41040                                 ],
41041                                 [
41042                                     -7.310324,
41043                                     54.114683
41044                                 ],
41045                                 [
41046                                     -7.316489,
41047                                     54.11428
41048                                 ],
41049                                 [
41050                                     -7.326964,
41051                                     54.113597
41052                                 ],
41053                                 [
41054                                     -7.375488,
41055                                     54.123312
41056                                 ],
41057                                 [
41058                                     -7.390216,
41059                                     54.121194
41060                                 ],
41061                                 [
41062                                     -7.39466,
41063                                     54.121917
41064                                 ],
41065                                 [
41066                                     -7.396624,
41067                                     54.126258
41068                                 ],
41069                                 [
41070                                     -7.403962,
41071                                     54.135043
41072                                 ],
41073                                 [
41074                                     -7.41223,
41075                                     54.136438
41076                                 ],
41077                                 [
41078                                     -7.422255,
41079                                     54.135456
41080                                 ],
41081                                 [
41082                                     -7.425769,
41083                                     54.136955
41084                                 ],
41085                                 [
41086                                     -7.414659,
41087                                     54.145688
41088                                 ],
41089                                 [
41090                                     -7.439619,
41091                                     54.146929
41092                                 ],
41093                                 [
41094                                     -7.480753,
41095                                     54.127653
41096                                 ],
41097                                 [
41098                                     -7.502302,
41099                                     54.125121
41100                                 ],
41101                                 [
41102                                     -7.609014,
41103                                     54.139901
41104                                 ],
41105                                 [
41106                                     -7.620796,
41107                                     54.144965
41108                                 ],
41109                                 [
41110                                     -7.624052,
41111                                     54.153336
41112                                 ],
41113                                 [
41114                                     -7.625706,
41115                                     54.162173
41116                                 ],
41117                                 [
41118                                     -7.632682,
41119                                     54.168529
41120                                 ],
41121                                 [
41122                                     -7.70477,
41123                                     54.200362
41124                                 ],
41125                                 [
41126                                     -7.722599,
41127                                     54.202326
41128                                 ],
41129                                 [
41130                                     -7.782078,
41131                                     54.2
41132                                 ],
41133                                 [
41134                                     -7.836959,
41135                                     54.204341
41136                                 ],
41137                                 [
41138                                     -7.856441,
41139                                     54.211421
41140                                 ],
41141                                 [
41142                                     -7.86967,
41143                                     54.226872
41144                                 ],
41145                                 [
41146                                     -7.873649,
41147                                     54.271055
41148                                 ],
41149                                 [
41150                                     -7.880264,
41151                                     54.287023
41152                                 ],
41153                                 [
41154                                     -7.894966,
41155                                     54.293586
41156                                 ],
41157                                 [
41158                                     -7.93411,
41159                                     54.297049
41160                                 ],
41161                                 [
41162                                     -7.942075,
41163                                     54.298873
41164                                 ],
41165                                 [
41166                                     -7.950802,
41167                                     54.300873
41168                                 ],
41169                                 [
41170                                     -7.96801,
41171                                     54.31219
41172                                 ],
41173                                 [
41174                                     -7.981033,
41175                                     54.326556
41176                                 ],
41177                                 [
41178                                     -8.002194,
41179                                     54.357923
41180                                 ],
41181                                 [
41182                                     -8.03134,
41183                                     54.358027
41184                                 ],
41185                                 [
41186                                     -8.05648,
41187                                     54.365882
41188                                 ],
41189                                 [
41190                                     -8.079941,
41191                                     54.380196
41192                                 ],
41193                                 [
41194                                     -8.122419,
41195                                     54.415233
41196                                 ],
41197                                 [
41198                                     -8.146346,
41199                                     54.430736
41200                                 ],
41201                                 [
41202                                     -8.156035,
41203                                     54.439055
41204                                 ],
41205                                 [
41206                                     -8.158128,
41207                                     54.447117
41208                                 ],
41209                                 [
41210                                     -8.161177,
41211                                     54.454817
41212                                 ],
41213                                 [
41214                                     -8.173837,
41215                                     54.461741
41216                                 ],
41217                                 [
41218                                     -8.168467,
41219                                     54.463477
41220                                 ],
41221                                 [
41222                                     -8.15017,
41223                                     54.46939
41224                                 ],
41225                                 [
41226                                     -8.097046,
41227                                     54.478588
41228                                 ],
41229                                 [
41230                                     -8.072448,
41231                                     54.487063
41232                                 ],
41233                                 [
41234                                     -8.060976,
41235                                     54.493316
41236                                 ],
41237                                 [
41238                                     -8.05586,
41239                                     54.497553
41240                                 ],
41241                                 [
41242                                     -8.043561,
41243                                     54.512229
41244                                 ],
41245                                 [
41246                                     -8.023278,
41247                                     54.529696
41248                                 ],
41249                                 [
41250                                     -8.002194,
41251                                     54.543442
41252                                 ],
41253                                 [
41254                                     -7.926411,
41255                                     54.533055
41256                                 ],
41257                                 [
41258                                     -7.887137,
41259                                     54.532125
41260                                 ],
41261                                 [
41262                                     -7.848844,
41263                                     54.54091
41264                                 ],
41265                                 [
41266                                     -7.749264,
41267                                     54.596152
41268                                 ],
41269                                 [
41270                                     -7.707871,
41271                                     54.604162
41272                                 ],
41273                                 [
41274                                     -7.707944,
41275                                     54.604708
41276                                 ],
41277                                 [
41278                                     -7.707951,
41279                                     54.604763
41280                                 ],
41281                                 [
41282                                     -7.710558,
41283                                     54.624264
41284                                 ],
41285                                 [
41286                                     -7.721204,
41287                                     54.625866
41288                                 ],
41289                                 [
41290                                     -7.736758,
41291                                     54.619251
41292                                 ],
41293                                 [
41294                                     -7.753553,
41295                                     54.614497
41296                                 ],
41297                                 [
41298                                     -7.769159,
41299                                     54.618011
41300                                 ],
41301                                 [
41302                                     -7.801199,
41303                                     54.634806
41304                                 ],
41305                                 [
41306                                     -7.814996,
41307                                     54.639457
41308                                 ],
41309                                 [
41310                                     -7.822541,
41311                                     54.638113
41312                                 ],
41313                                 [
41314                                     -7.838044,
41315                                     54.63124
41316                                 ],
41317                                 [
41318                                     -7.846416,
41319                                     54.631447
41320                                 ],
41321                                 [
41322                                     -7.85427,
41323                                     54.636408
41324                                 ],
41325                                 [
41326                                     -7.864347,
41327                                     54.649069
41328                                 ],
41329                                 [
41330                                     -7.872771,
41331                                     54.652221
41332                                 ],
41333                                 [
41334                                     -7.890082,
41335                                     54.655063
41336                                 ],
41337                                 [
41338                                     -7.906619,
41339                                     54.661316
41340                                 ],
41341                                 [
41342                                     -7.914835,
41343                                     54.671651
41344                                 ],
41345                                 [
41346                                     -7.907135,
41347                                     54.686689
41348                                 ],
41349                                 [
41350                                     -7.913233,
41351                                     54.688653
41352                                 ],
41353                                 [
41354                                     -7.929666,
41355                                     54.696714
41356                                 ],
41357                                 [
41358                                     -7.880109,
41359                                     54.711029
41360                                 ],
41361                                 [
41362                                     -7.845899,
41363                                     54.731027
41364                                 ],
41365                                 [
41366                                     -7.832153,
41367                                     54.730614
41368                                 ],
41369                                 [
41370                                     -7.803576,
41371                                     54.716145
41372                                 ],
41373                                 [
41374                                     -7.770503,
41375                                     54.706016
41376                                 ],
41377                                 [
41378                                     -7.736603,
41379                                     54.707463
41380                                 ],
41381                                 [
41382                                     -7.70229,
41383                                     54.718883
41384                                 ],
41385                                 [
41386                                     -7.667512,
41387                                     54.738779
41388                                 ],
41389                                 [
41390                                     -7.649683,
41391                                     54.744877
41392                                 ],
41393                                 [
41394                                     -7.61537,
41395                                     54.739347
41396                                 ],
41397                                 [
41398                                     -7.585398,
41399                                     54.744722
41400                                 ],
41401                                 [
41402                                     -7.566639,
41403                                     54.738675
41404                                 ],
41405                                 [
41406                                     -7.556149,
41407                                     54.738365
41408                                 ],
41409                                 [
41410                                     -7.543075,
41411                                     54.741673
41412                                 ],
41413                                 [
41414                                     -7.543023,
41415                                     54.743791
41416                                 ],
41417                                 [
41418                                     -7.548398,
41419                                     54.747202
41420                                 ],
41421                                 [
41422                                     -7.551705,
41423                                     54.754695
41424                                 ],
41425                                 [
41426                                     -7.549741,
41427                                     54.779603
41428                                 ],
41429                                 [
41430                                     -7.543385,
41431                                     54.793091
41432                                 ],
41433                                 [
41434                                     -7.470831,
41435                                     54.845284
41436                                 ],
41437                                 [
41438                                     -7.45507,
41439                                     54.863009
41440                                 ],
41441                                 [
41442                                     -7.444735,
41443                                     54.884455
41444                                 ],
41445                                 [
41446                                     -7.444735,
41447                                     54.894893
41448                                 ],
41449                                 [
41450                                     -7.448972,
41451                                     54.920318
41452                                 ],
41453                                 [
41454                                     -7.445251,
41455                                     54.932152
41456                                 ],
41457                                 [
41458                                     -7.436983,
41459                                     54.938301
41460                                 ],
41461                                 [
41462                                     -7.417139,
41463                                     54.943056
41464                                 ],
41465                                 [
41466                                     -7.415755,
41467                                     54.944372
41468                                 ],
41469                                 [
41470                                     -7.408665,
41471                                     54.951117
41472                                 ],
41473                                 [
41474                                     -7.407424,
41475                                     54.959437
41476                                 ],
41477                                 [
41478                                     -7.413109,
41479                                     54.984965
41480                                 ],
41481                                 [
41482                                     -7.409078,
41483                                     54.992045
41484                                 ],
41485                                 [
41486                                     -7.403755,
41487                                     54.99313
41488                                 ],
41489                                 [
41490                                     -7.40112,
41491                                     54.994836
41492                                 ],
41493                                 [
41494                                     -7.405254,
41495                                     55.003569
41496                                 ],
41497                                 [
41498                                     -7.376987,
41499                                     55.02889
41500                                 ],
41501                                 [
41502                                     -7.366962,
41503                                     55.035557
41504                                 ],
41505                                 [
41506                                     -7.355024,
41507                                     55.040931
41508                                 ],
41509                                 [
41510                                     -7.291152,
41511                                     55.046615
41512                                 ],
41513                                 [
41514                                     -7.282987,
41515                                     55.051835
41516                                 ],
41517                                 [
41518                                     -7.275288,
41519                                     55.058863
41520                                 ],
41521                                 [
41522                                     -7.266503,
41523                                     55.065167
41524                                 ],
41525                                 [
41526                                     -7.247097,
41527                                     55.069328
41528                                 ],
41529                                 [
41530                                     -7.2471,
41531                                     55.069322
41532                                 ],
41533                                 [
41534                                     -7.256744,
41535                                     55.050686
41536                                 ],
41537                                 [
41538                                     -7.240956,
41539                                     55.050279
41540                                 ],
41541                                 [
41542                                     -7.240314,
41543                                     55.050389
41544                                 ]
41545                             ]
41546                         ],
41547                         [
41548                             [
41549                                 [
41550                                     -13.688588,
41551                                     57.596259
41552                                 ],
41553                                 [
41554                                     -13.690419,
41555                                     57.596259
41556                                 ],
41557                                 [
41558                                     -13.691314,
41559                                     57.596503
41560                                 ],
41561                                 [
41562                                     -13.691314,
41563                                     57.597154
41564                                 ],
41565                                 [
41566                                     -13.690419,
41567                                     57.597805
41568                                 ],
41569                                 [
41570                                     -13.688588,
41571                                     57.597805
41572                                 ],
41573                                 [
41574                                     -13.687652,
41575                                     57.597154
41576                                 ],
41577                                 [
41578                                     -13.687652,
41579                                     57.596869
41580                                 ],
41581                                 [
41582                                     -13.688588,
41583                                     57.596259
41584                                 ]
41585                             ]
41586                         ],
41587                         [
41588                             [
41589                                 [
41590                                     -4.839121,
41591                                     54.469789
41592                                 ],
41593                                 [
41594                                     -4.979941,
41595                                     54.457977
41596                                 ],
41597                                 [
41598                                     -5.343644,
41599                                     54.878637
41600                                 ],
41601                                 [
41602                                     -5.308469,
41603                                     55.176452
41604                                 ],
41605                                 [
41606                                     -6.272566,
41607                                     55.418443
41608                                 ],
41609                                 [
41610                                     -8.690528,
41611                                     57.833706
41612                                 ],
41613                                 [
41614                                     -6.344705,
41615                                     59.061083
41616                                 ],
41617                                 [
41618                                     -4.204785,
41619                                     58.63305
41620                                 ],
41621                                 [
41622                                     -2.31566,
41623                                     60.699068
41624                                 ],
41625                                 [
41626                                     -1.695335,
41627                                     60.76432
41628                                 ],
41629                                 [
41630                                     -1.58092,
41631                                     60.866001
41632                                 ],
41633                                 [
41634                                     -0.17022,
41635                                     60.897204
41636                                 ],
41637                                 [
41638                                     -0.800508,
41639                                     59.770037
41640                                 ],
41641                                 [
41642                                     -1.292368,
41643                                     57.732574
41644                                 ],
41645                                 [
41646                                     -1.850077,
41647                                     55.766368
41648                                 ],
41649                                 [
41650                                     -1.73054,
41651                                     55.782219
41652                                 ],
41653                                 [
41654                                     1.892395,
41655                                     52.815229
41656                                 ],
41657                                 [
41658                                     1.742775,
41659                                     51.364209
41660                                 ],
41661                                 [
41662                                     1.080173,
41663                                     50.847526
41664                                 ],
41665                                 [
41666                                     0.000774,
41667                                     50.664982
41668                                 ],
41669                                 [
41670                                     -0.162997,
41671                                     50.752401
41672                                 ],
41673                                 [
41674                                     -0.725152,
41675                                     50.731879
41676                                 ],
41677                                 [
41678                                     -0.768853,
41679                                     50.741516
41680                                 ],
41681                                 [
41682                                     -0.770985,
41683                                     50.736884
41684                                 ],
41685                                 [
41686                                     -0.789947,
41687                                     50.730048
41688                                 ],
41689                                 [
41690                                     -0.812815,
41691                                     50.734768
41692                                 ],
41693                                 [
41694                                     -0.877742,
41695                                     50.761156
41696                                 ],
41697                                 [
41698                                     -0.942879,
41699                                     50.758338
41700                                 ],
41701                                 [
41702                                     -0.992581,
41703                                     50.737379
41704                                 ],
41705                                 [
41706                                     -1.18513,
41707                                     50.766989
41708                                 ],
41709                                 [
41710                                     -1.282741,
41711                                     50.792353
41712                                 ],
41713                                 [
41714                                     -1.375004,
41715                                     50.772063
41716                                 ],
41717                                 [
41718                                     -1.523427,
41719                                     50.719605
41720                                 ],
41721                                 [
41722                                     -1.630649,
41723                                     50.695128
41724                                 ],
41725                                 [
41726                                     -1.663617,
41727                                     50.670508
41728                                 ],
41729                                 [
41730                                     -1.498021,
41731                                     50.40831
41732                                 ],
41733                                 [
41734                                     -4.097427,
41735                                     49.735486
41736                                 ],
41737                                 [
41738                                     -6.825199,
41739                                     49.700905
41740                                 ],
41741                                 [
41742                                     -5.541541,
41743                                     51.446591
41744                                 ],
41745                                 [
41746                                     -6.03361,
41747                                     51.732369
41748                                 ],
41749                                 [
41750                                     -4.791746,
41751                                     52.635365
41752                                 ],
41753                                 [
41754                                     -4.969244,
41755                                     52.637413
41756                                 ],
41757                                 [
41758                                     -5.049473,
41759                                     53.131209
41760                                 ],
41761                                 [
41762                                     -4.787393,
41763                                     53.409491
41764                                 ],
41765                                 [
41766                                     -4.734148,
41767                                     53.424866
41768                                 ],
41769                                 [
41770                                     -4.917096,
41771                                     53.508212
41772                                 ],
41773                                 [
41774                                     -4.839121,
41775                                     54.469789
41776                                 ]
41777                             ]
41778                         ]
41779                     ]
41780                 }
41781             },
41782             {
41783                 "type": "Feature",
41784                 "properties": {
41785                     "id": 0
41786                 },
41787                 "geometry": {
41788                     "type": "MultiPolygon",
41789                     "coordinates": [
41790                         [
41791                             [
41792                                 [
41793                                     -157.018938,
41794                                     19.300864
41795                                 ],
41796                                 [
41797                                     -179.437336,
41798                                     27.295312
41799                                 ],
41800                                 [
41801                                     -179.480084,
41802                                     28.991459
41803                                 ],
41804                                 [
41805                                     -168.707465,
41806                                     26.30325
41807                                 ],
41808                                 [
41809                                     -163.107414,
41810                                     24.60499
41811                                 ],
41812                                 [
41813                                     -153.841679,
41814                                     20.079306
41815                                 ],
41816                                 [
41817                                     -154.233846,
41818                                     19.433391
41819                                 ],
41820                                 [
41821                                     -153.61725,
41822                                     18.900587
41823                                 ],
41824                                 [
41825                                     -154.429471,
41826                                     18.171036
41827                                 ],
41828                                 [
41829                                     -156.780638,
41830                                     18.718492
41831                                 ],
41832                                 [
41833                                     -157.018938,
41834                                     19.300864
41835                                 ]
41836                             ]
41837                         ],
41838                         [
41839                             [
41840                                 [
41841                                     -78.91269,
41842                                     43.037032
41843                                 ],
41844                                 [
41845                                     -78.964351,
41846                                     42.976393
41847                                 ],
41848                                 [
41849                                     -78.981718,
41850                                     42.979043
41851                                 ],
41852                                 [
41853                                     -78.998055,
41854                                     42.991111
41855                                 ],
41856                                 [
41857                                     -79.01189,
41858                                     43.004358
41859                                 ],
41860                                 [
41861                                     -79.022046,
41862                                     43.010539
41863                                 ],
41864                                 [
41865                                     -79.023076,
41866                                     43.017015
41867                                 ],
41868                                 [
41869                                     -79.00983,
41870                                     43.050867
41871                                 ],
41872                                 [
41873                                     -79.011449,
41874                                     43.065291
41875                                 ],
41876                                 [
41877                                     -78.993051,
41878                                     43.066174
41879                                 ],
41880                                 [
41881                                     -78.975536,
41882                                     43.069707
41883                                 ],
41884                                 [
41885                                     -78.958905,
41886                                     43.070884
41887                                 ],
41888                                 [
41889                                     -78.943304,
41890                                     43.065291
41891                                 ],
41892                                 [
41893                                     -78.917399,
41894                                     43.058521
41895                                 ],
41896                                 [
41897                                     -78.908569,
41898                                     43.049396
41899                                 ],
41900                                 [
41901                                     -78.91269,
41902                                     43.037032
41903                                 ]
41904                             ]
41905                         ],
41906                         [
41907                             [
41908                                 [
41909                                     -123.03529,
41910                                     48.992515
41911                                 ],
41912                                 [
41913                                     -123.035308,
41914                                     48.992499
41915                                 ],
41916                                 [
41917                                     -123.045277,
41918                                     48.984361
41919                                 ],
41920                                 [
41921                                     -123.08849,
41922                                     48.972235
41923                                 ],
41924                                 [
41925                                     -123.089345,
41926                                     48.987982
41927                                 ],
41928                                 [
41929                                     -123.090484,
41930                                     48.992499
41931                                 ],
41932                                 [
41933                                     -123.090488,
41934                                     48.992515
41935                                 ],
41936                                 [
41937                                     -123.035306,
41938                                     48.992515
41939                                 ],
41940                                 [
41941                                     -123.03529,
41942                                     48.992515
41943                                 ]
41944                             ]
41945                         ],
41946                         [
41947                             [
41948                                 [
41949                                     -103.837038,
41950                                     29.279906
41951                                 ],
41952                                 [
41953                                     -103.864121,
41954                                     29.281366
41955                                 ],
41956                                 [
41957                                     -103.928122,
41958                                     29.293019
41959                                 ],
41960                                 [
41961                                     -104.01915,
41962                                     29.32033
41963                                 ],
41964                                 [
41965                                     -104.057313,
41966                                     29.339037
41967                                 ],
41968                                 [
41969                                     -104.105424,
41970                                     29.385675
41971                                 ],
41972                                 [
41973                                     -104.139789,
41974                                     29.400584
41975                                 ],
41976                                 [
41977                                     -104.161648,
41978                                     29.416759
41979                                 ],
41980                                 [
41981                                     -104.194514,
41982                                     29.448927
41983                                 ],
41984                                 [
41985                                     -104.212291,
41986                                     29.484661
41987                                 ],
41988                                 [
41989                                     -104.218698,
41990                                     29.489829
41991                                 ],
41992                                 [
41993                                     -104.227148,
41994                                     29.493033
41995                                 ],
41996                                 [
41997                                     -104.251022,
41998                                     29.508588
41999                                 ],
42000                                 [
42001                                     -104.267171,
42002                                     29.526571
42003                                 ],
42004                                 [
42005                                     -104.292751,
42006                                     29.532824
42007                                 ],
42008                                 [
42009                                     -104.320604,
42010                                     29.532255
42011                                 ],
42012                                 [
42013                                     -104.338484,
42014                                     29.524013
42015                                 ],
42016                                 [
42017                                     -104.349026,
42018                                     29.537578
42019                                 ],
42020                                 [
42021                                     -104.430443,
42022                                     29.582795
42023                                 ],
42024                                 [
42025                                     -104.437832,
42026                                     29.58543
42027                                 ],
42028                                 [
42029                                     -104.444008,
42030                                     29.589203
42031                                 ],
42032                                 [
42033                                     -104.448555,
42034                                     29.597678
42035                                 ],
42036                                 [
42037                                     -104.452069,
42038                                     29.607109
42039                                 ],
42040                                 [
42041                                     -104.455222,
42042                                     29.613387
42043                                 ],
42044                                 [
42045                                     -104.469381,
42046                                     29.625402
42047                                 ],
42048                                 [
42049                                     -104.516639,
42050                                     29.654315
42051                                 ],
42052                                 [
42053                                     -104.530824,
42054                                     29.667906
42055                                 ],
42056                                 [
42057                                     -104.535036,
42058                                     29.677802
42059                                 ],
42060                                 [
42061                                     -104.535191,
42062                                     29.687853
42063                                 ],
42064                                 [
42065                                     -104.537103,
42066                                     29.702116
42067                                 ],
42068                                 [
42069                                     -104.543666,
42070                                     29.71643
42071                                 ],
42072                                 [
42073                                     -104.561391,
42074                                     29.745421
42075                                 ],
42076                                 [
42077                                     -104.570279,
42078                                     29.787511
42079                                 ],
42080                                 [
42081                                     -104.583586,
42082                                     29.802575
42083                                 ],
42084                                 [
42085                                     -104.601207,
42086                                     29.81477
42087                                 ],
42088                                 [
42089                                     -104.619682,
42090                                     29.833064
42091                                 ],
42092                                 [
42093                                     -104.623764,
42094                                     29.841487
42095                                 ],
42096                                 [
42097                                     -104.637588,
42098                                     29.887996
42099                                 ],
42100                                 [
42101                                     -104.656346,
42102                                     29.908201
42103                                 ],
42104                                 [
42105                                     -104.660635,
42106                                     29.918433
42107                                 ],
42108                                 [
42109                                     -104.663478,
42110                                     29.923084
42111                                 ],
42112                                 [
42113                                     -104.676526,
42114                                     29.93683
42115                                 ],
42116                                 [
42117                                     -104.680479,
42118                                     29.942308
42119                                 ],
42120                                 [
42121                                     -104.682469,
42122                                     29.952126
42123                                 ],
42124                                 [
42125                                     -104.680117,
42126                                     29.967784
42127                                 ],
42128                                 [
42129                                     -104.680479,
42130                                     29.976466
42131                                 ],
42132                                 [
42133                                     -104.699108,
42134                                     30.03145
42135                                 ],
42136                                 [
42137                                     -104.701589,
42138                                     30.055324
42139                                 ],
42140                                 [
42141                                     -104.698592,
42142                                     30.075271
42143                                 ],
42144                                 [
42145                                     -104.684639,
42146                                     30.111135
42147                                 ],
42148                                 [
42149                                     -104.680479,
42150                                     30.134131
42151                                 ],
42152                                 [
42153                                     -104.67867,
42154                                     30.170356
42155                                 ],
42156                                 [
42157                                     -104.681564,
42158                                     30.192939
42159                                 ],
42160                                 [
42161                                     -104.695853,
42162                                     30.208441
42163                                 ],
42164                                 [
42165                                     -104.715231,
42166                                     30.243995
42167                                 ],
42168                                 [
42169                                     -104.724585,
42170                                     30.252211
42171                                 ],
42172                                 [
42173                                     -104.742155,
42174                                     30.25986
42175                                 ],
42176                                 [
42177                                     -104.74939,
42178                                     30.264459
42179                                 ],
42180                                 [
42181                                     -104.761689,
42182                                     30.284199
42183                                 ],
42184                                 [
42185                                     -104.774143,
42186                                     30.311588
42187                                 ],
42188                                 [
42189                                     -104.788767,
42190                                     30.335927
42191                                 ],
42192                                 [
42193                                     -104.807732,
42194                                     30.346418
42195                                 ],
42196                                 [
42197                                     -104.8129,
42198                                     30.350707
42199                                 ],
42200                                 [
42201                                     -104.814967,
42202                                     30.360577
42203                                 ],
42204                                 [
42205                                     -104.816001,
42206                                     30.371997
42207                                 ],
42208                                 [
42209                                     -104.818274,
42210                                     30.380524
42211                                 ],
42212                                 [
42213                                     -104.824269,
42214                                     30.38719
42215                                 ],
42216                                 [
42217                                     -104.83755,
42218                                     30.394063
42219                                 ],
42220                                 [
42221                                     -104.844939,
42222                                     30.40104
42223                                 ],
42224                                 [
42225                                     -104.853259,
42226                                     30.41215
42227                                 ],
42228                                 [
42229                                     -104.855016,
42230                                     30.417473
42231                                 ],
42232                                 [
42233                                     -104.853621,
42234                                     30.423984
42235                                 ],
42236                                 [
42237                                     -104.852432,
42238                                     30.438867
42239                                 ],
42240                                 [
42241                                     -104.854655,
42242                                     30.448737
42243                                 ],
42244                                 [
42245                                     -104.864473,
42246                                     30.462018
42247                                 ],
42248                                 [
42249                                     -104.866695,
42250                                     30.473025
42251                                 ],
42252                                 [
42253                                     -104.865248,
42254                                     30.479898
42255                                 ],
42256                                 [
42257                                     -104.859615,
42258                                     30.491112
42259                                 ],
42260                                 [
42261                                     -104.859254,
42262                                     30.497261
42263                                 ],
42264                                 [
42265                                     -104.863026,
42266                                     30.502377
42267                                 ],
42268                                 [
42269                                     -104.879718,
42270                                     30.510852
42271                                 ],
42272                                 [
42273                                     -104.882146,
42274                                     30.520929
42275                                 ],
42276                                 [
42277                                     -104.884007,
42278                                     30.541858
42279                                 ],
42280                                 [
42281                                     -104.886591,
42282                                     30.551883
42283                                 ],
42284                                 [
42285                                     -104.898166,
42286                                     30.569401
42287                                 ],
42288                                 [
42289                                     -104.928242,
42290                                     30.599529
42291                                 ],
42292                                 [
42293                                     -104.93434,
42294                                     30.610536
42295                                 ],
42296                                 [
42297                                     -104.941057,
42298                                     30.61405
42299                                 ],
42300                                 [
42301                                     -104.972735,
42302                                     30.618029
42303                                 ],
42304                                 [
42305                                     -104.98276,
42306                                     30.620716
42307                                 ],
42308                                 [
42309                                     -104.989117,
42310                                     30.629553
42311                                 ],
42312                                 [
42313                                     -104.991649,
42314                                     30.640301
42315                                 ],
42316                                 [
42317                                     -104.992941,
42318                                     30.651464
42319                                 ],
42320                                 [
42321                                     -104.995783,
42322                                     30.661747
42323                                 ],
42324                                 [
42325                                     -105.008495,
42326                                     30.676992
42327                                 ],
42328                                 [
42329                                     -105.027977,
42330                                     30.690117
42331                                 ],
42332                                 [
42333                                     -105.049475,
42334                                     30.699264
42335                                 ],
42336                                 [
42337                                     -105.06813,
42338                                     30.702675
42339                                 ],
42340                                 [
42341                                     -105.087043,
42342                                     30.709806
42343                                 ],
42344                                 [
42345                                     -105.133604,
42346                                     30.757917
42347                                 ],
42348                                 [
42349                                     -105.140425,
42350                                     30.750476
42351                                 ],
42352                                 [
42353                                     -105.153241,
42354                                     30.763188
42355                                 ],
42356                                 [
42357                                     -105.157788,
42358                                     30.76572
42359                                 ],
42360                                 [
42361                                     -105.160889,
42362                                     30.764118
42363                                 ],
42364                                 [
42365                                     -105.162698,
42366                                     30.774919
42367                                 ],
42368                                 [
42369                                     -105.167297,
42370                                     30.781171
42371                                 ],
42372                                 [
42373                                     -105.17479,
42374                                     30.783962
42375                                 ],
42376                                 [
42377                                     -105.185125,
42378                                     30.784634
42379                                 ],
42380                                 [
42381                                     -105.195306,
42382                                     30.787941
42383                                 ],
42384                                 [
42385                                     -105.204917,
42386                                     30.80241
42387                                 ],
42388                                 [
42389                                     -105.2121,
42390                                     30.805718
42391                                 ],
42392                                 [
42393                                     -105.21825,
42394                                     30.806803
42395                                 ],
42396                                 [
42397                                     -105.229257,
42398                                     30.810214
42399                                 ],
42400                                 [
42401                                     -105.232874,
42402                                     30.809128
42403                                 ],
42404                                 [
42405                                     -105.239851,
42406                                     30.801532
42407                                 ],
42408                                 [
42409                                     -105.243985,
42410                                     30.799103
42411                                 ],
42412                                 [
42413                                     -105.249049,
42414                                     30.798845
42415                                 ],
42416                                 [
42417                                     -105.259488,
42418                                     30.802979
42419                                 ],
42420                                 [
42421                                     -105.265844,
42422                                     30.808405
42423                                 ],
42424                                 [
42425                                     -105.270753,
42426                                     30.814348
42427                                 ],
42428                                 [
42429                                     -105.277006,
42430                                     30.819412
42431                                 ],
42432                                 [
42433                                     -105.334315,
42434                                     30.843803
42435                                 ],
42436                                 [
42437                                     -105.363771,
42438                                     30.850366
42439                                 ],
42440                                 [
42441                                     -105.376173,
42442                                     30.859565
42443                                 ],
42444                                 [
42445                                     -105.41555,
42446                                     30.902456
42447                                 ],
42448                                 [
42449                                     -105.496682,
42450                                     30.95651
42451                                 ],
42452                                 [
42453                                     -105.530789,
42454                                     30.991701
42455                                 ],
42456                                 [
42457                                     -105.555955,
42458                                     31.002605
42459                                 ],
42460                                 [
42461                                     -105.565722,
42462                                     31.016661
42463                                 ],
42464                                 [
42465                                     -105.578641,
42466                                     31.052163
42467                                 ],
42468                                 [
42469                                     -105.59094,
42470                                     31.071438
42471                                 ],
42472                                 [
42473                                     -105.605875,
42474                                     31.081928
42475                                 ],
42476                                 [
42477                                     -105.623496,
42478                                     31.090351
42479                                 ],
42480                                 [
42481                                     -105.643805,
42482                                     31.103684
42483                                 ],
42484                                 [
42485                                     -105.668042,
42486                                     31.127869
42487                                 ],
42488                                 [
42489                                     -105.675225,
42490                                     31.131951
42491                                 ],
42492                                 [
42493                                     -105.692278,
42494                                     31.137635
42495                                 ],
42496                                 [
42497                                     -105.76819,
42498                                     31.18001
42499                                 ],
42500                                 [
42501                                     -105.777854,
42502                                     31.192722
42503                                 ],
42504                                 [
42505                                     -105.78483,
42506                                     31.211016
42507                                 ],
42508                                 [
42509                                     -105.861983,
42510                                     31.288376
42511                                 ],
42512                                 [
42513                                     -105.880147,
42514                                     31.300881
42515                                 ],
42516                                 [
42517                                     -105.896994,
42518                                     31.305997
42519                                 ],
42520                                 [
42521                                     -105.897149,
42522                                     31.309511
42523                                 ],
42524                                 [
42525                                     -105.908802,
42526                                     31.317004
42527                                 ],
42528                                 [
42529                                     -105.928052,
42530                                     31.326461
42531                                 ],
42532                                 [
42533                                     -105.934563,
42534                                     31.335504
42535                                 ],
42536                                 [
42537                                     -105.941772,
42538                                     31.352351
42539                                 ],
42540                                 [
42541                                     -105.948515,
42542                                     31.361239
42543                                 ],
42544                                 [
42545                                     -105.961202,
42546                                     31.371006
42547                                 ],
42548                                 [
42549                                     -106.004739,
42550                                     31.396948
42551                                 ],
42552                                 [
42553                                     -106.021147,
42554                                     31.402167
42555                                 ],
42556                                 [
42557                                     -106.046261,
42558                                     31.404648
42559                                 ],
42560                                 [
42561                                     -106.065304,
42562                                     31.410952
42563                                 ],
42564                                 [
42565                                     -106.099385,
42566                                     31.428884
42567                                 ],
42568                                 [
42569                                     -106.141113,
42570                                     31.439167
42571                                 ],
42572                                 [
42573                                     -106.164316,
42574                                     31.447797
42575                                 ],
42576                                 [
42577                                     -106.174471,
42578                                     31.460251
42579                                 ],
42580                                 [
42581                                     -106.209249,
42582                                     31.477305
42583                                 ],
42584                                 [
42585                                     -106.215424,
42586                                     31.483919
42587                                 ],
42588                                 [
42589                                     -106.21744,
42590                                     31.488725
42591                                 ],
42592                                 [
42593                                     -106.218731,
42594                                     31.494616
42595                                 ],
42596                                 [
42597                                     -106.222891,
42598                                     31.50459
42599                                 ],
42600                                 [
42601                                     -106.232658,
42602                                     31.519938
42603                                 ],
42604                                 [
42605                                     -106.274749,
42606                                     31.562622
42607                                 ],
42608                                 [
42609                                     -106.286298,
42610                                     31.580141
42611                                 ],
42612                                 [
42613                                     -106.312292,
42614                                     31.648612
42615                                 ],
42616                                 [
42617                                     -106.331309,
42618                                     31.68215
42619                                 ],
42620                                 [
42621                                     -106.35849,
42622                                     31.717548
42623                                 ],
42624                                 [
42625                                     -106.39177,
42626                                     31.745919
42627                                 ],
42628                                 [
42629                                     -106.428951,
42630                                     31.758476
42631                                 ],
42632                                 [
42633                                     -106.473135,
42634                                     31.755065
42635                                 ],
42636                                 [
42637                                     -106.492797,
42638                                     31.759044
42639                                 ],
42640                                 [
42641                                     -106.501425,
42642                                     31.766344
42643                                 ],
42644                                 [
42645                                     -106.506052,
42646                                     31.770258
42647                                 ],
42648                                 [
42649                                     -106.517189,
42650                                     31.773824
42651                                 ],
42652                                 [
42653                                     -106.558969,
42654                                     31.773876
42655                                 ],
42656                                 [
42657                                     -106.584859,
42658                                     31.773927
42659                                 ],
42660                                 [
42661                                     -106.610697,
42662                                     31.773979
42663                                 ],
42664                                 [
42665                                     -106.636587,
42666                                     31.774082
42667                                 ],
42668                                 [
42669                                     -106.662477,
42670                                     31.774134
42671                                 ],
42672                                 [
42673                                     -106.688315,
42674                                     31.774237
42675                                 ],
42676                                 [
42677                                     -106.714205,
42678                                     31.774237
42679                                 ],
42680                                 [
42681                                     -106.740095,
42682                                     31.774289
42683                                 ],
42684                                 [
42685                                     -106.765933,
42686                                     31.774392
42687                                 ],
42688                                 [
42689                                     -106.791823,
42690                                     31.774444
42691                                 ],
42692                                 [
42693                                     -106.817713,
42694                                     31.774496
42695                                 ],
42696                                 [
42697                                     -106.843603,
42698                                     31.774547
42699                                 ],
42700                                 [
42701                                     -106.869441,
42702                                     31.774599
42703                                 ],
42704                                 [
42705                                     -106.895331,
42706                                     31.774702
42707                                 ],
42708                                 [
42709                                     -106.921221,
42710                                     31.774702
42711                                 ],
42712                                 [
42713                                     -106.947111,
42714                                     31.774754
42715                                 ],
42716                                 [
42717                                     -106.973001,
42718                                     31.774857
42719                                 ],
42720                                 [
42721                                     -106.998891,
42722                                     31.774909
42723                                 ],
42724                                 [
42725                                     -107.02478,
42726                                     31.774961
42727                                 ],
42728                                 [
42729                                     -107.05067,
42730                                     31.775013
42731                                 ],
42732                                 [
42733                                     -107.076509,
42734                                     31.775064
42735                                 ],
42736                                 [
42737                                     -107.102398,
42738                                     31.775168
42739                                 ],
42740                                 [
42741                                     -107.128288,
42742                                     31.775168
42743                                 ],
42744                                 [
42745                                     -107.154127,
42746                                     31.775219
42747                                 ],
42748                                 [
42749                                     -107.180016,
42750                                     31.775374
42751                                 ],
42752                                 [
42753                                     -107.205906,
42754                                     31.775374
42755                                 ],
42756                                 [
42757                                     -107.231796,
42758                                     31.775426
42759                                 ],
42760                                 [
42761                                     -107.257634,
42762                                     31.775478
42763                                 ],
42764                                 [
42765                                     -107.283524,
42766                                     31.775529
42767                                 ],
42768                                 [
42769                                     -107.309414,
42770                                     31.775633
42771                                 ],
42772                                 [
42773                                     -107.335252,
42774                                     31.775684
42775                                 ],
42776                                 [
42777                                     -107.361142,
42778                                     31.775788
42779                                 ],
42780                                 [
42781                                     -107.387032,
42782                                     31.775788
42783                                 ],
42784                                 [
42785                                     -107.412896,
42786                                     31.775839
42787                                 ],
42788                                 [
42789                                     -107.438786,
42790                                     31.775943
42791                                 ],
42792                                 [
42793                                     -107.464676,
42794                                     31.775994
42795                                 ],
42796                                 [
42797                                     -107.490566,
42798                                     31.776098
42799                                 ],
42800                                 [
42801                                     -107.516404,
42802                                     31.776149
42803                                 ],
42804                                 [
42805                                     -107.542294,
42806                                     31.776201
42807                                 ],
42808                                 [
42809                                     -107.568184,
42810                                     31.776253
42811                                 ],
42812                                 [
42813                                     -107.594074,
42814                                     31.776304
42815                                 ],
42816                                 [
42817                                     -107.619964,
42818                                     31.776408
42819                                 ],
42820                                 [
42821                                     -107.645854,
42822                                     31.776459
42823                                 ],
42824                                 [
42825                                     -107.671744,
42826                                     31.776459
42827                                 ],
42828                                 [
42829                                     -107.697633,
42830                                     31.776563
42831                                 ],
42832                                 [
42833                                     -107.723472,
42834                                     31.776614
42835                                 ],
42836                                 [
42837                                     -107.749362,
42838                                     31.776666
42839                                 ],
42840                                 [
42841                                     -107.775251,
42842                                     31.776718
42843                                 ],
42844                                 [
42845                                     -107.801141,
42846                                     31.77677
42847                                 ],
42848                                 [
42849                                     -107.82698,
42850                                     31.776873
42851                                 ],
42852                                 [
42853                                     -107.852869,
42854                                     31.776925
42855                                 ],
42856                                 [
42857                                     -107.878759,
42858                                     31.776925
42859                                 ],
42860                                 [
42861                                     -107.904598,
42862                                     31.777028
42863                                 ],
42864                                 [
42865                                     -107.930487,
42866                                     31.77708
42867                                 ],
42868                                 [
42869                                     -107.956377,
42870                                     31.777131
42871                                 ],
42872                                 [
42873                                     -107.982216,
42874                                     31.777183
42875                                 ],
42876                                 [
42877                                     -108.008105,
42878                                     31.777235
42879                                 ],
42880                                 [
42881                                     -108.033995,
42882                                     31.777338
42883                                 ],
42884                                 [
42885                                     -108.059885,
42886                                     31.77739
42887                                 ],
42888                                 [
42889                                     -108.085723,
42890                                     31.77739
42891                                 ],
42892                                 [
42893                                     -108.111613,
42894                                     31.777545
42895                                 ],
42896                                 [
42897                                     -108.137503,
42898                                     31.777545
42899                                 ],
42900                                 [
42901                                     -108.163341,
42902                                     31.777648
42903                                 ],
42904                                 [
42905                                     -108.189283,
42906                                     31.7777
42907                                 ],
42908                                 [
42909                                     -108.215121,
42910                                     31.777751
42911                                 ],
42912                                 [
42913                                     -108.215121,
42914                                     31.770723
42915                                 ],
42916                                 [
42917                                     -108.215121,
42918                                     31.763695
42919                                 ],
42920                                 [
42921                                     -108.215121,
42922                                     31.756667
42923                                 ],
42924                                 [
42925                                     -108.215121,
42926                                     31.749639
42927                                 ],
42928                                 [
42929                                     -108.215121,
42930                                     31.74256
42931                                 ],
42932                                 [
42933                                     -108.215121,
42934                                     31.735583
42935                                 ],
42936                                 [
42937                                     -108.215121,
42938                                     31.728555
42939                                 ],
42940                                 [
42941                                     -108.215121,
42942                                     31.721476
42943                                 ],
42944                                 [
42945                                     -108.215121,
42946                                     31.714396
42947                                 ],
42948                                 [
42949                                     -108.215121,
42950                                     31.70742
42951                                 ],
42952                                 [
42953                                     -108.215121,
42954                                     31.700392
42955                                 ],
42956                                 [
42957                                     -108.215121,
42958                                     31.693312
42959                                 ],
42960                                 [
42961                                     -108.215121,
42962                                     31.686284
42963                                 ],
42964                                 [
42965                                     -108.215121,
42966                                     31.679256
42967                                 ],
42968                                 [
42969                                     -108.215121,
42970                                     31.672176
42971                                 ],
42972                                 [
42973                                     -108.21507,
42974                                     31.665148
42975                                 ],
42976                                 [
42977                                     -108.215018,
42978                                     31.658172
42979                                 ],
42980                                 [
42981                                     -108.215018,
42982                                     31.651092
42983                                 ],
42984                                 [
42985                                     -108.215018,
42986                                     31.644064
42987                                 ],
42988                                 [
42989                                     -108.215018,
42990                                     31.637036
42991                                 ],
42992                                 [
42993                                     -108.215018,
42994                                     31.630008
42995                                 ],
42996                                 [
42997                                     -108.215018,
42998                                     31.62298
42999                                 ],
43000                                 [
43001                                     -108.215018,
43002                                     31.615952
43003                                 ],
43004                                 [
43005                                     -108.215018,
43006                                     31.608873
43007                                 ],
43008                                 [
43009                                     -108.215018,
43010                                     31.601845
43011                                 ],
43012                                 [
43013                                     -108.215018,
43014                                     31.594817
43015                                 ],
43016                                 [
43017                                     -108.215018,
43018                                     31.587789
43019                                 ],
43020                                 [
43021                                     -108.215018,
43022                                     31.580761
43023                                 ],
43024                                 [
43025                                     -108.215018,
43026                                     31.573733
43027                                 ],
43028                                 [
43029                                     -108.215018,
43030                                     31.566653
43031                                 ],
43032                                 [
43033                                     -108.215018,
43034                                     31.559625
43035                                 ],
43036                                 [
43037                                     -108.214966,
43038                                     31.552597
43039                                 ],
43040                                 [
43041                                     -108.214966,
43042                                     31.545569
43043                                 ],
43044                                 [
43045                                     -108.214966,
43046                                     31.538489
43047                                 ],
43048                                 [
43049                                     -108.214966,
43050                                     31.531461
43051                                 ],
43052                                 [
43053                                     -108.214966,
43054                                     31.524485
43055                                 ],
43056                                 [
43057                                     -108.214966,
43058                                     31.517405
43059                                 ],
43060                                 [
43061                                     -108.214966,
43062                                     31.510378
43063                                 ],
43064                                 [
43065                                     -108.214966,
43066                                     31.503401
43067                                 ],
43068                                 [
43069                                     -108.214966,
43070                                     31.496322
43071                                 ],
43072                                 [
43073                                     -108.214966,
43074                                     31.489242
43075                                 ],
43076                                 [
43077                                     -108.214966,
43078                                     31.482214
43079                                 ],
43080                                 [
43081                                     -108.214966,
43082                                     31.475238
43083                                 ],
43084                                 [
43085                                     -108.214966,
43086                                     31.468158
43087                                 ],
43088                                 [
43089                                     -108.214966,
43090                                     31.46113
43091                                 ],
43092                                 [
43093                                     -108.214966,
43094                                     31.454102
43095                                 ],
43096                                 [
43097                                     -108.214966,
43098                                     31.447074
43099                                 ],
43100                                 [
43101                                     -108.214915,
43102                                     31.440046
43103                                 ],
43104                                 [
43105                                     -108.214863,
43106                                     31.432966
43107                                 ],
43108                                 [
43109                                     -108.214863,
43110                                     31.425938
43111                                 ],
43112                                 [
43113                                     -108.214863,
43114                                     31.41891
43115                                 ],
43116                                 [
43117                                     -108.214863,
43118                                     31.411882
43119                                 ],
43120                                 [
43121                                     -108.214863,
43122                                     31.404803
43123                                 ],
43124                                 [
43125                                     -108.214863,
43126                                     31.397826
43127                                 ],
43128                                 [
43129                                     -108.214863,
43130                                     31.390798
43131                                 ],
43132                                 [
43133                                     -108.214863,
43134                                     31.383719
43135                                 ],
43136                                 [
43137                                     -108.214863,
43138                                     31.376639
43139                                 ],
43140                                 [
43141                                     -108.214863,
43142                                     31.369663
43143                                 ],
43144                                 [
43145                                     -108.214863,
43146                                     31.362635
43147                                 ],
43148                                 [
43149                                     -108.214863,
43150                                     31.355555
43151                                 ],
43152                                 [
43153                                     -108.214863,
43154                                     31.348527
43155                                 ],
43156                                 [
43157                                     -108.214863,
43158                                     31.341551
43159                                 ],
43160                                 [
43161                                     -108.214863,
43162                                     31.334471
43163                                 ],
43164                                 [
43165                                     -108.214811,
43166                                     31.327443
43167                                 ],
43168                                 [
43169                                     -108.257573,
43170                                     31.327391
43171                                 ],
43172                                 [
43173                                     -108.300336,
43174                                     31.327391
43175                                 ],
43176                                 [
43177                                     -108.34302,
43178                                     31.327391
43179                                 ],
43180                                 [
43181                                     -108.385731,
43182                                     31.327391
43183                                 ],
43184                                 [
43185                                     -108.428442,
43186                                     31.327391
43187                                 ],
43188                                 [
43189                                     -108.471152,
43190                                     31.327391
43191                                 ],
43192                                 [
43193                                     -108.513837,
43194                                     31.327391
43195                                 ],
43196                                 [
43197                                     -108.556547,
43198                                     31.327391
43199                                 ],
43200                                 [
43201                                     -108.59931,
43202                                     31.327391
43203                                 ],
43204                                 [
43205                                     -108.64202,
43206                                     31.327391
43207                                 ],
43208                                 [
43209                                     -108.684757,
43210                                     31.327391
43211                                 ],
43212                                 [
43213                                     -108.727467,
43214                                     31.327391
43215                                 ],
43216                                 [
43217                                     -108.770178,
43218                                     31.327391
43219                                 ],
43220                                 [
43221                                     -108.812914,
43222                                     31.327391
43223                                 ],
43224                                 [
43225                                     -108.855625,
43226                                     31.327391
43227                                 ],
43228                                 [
43229                                     -108.898335,
43230                                     31.327391
43231                                 ],
43232                                 [
43233                                     -108.941046,
43234                                     31.327391
43235                                 ],
43236                                 [
43237                                     -108.968282,
43238                                     31.327391
43239                                 ],
43240                                 [
43241                                     -108.983731,
43242                                     31.327391
43243                                 ],
43244                                 [
43245                                     -109.026493,
43246                                     31.327391
43247                                 ],
43248                                 [
43249                                     -109.04743,
43250                                     31.327391
43251                                 ],
43252                                 [
43253                                     -109.069203,
43254                                     31.327391
43255                                 ],
43256                                 [
43257                                     -109.111914,
43258                                     31.327391
43259                                 ],
43260                                 [
43261                                     -109.154599,
43262                                     31.327391
43263                                 ],
43264                                 [
43265                                     -109.197361,
43266                                     31.327391
43267                                 ],
43268                                 [
43269                                     -109.240072,
43270                                     31.32734
43271                                 ],
43272                                 [
43273                                     -109.282782,
43274                                     31.32734
43275                                 ],
43276                                 [
43277                                     -109.325519,
43278                                     31.32734
43279                                 ],
43280                                 [
43281                                     -109.368229,
43282                                     31.32734
43283                                 ],
43284                                 [
43285                                     -109.410914,
43286                                     31.32734
43287                                 ],
43288                                 [
43289                                     -109.45365,
43290                                     31.32734
43291                                 ],
43292                                 [
43293                                     -109.496387,
43294                                     31.32734
43295                                 ],
43296                                 [
43297                                     -109.539071,
43298                                     31.32734
43299                                 ],
43300                                 [
43301                                     -109.581808,
43302                                     31.32734
43303                                 ],
43304                                 [
43305                                     -109.624493,
43306                                     31.32734
43307                                 ],
43308                                 [
43309                                     -109.667177,
43310                                     31.32734
43311                                 ],
43312                                 [
43313                                     -109.709965,
43314                                     31.32734
43315                                 ],
43316                                 [
43317                                     -109.75265,
43318                                     31.32734
43319                                 ],
43320                                 [
43321                                     -109.795335,
43322                                     31.32734
43323                                 ],
43324                                 [
43325                                     -109.838123,
43326                                     31.32734
43327                                 ],
43328                                 [
43329                                     -109.880808,
43330                                     31.32734
43331                                 ],
43332                                 [
43333                                     -109.923596,
43334                                     31.327288
43335                                 ],
43336                                 [
43337                                     -109.96628,
43338                                     31.327236
43339                                 ],
43340                                 [
43341                                     -110.008965,
43342                                     31.327236
43343                                 ],
43344                                 [
43345                                     -110.051702,
43346                                     31.327236
43347                                 ],
43348                                 [
43349                                     -110.094386,
43350                                     31.327236
43351                                 ],
43352                                 [
43353                                     -110.137071,
43354                                     31.327236
43355                                 ],
43356                                 [
43357                                     -110.179807,
43358                                     31.327236
43359                                 ],
43360                                 [
43361                                     -110.222544,
43362                                     31.327236
43363                                 ],
43364                                 [
43365                                     -110.265229,
43366                                     31.327236
43367                                 ],
43368                                 [
43369                                     -110.308017,
43370                                     31.327236
43371                                 ],
43372                                 [
43373                                     -110.350753,
43374                                     31.327236
43375                                 ],
43376                                 [
43377                                     -110.39349,
43378                                     31.327236
43379                                 ],
43380                                 [
43381                                     -110.436174,
43382                                     31.327236
43383                                 ],
43384                                 [
43385                                     -110.478859,
43386                                     31.327236
43387                                 ],
43388                                 [
43389                                     -110.521595,
43390                                     31.327236
43391                                 ],
43392                                 [
43393                                     -110.56428,
43394                                     31.327236
43395                                 ],
43396                                 [
43397                                     -110.606965,
43398                                     31.327236
43399                                 ],
43400                                 [
43401                                     -110.649727,
43402                                     31.327236
43403                                 ],
43404                                 [
43405                                     -110.692438,
43406                                     31.327236
43407                                 ],
43408                                 [
43409                                     -110.7352,
43410                                     31.327236
43411                                 ],
43412                                 [
43413                                     -110.777885,
43414                                     31.327236
43415                                 ],
43416                                 [
43417                                     -110.820595,
43418                                     31.327236
43419                                 ],
43420                                 [
43421                                     -110.863358,
43422                                     31.327236
43423                                 ],
43424                                 [
43425                                     -110.906068,
43426                                     31.327236
43427                                 ],
43428                                 [
43429                                     -110.948753,
43430                                     31.327185
43431                                 ],
43432                                 [
43433                                     -111.006269,
43434                                     31.327185
43435                                 ],
43436                                 [
43437                                     -111.067118,
43438                                     31.333644
43439                                 ],
43440                                 [
43441                                     -111.094455,
43442                                     31.342532
43443                                 ],
43444                                 [
43445                                     -111.145924,
43446                                     31.359069
43447                                 ],
43448                                 [
43449                                     -111.197446,
43450                                     31.375554
43451                                 ],
43452                                 [
43453                                     -111.248864,
43454                                     31.392142
43455                                 ],
43456                                 [
43457                                     -111.300333,
43458                                     31.40873
43459                                 ],
43460                                 [
43461                                     -111.351803,
43462                                     31.425318
43463                                 ],
43464                                 [
43465                                     -111.403299,
43466                                     31.441855
43467                                 ],
43468                                 [
43469                                     -111.454768,
43470                                     31.458339
43471                                 ],
43472                                 [
43473                                     -111.506238,
43474                                     31.474979
43475                                 ],
43476                                 [
43477                                     -111.915464,
43478                                     31.601431
43479                                 ],
43480                                 [
43481                                     -112.324715,
43482                                     31.727987
43483                                 ],
43484                                 [
43485                                     -112.733967,
43486                                     31.854543
43487                                 ],
43488                                 [
43489                                     -113.143218,
43490                                     31.981046
43491                                 ],
43492                                 [
43493                                     -113.552444,
43494                                     32.107602
43495                                 ],
43496                                 [
43497                                     -113.961696,
43498                                     32.234132
43499                                 ],
43500                                 [
43501                                     -114.370921,
43502                                     32.360687
43503                                 ],
43504                                 [
43505                                     -114.780147,
43506                                     32.487243
43507                                 ],
43508                                 [
43509                                     -114.816785,
43510                                     32.498534
43511                                 ],
43512                                 [
43513                                     -114.819373,
43514                                     32.499363
43515                                 ],
43516                                 [
43517                                     -114.822108,
43518                                     32.50024
43519                                 ],
43520                                 [
43521                                     -114.809447,
43522                                     32.511324
43523                                 ],
43524                                 [
43525                                     -114.795546,
43526                                     32.552226
43527                                 ],
43528                                 [
43529                                     -114.794203,
43530                                     32.574111
43531                                 ],
43532                                 [
43533                                     -114.802678,
43534                                     32.594497
43535                                 ],
43536                                 [
43537                                     -114.786813,
43538                                     32.621033
43539                                 ],
43540                                 [
43541                                     -114.781542,
43542                                     32.628061
43543                                 ],
43544                                 [
43545                                     -114.758804,
43546                                     32.64483
43547                                 ],
43548                                 [
43549                                     -114.751156,
43550                                     32.65222
43551                                 ],
43552                                 [
43553                                     -114.739477,
43554                                     32.669066
43555                                 ],
43556                                 [
43557                                     -114.731209,
43558                                     32.686636
43559                                 ],
43560                                 [
43561                                     -114.723871,
43562                                     32.711519
43563                                 ],
43564                                 [
43565                                     -114.724284,
43566                                     32.712835
43567                                 ],
43568                                 [
43569                                     -114.724285,
43570                                     32.712836
43571                                 ],
43572                                 [
43573                                     -114.764541,
43574                                     32.709839
43575                                 ],
43576                                 [
43577                                     -114.838076,
43578                                     32.704206
43579                                 ],
43580                                 [
43581                                     -114.911612,
43582                                     32.698703
43583                                 ],
43584                                 [
43585                                     -114.985199,
43586                                     32.693122
43587                                 ],
43588                                 [
43589                                     -115.058734,
43590                                     32.687567
43591                                 ],
43592                                 [
43593                                     -115.13227,
43594                                     32.681986
43595                                 ],
43596                                 [
43597                                     -115.205806,
43598                                     32.676456
43599                                 ],
43600                                 [
43601                                     -115.27929,
43602                                     32.670823
43603                                 ],
43604                                 [
43605                                     -115.352851,
43606                                     32.665346
43607                                 ],
43608                                 [
43609                                     -115.426386,
43610                                     32.659765
43611                                 ],
43612                                 [
43613                                     -115.499922,
43614                                     32.654209
43615                                 ],
43616                                 [
43617                                     -115.573535,
43618                                     32.648654
43619                                 ],
43620                                 [
43621                                     -115.647019,
43622                                     32.643073
43623                                 ],
43624                                 [
43625                                     -115.720529,
43626                                     32.637518
43627                                 ],
43628                                 [
43629                                     -115.794064,
43630                                     32.631963
43631                                 ],
43632                                 [
43633                                     -115.8676,
43634                                     32.626408
43635                                 ],
43636                                 [
43637                                     -115.941213,
43638                                     32.620827
43639                                 ],
43640                                 [
43641                                     -116.014748,
43642                                     32.615271
43643                                 ],
43644                                 [
43645                                     -116.088232,
43646                                     32.609664
43647                                 ],
43648                                 [
43649                                     -116.161742,
43650                                     32.604161
43651                                 ],
43652                                 [
43653                                     -116.235329,
43654                                     32.598554
43655                                 ],
43656                                 [
43657                                     -116.308891,
43658                                     32.593025
43659                                 ],
43660                                 [
43661                                     -116.382426,
43662                                     32.587469
43663                                 ],
43664                                 [
43665                                     -116.455962,
43666                                     32.581888
43667                                 ],
43668                                 [
43669                                     -116.529472,
43670                                     32.576333
43671                                 ],
43672                                 [
43673                                     -116.603007,
43674                                     32.570804
43675                                 ],
43676                                 [
43677                                     -116.676543,
43678                                     32.565223
43679                                 ],
43680                                 [
43681                                     -116.750104,
43682                                     32.559667
43683                                 ],
43684                                 [
43685                                     -116.82364,
43686                                     32.554086
43687                                 ],
43688                                 [
43689                                     -116.897201,
43690                                     32.548531
43691                                 ],
43692                                 [
43693                                     -116.970737,
43694                                     32.542976
43695                                 ],
43696                                 [
43697                                     -117.044221,
43698                                     32.537421
43699                                 ],
43700                                 [
43701                                     -117.125121,
43702                                     32.531669
43703                                 ],
43704                                 [
43705                                     -117.125969,
43706                                     32.538258
43707                                 ],
43708                                 [
43709                                     -117.239623,
43710                                     32.531308
43711                                 ],
43712                                 [
43713                                     -120.274098,
43714                                     32.884264
43715                                 ],
43716                                 [
43717                                     -121.652736,
43718                                     34.467248
43719                                 ],
43720                                 [
43721                                     -124.367265,
43722                                     37.662798
43723                                 ],
43724                                 [
43725                                     -126.739806,
43726                                     41.37928
43727                                 ],
43728                                 [
43729                                     -126.996297,
43730                                     45.773888
43731                                 ],
43732                                 [
43733                                     -124.770704,
43734                                     48.44258
43735                                 ],
43736                                 [
43737                                     -123.734053,
43738                                     48.241906
43739                                 ],
43740                                 [
43741                                     -123.1663,
43742                                     48.27837
43743                                 ],
43744                                 [
43745                                     -123.193018,
43746                                     48.501035
43747                                 ],
43748                                 [
43749                                     -123.176987,
43750                                     48.65482
43751                                 ],
43752                                 [
43753                                     -122.912481,
43754                                     48.753561
43755                                 ],
43756                                 [
43757                                     -122.899122,
43758                                     48.897797
43759                                 ],
43760                                 [
43761                                     -122.837671,
43762                                     48.97502
43763                                 ],
43764                                 [
43765                                     -122.743986,
43766                                     48.980582
43767                                 ],
43768                                 [
43769                                     -122.753,
43770                                     48.992499
43771                                 ],
43772                                 [
43773                                     -122.753012,
43774                                     48.992515
43775                                 ],
43776                                 [
43777                                     -122.653258,
43778                                     48.992515
43779                                 ],
43780                                 [
43781                                     -122.433375,
43782                                     48.992515
43783                                 ],
43784                                 [
43785                                     -122.213517,
43786                                     48.992515
43787                                 ],
43788                                 [
43789                                     -121.993763,
43790                                     48.992515
43791                                 ],
43792                                 [
43793                                     -121.773958,
43794                                     48.992515
43795                                 ],
43796                                 [
43797                                     -121.554152,
43798                                     48.992515
43799                                 ],
43800                                 [
43801                                     -121.33432,
43802                                     48.992515
43803                                 ],
43804                                 [
43805                                     -121.114515,
43806                                     48.992515
43807                                 ],
43808                                 [
43809                                     -95.396937,
43810                                     48.99267
43811                                 ],
43812                                 [
43813                                     -95.177106,
43814                                     48.99267
43815                                 ],
43816                                 [
43817                                     -95.168527,
43818                                     48.995047
43819                                 ],
43820                                 [
43821                                     -95.161887,
43822                                     49.001145
43823                                 ],
43824                                 [
43825                                     -95.159329,
43826                                     49.01179
43827                                 ],
43828                                 [
43829                                     -95.159665,
43830                                     49.10951
43831                                 ],
43832                                 [
43833                                     -95.160027,
43834                                     49.223353
43835                                 ],
43836                                 [
43837                                     -95.160337,
43838                                     49.313012
43839                                 ],
43840                                 [
43841                                     -95.160569,
43842                                     49.369494
43843                                 ],
43844                                 [
43845                                     -95.102821,
43846                                     49.35394
43847                                 ],
43848                                 [
43849                                     -94.982518,
43850                                     49.356162
43851                                 ],
43852                                 [
43853                                     -94.926087,
43854                                     49.345568
43855                                 ],
43856                                 [
43857                                     -94.856195,
43858                                     49.318283
43859                                 ],
43860                                 [
43861                                     -94.839142,
43862                                     49.308878
43863                                 ],
43864                                 [
43865                                     -94.827256,
43866                                     49.292858
43867                                 ],
43868                                 [
43869                                     -94.819892,
43870                                     49.252034
43871                                 ],
43872                                 [
43873                                     -94.810358,
43874                                     49.229606
43875                                 ],
43876                                 [
43877                                     -94.806121,
43878                                     49.210899
43879                                 ],
43880                                 [
43881                                     -94.811185,
43882                                     49.166561
43883                                 ],
43884                                 [
43885                                     -94.803743,
43886                                     49.146407
43887                                 ],
43888                                 [
43889                                     -94.792039,
43890                                     49.12646
43891                                 ],
43892                                 [
43893                                     -94.753772,
43894                                     49.026156
43895                                 ],
43896                                 [
43897                                     -94.711217,
43898                                     48.914586
43899                                 ],
43900                                 [
43901                                     -94.711734,
43902                                     48.862755
43903                                 ],
43904                                 [
43905                                     -94.712147,
43906                                     48.842446
43907                                 ],
43908                                 [
43909                                     -94.713284,
43910                                     48.823843
43911                                 ],
43912                                 [
43913                                     -94.710907,
43914                                     48.807513
43915                                 ],
43916                                 [
43917                                     -94.701786,
43918                                     48.790098
43919                                 ],
43920                                 [
43921                                     -94.688893,
43922                                     48.778832
43923                                 ],
43924                                 [
43925                                     -94.592852,
43926                                     48.726433
43927                                 ],
43928                                 [
43929                                     -94.519161,
43930                                     48.70447
43931                                 ],
43932                                 [
43933                                     -94.4795,
43934                                     48.700698
43935                                 ],
43936                                 [
43937                                     -94.311577,
43938                                     48.713927
43939                                 ],
43940                                 [
43941                                     -94.292586,
43942                                     48.711912
43943                                 ],
43944                                 [
43945                                     -94.284034,
43946                                     48.709069
43947                                 ],
43948                                 [
43949                                     -94.274499,
43950                                     48.704108
43951                                 ],
43952                                 [
43953                                     -94.265482,
43954                                     48.697752
43955                                 ],
43956                                 [
43957                                     -94.258454,
43958                                     48.690828
43959                                 ],
43960                                 [
43961                                     -94.255767,
43962                                     48.683541
43963                                 ],
43964                                 [
43965                                     -94.252459,
43966                                     48.662405
43967                                 ],
43968                                 [
43969                                     -94.251038,
43970                                     48.65729
43971                                 ],
43972                                 [
43973                                     -94.23215,
43974                                     48.652019
43975                                 ],
43976                                 [
43977                                     -94.03485,
43978                                     48.643311
43979                                 ],
43980                                 [
43981                                     -93.874885,
43982                                     48.636206
43983                                 ],
43984                                 [
43985                                     -93.835741,
43986                                     48.617137
43987                                 ],
43988                                 [
43989                                     -93.809386,
43990                                     48.543576
43991                                 ],
43992                                 [
43993                                     -93.778664,
43994                                     48.519468
43995                                 ],
43996                                 [
43997                                     -93.756779,
43998                                     48.516549
43999                                 ],
44000                                 [
44001                                     -93.616297,
44002                                     48.531302
44003                                 ],
44004                                 [
44005                                     -93.599889,
44006                                     48.526341
44007                                 ],
44008                                 [
44009                                     -93.566584,
44010                                     48.538279
44011                                 ],
44012                                 [
44013                                     -93.491756,
44014                                     48.542309
44015                                 ],
44016                                 [
44017                                     -93.459924,
44018                                     48.557399
44019                                 ],
44020                                 [
44021                                     -93.45225,
44022                                     48.572721
44023                                 ],
44024                                 [
44025                                     -93.453774,
44026                                     48.586958
44027                                 ],
44028                                 [
44029                                     -93.451475,
44030                                     48.597422
44031                                 ],
44032                                 [
44033                                     -93.417316,
44034                                     48.604114
44035                                 ],
44036                                 [
44037                                     -93.385716,
44038                                     48.614863
44039                                 ],
44040                                 [
44041                                     -93.25774,
44042                                     48.630314
44043                                 ],
44044                                 [
44045                                     -93.131701,
44046                                     48.62463
44047                                 ],
44048                                 [
44049                                     -92.97972,
44050                                     48.61768
44051                                 ],
44052                                 [
44053                                     -92.955588,
44054                                     48.612228
44055                                 ],
44056                                 [
44057                                     -92.884197,
44058                                     48.579878
44059                                 ],
44060                                 [
44061                                     -92.72555,
44062                                     48.548692
44063                                 ],
44064                                 [
44065                                     -92.648604,
44066                                     48.536263
44067                                 ],
44068                                 [
44069                                     -92.630181,
44070                                     48.519468
44071                                 ],
44072                                 [
44073                                     -92.627468,
44074                                     48.502777
44075                                 ],
44076                                 [
44077                                     -92.646743,
44078                                     48.497428
44079                                 ],
44080                                 [
44081                                     -92.691366,
44082                                     48.489858
44083                                 ],
44084                                 [
44085                                     -92.710641,
44086                                     48.482882
44087                                 ],
44088                                 [
44089                                     -92.718909,
44090                                     48.459782
44091                                 ],
44092                                 [
44093                                     -92.704052,
44094                                     48.445158
44095                                 ],
44096                                 [
44097                                     -92.677129,
44098                                     48.441747
44099                                 ],
44100                                 [
44101                                     -92.657053,
44102                                     48.438233
44103                                 ],
44104                                 [
44105                                     -92.570521,
44106                                     48.446656
44107                                 ],
44108                                 [
44109                                     -92.526932,
44110                                     48.445623
44111                                 ],
44112                                 [
44113                                     -92.490629,
44114                                     48.433117
44115                                 ],
44116                                 [
44117                                     -92.474532,
44118                                     48.410483
44119                                 ],
44120                                 [
44121                                     -92.467581,
44122                                     48.394282
44123                                 ],
44124                                 [
44125                                     -92.467064,
44126                                     48.353225
44127                                 ],
44128                                 [
44129                                     -92.462465,
44130                                     48.329299
44131                                 ],
44132                                 [
44133                                     -92.451381,
44134                                     48.312685
44135                                 ],
44136                                 [
44137                                     -92.41823,
44138                                     48.282041
44139                                 ],
44140                                 [
44141                                     -92.38464,
44142                                     48.232406
44143                                 ],
44144                                 [
44145                                     -92.371851,
44146                                     48.222587
44147                                 ],
44148                                 [
44149                                     -92.353815,
44150                                     48.222897
44151                                 ],
44152                                 [
44153                                     -92.327874,
44154                                     48.229435
44155                                 ],
44156                                 [
44157                                     -92.303663,
44158                                     48.239279
44159                                 ],
44160                                 [
44161                                     -92.291029,
44162                                     48.249562
44163                                 ],
44164                                 [
44165                                     -92.292062,
44166                                     48.270336
44167                                 ],
44168                                 [
44169                                     -92.301416,
44170                                     48.290645
44171                                 ],
44172                                 [
44173                                     -92.303095,
44174                                     48.310928
44175                                 ],
44176                                 [
44177                                     -92.281598,
44178                                     48.33178
44179                                 ],
44180                                 [
44181                                     -92.259118,
44182                                     48.339635
44183                                 ],
44184                                 [
44185                                     -92.154732,
44186                                     48.350125
44187                                 ],
44188                                 [
44189                                     -92.070499,
44190                                     48.346714
44191                                 ],
44192                                 [
44193                                     -92.043421,
44194                                     48.334596
44195                                 ],
44196                                 [
44197                                     -92.030114,
44198                                     48.313176
44199                                 ],
44200                                 [
44201                                     -92.021355,
44202                                     48.287441
44203                                 ],
44204                                 [
44205                                     -92.007997,
44206                                     48.262482
44207                                 ],
44208                                 [
44209                                     -91.992158,
44210                                     48.247909
44211                                 ],
44212                                 [
44213                                     -91.975492,
44214                                     48.236566
44215                                 ],
44216                                 [
44217                                     -91.957302,
44218                                     48.228323
44219                                 ],
44220                                 [
44221                                     -91.852244,
44222                                     48.195974
44223                                 ],
44224                                 [
44225                                     -91.764988,
44226                                     48.187344
44227                                 ],
44228                                 [
44229                                     -91.744137,
44230                                     48.179593
44231                                 ],
44232                                 [
44233                                     -91.727575,
44234                                     48.168327
44235                                 ],
44236                                 [
44237                                     -91.695509,
44238                                     48.13758
44239                                 ],
44240                                 [
44241                                     -91.716438,
44242                                     48.112051
44243                                 ],
44244                                 [
44245                                     -91.692512,
44246                                     48.097866
44247                                 ],
44248                                 [
44249                                     -91.618615,
44250                                     48.089572
44251                                 ],
44252                                 [
44253                                     -91.597479,
44254                                     48.090399
44255                                 ],
44256                                 [
44257                                     -91.589676,
44258                                     48.088332
44259                                 ],
44260                                 [
44261                                     -91.581098,
44262                                     48.080942
44263                                 ],
44264                                 [
44265                                     -91.579806,
44266                                     48.070969
44267                                 ],
44268                                 [
44269                                     -91.585129,
44270                                     48.06084
44271                                 ],
44272                                 [
44273                                     -91.586989,
44274                                     48.052572
44275                                 ],
44276                                 [
44277                                     -91.574845,
44278                                     48.048205
44279                                 ],
44280                                 [
44281                                     -91.487098,
44282                                     48.053476
44283                                 ],
44284                                 [
44285                                     -91.464722,
44286                                     48.048955
44287                                 ],
44288                                 [
44289                                     -91.446274,
44290                                     48.040738
44291                                 ],
44292                                 [
44293                                     -91.427929,
44294                                     48.036449
44295                                 ],
44296                                 [
44297                                     -91.3654,
44298                                     48.057843
44299                                 ],
44300                                 [
44301                                     -91.276362,
44302                                     48.064768
44303                                 ],
44304                                 [
44305                                     -91.23807,
44306                                     48.082648
44307                                 ],
44308                                 [
44309                                     -91.203963,
44310                                     48.107659
44311                                 ],
44312                                 [
44313                                     -91.071103,
44314                                     48.170859
44315                                 ],
44316                                 [
44317                                     -91.02816,
44318                                     48.184838
44319                                 ],
44320                                 [
44321                                     -91.008109,
44322                                     48.194372
44323                                 ],
44324                                 [
44325                                     -90.923153,
44326                                     48.227109
44327                                 ],
44328                                 [
44329                                     -90.873802,
44330                                     48.234344
44331                                 ],
44332                                 [
44333                                     -90.840678,
44334                                     48.220107
44335                                 ],
44336                                 [
44337                                     -90.837939,
44338                                     48.210547
44339                                 ],
44340                                 [
44341                                     -90.848843,
44342                                     48.198713
44343                                 ],
44344                                 [
44345                                     -90.849721,
44346                                     48.189566
44347                                 ],
44348                                 [
44349                                     -90.843003,
44350                                     48.176983
44351                                 ],
44352                                 [
44353                                     -90.83427,
44354                                     48.171789
44355                                 ],
44356                                 [
44357                                     -90.823883,
44358                                     48.168327
44359                                 ],
44360                                 [
44361                                     -90.812307,
44362                                     48.160989
44363                                 ],
44364                                 [
44365                                     -90.803057,
44366                                     48.147166
44367                                 ],
44368                                 [
44369                                     -90.796701,
44370                                     48.117064
44371                                 ],
44372                                 [
44373                                     -90.786469,
44374                                     48.10045
44375                                 ],
44376                                 [
44377                                     -90.750347,
44378                                     48.083991
44379                                 ],
44380                                 [
44381                                     -90.701307,
44382                                     48.08456
44383                                 ],
44384                                 [
44385                                     -90.611079,
44386                                     48.103499
44387                                 ],
44388                                 [
44389                                     -90.586843,
44390                                     48.104817
44391                                 ],
44392                                 [
44393                                     -90.573872,
44394                                     48.097892
44395                                 ],
44396                                 [
44397                                     -90.562194,
44398                                     48.088849
44399                                 ],
44400                                 [
44401                                     -90.542014,
44402                                     48.083733
44403                                 ],
44404                                 [
44405                                     -90.531601,
44406                                     48.08456
44407                                 ],
44408                                 [
44409                                     -90.501887,
44410                                     48.094275
44411                                 ],
44412                                 [
44413                                     -90.490493,
44414                                     48.096239
44415                                 ],
44416                                 [
44417                                     -90.483465,
44418                                     48.094482
44419                                 ],
44420                                 [
44421                                     -90.477858,
44422                                     48.091536
44423                                 ],
44424                                 [
44425                                     -90.470623,
44426                                     48.089882
44427                                 ],
44428                                 [
44429                                     -90.178625,
44430                                     48.116444
44431                                 ],
44432                                 [
44433                                     -90.120386,
44434                                     48.115359
44435                                 ],
44436                                 [
44437                                     -90.073257,
44438                                     48.101199
44439                                 ],
44440                                 [
44441                                     -90.061036,
44442                                     48.091019
44443                                 ],
44444                                 [
44445                                     -90.008222,
44446                                     48.029731
44447                                 ],
44448                                 [
44449                                     -89.995329,
44450                                     48.018595
44451                                 ],
44452                                 [
44453                                     -89.980317,
44454                                     48.010094
44455                                 ],
44456                                 [
44457                                     -89.92045,
44458                                     47.98746
44459                                 ],
44460                                 [
44461                                     -89.902441,
44462                                     47.985909
44463                                 ],
44464                                 [
44465                                     -89.803454,
44466                                     48.013763
44467                                 ],
44468                                 [
44469                                     -89.780975,
44470                                     48.017199
44471                                 ],
44472                                 [
44473                                     -89.763302,
44474                                     48.017303
44475                                 ],
44476                                 [
44477                                     -89.745964,
44478                                     48.013763
44479                                 ],
44480                                 [
44481                                     -89.724596,
44482                                     48.005908
44483                                 ],
44484                                 [
44485                                     -89.712788,
44486                                     48.003376
44487                                 ],
44488                                 [
44489                                     -89.678656,
44490                                     48.008699
44491                                 ],
44492                                 [
44493                                     -89.65659,
44494                                     48.007975
44495                                 ],
44496                                 [
44497                                     -89.593105,
44498                                     47.996503
44499                                 ],
44500                                 [
44501                                     -89.581753,
44502                                     47.996333
44503                                 ],
44504                                 [
44505                                     -89.586724,
44506                                     47.992938
44507                                 ],
44508                                 [
44509                                     -89.310872,
44510                                     47.981097
44511                                 ],
44512                                 [
44513                                     -89.072861,
44514                                     48.046842
44515                                 ],
44516                                 [
44517                                     -88.49789,
44518                                     48.212841
44519                                 ],
44520                                 [
44521                                     -88.286621,
44522                                     48.156675
44523                                 ],
44524                                 [
44525                                     -85.939935,
44526                                     47.280501
44527                                 ],
44528                                 [
44529                                     -84.784644,
44530                                     46.770068
44531                                 ],
44532                                 [
44533                                     -84.516909,
44534                                     46.435083
44535                                 ],
44536                                 [
44537                                     -84.489712,
44538                                     46.446652
44539                                 ],
44540                                 [
44541                                     -84.491052,
44542                                     46.457658
44543                                 ],
44544                                 [
44545                                     -84.478301,
44546                                     46.466467
44547                                 ],
44548                                 [
44549                                     -84.465408,
44550                                     46.478172
44551                                 ],
44552                                 [
44553                                     -84.448096,
44554                                     46.489722
44555                                 ],
44556                                 [
44557                                     -84.42324,
44558                                     46.511581
44559                                 ],
44560                                 [
44561                                     -84.389702,
44562                                     46.520262
44563                                 ],
44564                                 [
44565                                     -84.352469,
44566                                     46.522743
44567                                 ],
44568                                 [
44569                                     -84.30534,
44570                                     46.501607
44571                                 ],
44572                                 [
44573                                     -84.242011,
44574                                     46.526464
44575                                 ],
44576                                 [
44577                                     -84.197285,
44578                                     46.546359
44579                                 ],
44580                                 [
44581                                     -84.147676,
44582                                     46.541346
44583                                 ],
44584                                 [
44585                                     -84.110443,
44586                                     46.526464
44587                                 ],
44588                                 [
44589                                     -84.158812,
44590                                     46.433343
44591                                 ],
44592                                 [
44593                                     -84.147676,
44594                                     46.399882
44595                                 ],
44596                                 [
44597                                     -84.129046,
44598                                     46.375026
44599                                 ],
44600                                 [
44601                                     -84.10543,
44602                                     46.347741
44603                                 ],
44604                                 [
44605                                     -84.105944,
44606                                     46.346374
44607                                 ],
44608                                 [
44609                                     -84.117195,
44610                                     46.347157
44611                                 ],
44612                                 [
44613                                     -84.117489,
44614                                     46.338326
44615                                 ],
44616                                 [
44617                                     -84.122361,
44618                                     46.331922
44619                                 ],
44620                                 [
44621                                     -84.112061,
44622                                     46.287102
44623                                 ],
44624                                 [
44625                                     -84.092672,
44626                                     46.227469
44627                                 ],
44628                                 [
44629                                     -84.111983,
44630                                     46.20337
44631                                 ],
44632                                 [
44633                                     -84.015118,
44634                                     46.149712
44635                                 ],
44636                                 [
44637                                     -83.957038,
44638                                     46.045736
44639                                 ],
44640                                 [
44641                                     -83.676821,
44642                                     46.15388
44643                                 ],
44644                                 [
44645                                     -83.429449,
44646                                     46.086221
44647                                 ],
44648                                 [
44649                                     -83.523049,
44650                                     45.892052
44651                                 ],
44652                                 [
44653                                     -83.574563,
44654                                     45.890259
44655                                 ],
44656                                 [
44657                                     -82.551615,
44658                                     44.857931
44659                                 ],
44660                                 [
44661                                     -82.655591,
44662                                     43.968545
44663                                 ],
44664                                 [
44665                                     -82.440632,
44666                                     43.096285
44667                                 ],
44668                                 [
44669                                     -82.460131,
44670                                     43.084392
44671                                 ],
44672                                 [
44673                                     -82.458894,
44674                                     43.083247
44675                                 ],
44676                                 [
44677                                     -82.431813,
44678                                     43.039387
44679                                 ],
44680                                 [
44681                                     -82.424748,
44682                                     43.02408
44683                                 ],
44684                                 [
44685                                     -82.417242,
44686                                     43.01731
44687                                 ],
44688                                 [
44689                                     -82.416369,
44690                                     43.01742
44691                                 ],
44692                                 [
44693                                     -82.416412,
44694                                     43.017143
44695                                 ],
44696                                 [
44697                                     -82.414603,
44698                                     42.983243
44699                                 ],
44700                                 [
44701                                     -82.430442,
44702                                     42.951307
44703                                 ],
44704                                 [
44705                                     -82.453179,
44706                                     42.918983
44707                                 ],
44708                                 [
44709                                     -82.464781,
44710                                     42.883637
44711                                 ],
44712                                 [
44713                                     -82.468036,
44714                                     42.863974
44715                                 ],
44716                                 [
44717                                     -82.482325,
44718                                     42.835113
44719                                 ],
44720                                 [
44721                                     -82.485271,
44722                                     42.818524
44723                                 ],
44724                                 [
44725                                     -82.473618,
44726                                     42.798164
44727                                 ],
44728                                 [
44729                                     -82.470982,
44730                                     42.790568
44731                                 ],
44732                                 [
44733                                     -82.471344,
44734                                     42.779845
44735                                 ],
44736                                 [
44737                                     -82.476951,
44738                                     42.761474
44739                                 ],
44740                                 [
44741                                     -82.48341,
44742                                     42.719254
44743                                 ],
44744                                 [
44745                                     -82.511264,
44746                                     42.646675
44747                                 ],
44748                                 [
44749                                     -82.526224,
44750                                     42.619906
44751                                 ],
44752                                 [
44753                                     -82.549246,
44754                                     42.590941
44755                                 ],
44756                                 [
44757                                     -82.575833,
44758                                     42.571795
44759                                 ],
44760                                 [
44761                                     -82.608467,
44762                                     42.561098
44763                                 ],
44764                                 [
44765                                     -82.644331,
44766                                     42.557817
44767                                 ],
44768                                 [
44769                                     -82.644698,
44770                                     42.557533
44771                                 ],
44772                                 [
44773                                     -82.644932,
44774                                     42.561634
44775                                 ],
44776                                 [
44777                                     -82.637132,
44778                                     42.568405
44779                                 ],
44780                                 [
44781                                     -82.60902,
44782                                     42.579296
44783                                 ],
44784                                 [
44785                                     -82.616673,
44786                                     42.582828
44787                                 ],
44788                                 [
44789                                     -82.636985,
44790                                     42.599607
44791                                 ],
44792                                 [
44793                                     -82.625357,
44794                                     42.616092
44795                                 ],
44796                                 [
44797                                     -82.629331,
44798                                     42.626394
44799                                 ],
44800                                 [
44801                                     -82.638751,
44802                                     42.633459
44803                                 ],
44804                                 [
44805                                     -82.644344,
44806                                     42.640524
44807                                 ],
44808                                 [
44809                                     -82.644166,
44810                                     42.641056
44811                                 ],
44812                                 [
44813                                     -82.716083,
44814                                     42.617461
44815                                 ],
44816                                 [
44817                                     -82.777592,
44818                                     42.408506
44819                                 ],
44820                                 [
44821                                     -82.888693,
44822                                     42.406093
44823                                 ],
44824                                 [
44825                                     -82.889991,
44826                                     42.403266
44827                                 ],
44828                                 [
44829                                     -82.905739,
44830                                     42.387665
44831                                 ],
44832                                 [
44833                                     -82.923842,
44834                                     42.374419
44835                                 ],
44836                                 [
44837                                     -82.937972,
44838                                     42.366176
44839                                 ],
44840                                 [
44841                                     -82.947686,
44842                                     42.363527
44843                                 ],
44844                                 [
44845                                     -82.979624,
44846                                     42.359406
44847                                 ],
44848                                 [
44849                                     -83.042618,
44850                                     42.340861
44851                                 ],
44852                                 [
44853                                     -83.061899,
44854                                     42.32732
44855                                 ],
44856                                 [
44857                                     -83.081622,
44858                                     42.30907
44859                                 ],
44860                                 [
44861                                     -83.11342,
44862                                     42.279619
44863                                 ],
44864                                 [
44865                                     -83.145306,
44866                                     42.066968
44867                                 ],
44868                                 [
44869                                     -83.177398,
44870                                     41.960666
44871                                 ],
44872                                 [
44873                                     -83.21512,
44874                                     41.794493
44875                                 ],
44876                                 [
44877                                     -82.219051,
44878                                     41.516445
44879                                 ],
44880                                 [
44881                                     -80.345329,
44882                                     42.13344
44883                                 ],
44884                                 [
44885                                     -80.316455,
44886                                     42.123137
44887                                 ],
44888                                 [
44889                                     -79.270266,
44890                                     42.591872
44891                                 ],
44892                                 [
44893                                     -79.221058,
44894                                     42.582892
44895                                 ],
44896                                 [
44897                                     -78.871842,
44898                                     42.860012
44899                                 ],
44900                                 [
44901                                     -78.875011,
44902                                     42.867184
44903                                 ],
44904                                 [
44905                                     -78.896205,
44906                                     42.897209
44907                                 ],
44908                                 [
44909                                     -78.901651,
44910                                     42.908101
44911                                 ],
44912                                 [
44913                                     -78.90901,
44914                                     42.952255
44915                                 ],
44916                                 [
44917                                     -78.913426,
44918                                     42.957848
44919                                 ],
44920                                 [
44921                                     -78.932118,
44922                                     42.9708
44923                                 ],
44924                                 [
44925                                     -78.936386,
44926                                     42.979631
44927                                 ],
44928                                 [
44929                                     -78.927997,
44930                                     43.002003
44931                                 ],
44932                                 [
44933                                     -78.893114,
44934                                     43.029379
44935                                 ],
44936                                 [
44937                                     -78.887963,
44938                                     43.051456
44939                                 ],
44940                                 [
44941                                     -78.914897,
44942                                     43.076477
44943                                 ],
44944                                 [
44945                                     -79.026167,
44946                                     43.086485
44947                                 ],
44948                                 [
44949                                     -79.065231,
44950                                     43.10573
44951                                 ],
44952                                 [
44953                                     -79.065273,
44954                                     43.105897
44955                                 ],
44956                                 [
44957                                     -79.065738,
44958                                     43.120237
44959                                 ],
44960                                 [
44961                                     -79.061423,
44962                                     43.130288
44963                                 ],
44964                                 [
44965                                     -79.055583,
44966                                     43.138427
44967                                 ],
44968                                 [
44969                                     -79.051604,
44970                                     43.146851
44971                                 ],
44972                                 [
44973                                     -79.04933,
44974                                     43.159847
44975                                 ],
44976                                 [
44977                                     -79.048607,
44978                                     43.170622
44979                                 ],
44980                                 [
44981                                     -79.053775,
44982                                     43.260358
44983                                 ],
44984                                 [
44985                                     -79.058425,
44986                                     43.277799
44987                                 ],
44988                                 [
44989                                     -79.058631,
44990                                     43.2782
44991                                 ],
44992                                 [
44993                                     -78.990696,
44994                                     43.286947
44995                                 ],
44996                                 [
44997                                     -78.862059,
44998                                     43.324332
44999                                 ],
45000                                 [
45001                                     -78.767813,
45002                                     43.336418
45003                                 ],
45004                                 [
45005                                     -78.516117,
45006                                     43.50645
45007                                 ],
45008                                 [
45009                                     -76.363317,
45010                                     43.943219
45011                                 ],
45012                                 [
45013                                     -76.396746,
45014                                     44.106667
45015                                 ],
45016                                 [
45017                                     -76.364697,
45018                                     44.111631
45019                                 ],
45020                                 [
45021                                     -76.366146,
45022                                     44.117349
45023                                 ],
45024                                 [
45025                                     -76.357462,
45026                                     44.131478
45027                                 ],
45028                                 [
45029                                     -76.183493,
45030                                     44.223025
45031                                 ],
45032                                 [
45033                                     -76.162644,
45034                                     44.229888
45035                                 ],
45036                                 [
45037                                     -76.176117,
45038                                     44.30795
45039                                 ],
45040                                 [
45041                                     -76.046414,
45042                                     44.354817
45043                                 ],
45044                                 [
45045                                     -75.928746,
45046                                     44.391137
45047                                 ],
45048                                 [
45049                                     -75.852508,
45050                                     44.381639
45051                                 ],
45052                                 [
45053                                     -75.849095,
45054                                     44.386103
45055                                 ],
45056                                 [
45057                                     -75.847623,
45058                                     44.392579
45059                                 ],
45060                                 [
45061                                     -75.84674,
45062                                     44.398172
45063                                 ],
45064                                 [
45065                                     -75.845415,
45066                                     44.40141
45067                                 ],
45068                                 [
45069                                     -75.780803,
45070                                     44.432318
45071                                 ],
45072                                 [
45073                                     -75.770205,
45074                                     44.446153
45075                                 ],
45076                                 [
45077                                     -75.772266,
45078                                     44.463815
45079                                 ],
45080                                 [
45081                                     -75.779184,
45082                                     44.48236
45083                                 ],
45084                                 [
45085                                     -75.791496,
45086                                     44.496513
45087                                 ],
45088                                 [
45089                                     -75.791183,
45090                                     44.496768
45091                                 ],
45092                                 [
45093                                     -75.754622,
45094                                     44.527567
45095                                 ],
45096                                 [
45097                                     -75.69969,
45098                                     44.581673
45099                                 ],
45100                                 [
45101                                     -75.578199,
45102                                     44.661513
45103                                 ],
45104                                 [
45105                                     -75.455958,
45106                                     44.741766
45107                                 ],
45108                                 [
45109                                     -75.341831,
45110                                     44.816749
45111                                 ],
45112                                 [
45113                                     -75.270233,
45114                                     44.863774
45115                                 ],
45116                                 [
45117                                     -75.129647,
45118                                     44.925166
45119                                 ],
45120                                 [
45121                                     -75.075594,
45122                                     44.935501
45123                                 ],
45124                                 [
45125                                     -75.058721,
45126                                     44.941031
45127                                 ],
45128                                 [
45129                                     -75.0149,
45130                                     44.96599
45131                                 ],
45132                                 [
45133                                     -74.998647,
45134                                     44.972398
45135                                 ],
45136                                 [
45137                                     -74.940201,
45138                                     44.987746
45139                                 ],
45140                                 [
45141                                     -74.903744,
45142                                     45.005213
45143                                 ],
45144                                 [
45145                                     -74.88651,
45146                                     45.009398
45147                                 ],
45148                                 [
45149                                     -74.868474,
45150                                     45.010122
45151                                 ],
45152                                 [
45153                                     -74.741557,
45154                                     44.998857
45155                                 ],
45156                                 [
45157                                     -74.712961,
45158                                     44.999254
45159                                 ],
45160                                 [
45161                                     -74.695875,
45162                                     44.99803
45163                                 ],
45164                                 [
45165                                     -74.596114,
45166                                     44.998495
45167                                 ],
45168                                 [
45169                                     -74.496352,
45170                                     44.999012
45171                                 ],
45172                                 [
45173                                     -74.197146,
45174                                     45.000458
45175                                 ],
45176                                 [
45177                                     -71.703551,
45178                                     45.012757
45179                                 ],
45180                                 [
45181                                     -71.603816,
45182                                     45.013274
45183                                 ],
45184                                 [
45185                                     -71.505848,
45186                                     45.013731
45187                                 ],
45188                                 [
45189                                     -71.50408,
45190                                     45.013739
45191                                 ],
45192                                 [
45193                                     -71.506613,
45194                                     45.037045
45195                                 ],
45196                                 [
45197                                     -71.504752,
45198                                     45.052962
45199                                 ],
45200                                 [
45201                                     -71.497259,
45202                                     45.066553
45203                                 ],
45204                                 [
45205                                     -71.45659,
45206                                     45.110994
45207                                 ],
45208                                 [
45209                                     -71.451215,
45210                                     45.121691
45211                                 ],
45212                                 [
45213                                     -71.445996,
45214                                     45.140295
45215                                 ],
45216                                 [
45217                                     -71.441604,
45218                                     45.150682
45219                                 ],
45220                                 [
45221                                     -71.413026,
45222                                     45.186184
45223                                 ],
45224                                 [
45225                                     -71.406567,
45226                                     45.204942
45227                                 ],
45228                                 [
45229                                     -71.42269,
45230                                     45.217189
45231                                 ],
45232                                 [
45233                                     -71.449045,
45234                                     45.226905
45235                                 ],
45236                                 [
45237                                     -71.438813,
45238                                     45.233468
45239                                 ],
45240                                 [
45241                                     -71.394888,
45242                                     45.241529
45243                                 ],
45244                                 [
45245                                     -71.381245,
45246                                     45.250779
45247                                 ],
45248                                 [
45249                                     -71.3521,
45250                                     45.278323
45251                                 ],
45252                                 [
45253                                     -71.334323,
45254                                     45.28871
45255                                 ],
45256                                 [
45257                                     -71.311534,
45258                                     45.294136
45259                                 ],
45260                                 [
45261                                     -71.293396,
45262                                     45.292327
45263                                 ],
45264                                 [
45265                                     -71.20937,
45266                                     45.254758
45267                                 ],
45268                                 [
45269                                     -71.185133,
45270                                     45.248557
45271                                 ],
45272                                 [
45273                                     -71.160329,
45274                                     45.245767
45275                                 ],
45276                                 [
45277                                     -71.141725,
45278                                     45.252329
45279                                 ],
45280                                 [
45281                                     -71.111029,
45282                                     45.287108
45283                                 ],
45284                                 [
45285                                     -71.095242,
45286                                     45.300905
45287                                 ],
45288                                 [
45289                                     -71.085553,
45290                                     45.304213
45291                                 ],
45292                                 [
45293                                     -71.084952,
45294                                     45.304293
45295                                 ],
45296                                 [
45297                                     -71.064211,
45298                                     45.307055
45299                                 ],
45300                                 [
45301                                     -71.054418,
45302                                     45.310362
45303                                 ],
45304                                 [
45305                                     -71.036667,
45306                                     45.323385
45307                                 ],
45308                                 [
45309                                     -71.027598,
45310                                     45.33465
45311                                 ],
45312                                 [
45313                                     -71.016539,
45314                                     45.343125
45315                                 ],
45316                                 [
45317                                     -70.993155,
45318                                     45.347827
45319                                 ],
45320                                 [
45321                                     -70.968118,
45322                                     45.34452
45323                                 ],
45324                                 [
45325                                     -70.951608,
45326                                     45.332014
45327                                 ],
45328                                 [
45329                                     -70.906908,
45330                                     45.246232
45331                                 ],
45332                                 [
45333                                     -70.892412,
45334                                     45.234604
45335                                 ],
45336                                 [
45337                                     -70.874351,
45338                                     45.245663
45339                                 ],
45340                                 [
45341                                     -70.870605,
45342                                     45.255275
45343                                 ],
45344                                 [
45345                                     -70.872491,
45346                                     45.274189
45347                                 ],
45348                                 [
45349                                     -70.870243,
45350                                     45.283129
45351                                 ],
45352                                 [
45353                                     -70.862621,
45354                                     45.290363
45355                                 ],
45356                                 [
45357                                     -70.842389,
45358                                     45.301215
45359                                 ],
45360                                 [
45361                                     -70.835258,
45362                                     45.309794
45363                                 ],
45364                                 [
45365                                     -70.83208,
45366                                     45.328552
45367                                 ],
45368                                 [
45369                                     -70.835465,
45370                                     45.373097
45371                                 ],
45372                                 [
45373                                     -70.833837,
45374                                     45.393096
45375                                 ],
45376                                 [
45377                                     -70.825982,
45378                                     45.410459
45379                                 ],
45380                                 [
45381                                     -70.812986,
45382                                     45.42343
45383                                 ],
45384                                 [
45385                                     -70.794873,
45386                                     45.430406
45387                                 ],
45388                                 [
45389                                     -70.771877,
45390                                     45.430045
45391                                 ],
45392                                 [
45393                                     -70.75255,
45394                                     45.422345
45395                                 ],
45396                                 [
45397                                     -70.718004,
45398                                     45.397282
45399                                 ],
45400                                 [
45401                                     -70.696739,
45402                                     45.388652
45403                                 ],
45404                                 [
45405                                     -70.675785,
45406                                     45.388704
45407                                 ],
45408                                 [
45409                                     -70.65359,
45410                                     45.395473
45411                                 ],
45412                                 [
45413                                     -70.641316,
45414                                     45.408496
45415                                 ],
45416                                 [
45417                                     -70.650257,
45418                                     45.427461
45419                                 ],
45420                                 [
45421                                     -70.668162,
45422                                     45.439036
45423                                 ],
45424                                 [
45425                                     -70.707385,
45426                                     45.4564
45427                                 ],
45428                                 [
45429                                     -70.722836,
45430                                     45.470921
45431                                 ],
45432                                 [
45433                                     -70.732009,
45434                                     45.491591
45435                                 ],
45436                                 [
45437                                     -70.730329,
45438                                     45.507973
45439                                 ],
45440                                 [
45441                                     -70.686792,
45442                                     45.572723
45443                                 ],
45444                                 [
45445                                     -70.589614,
45446                                     45.651788
45447                                 ],
45448                                 [
45449                                     -70.572406,
45450                                     45.662279
45451                                 ],
45452                                 [
45453                                     -70.514735,
45454                                     45.681709
45455                                 ],
45456                                 [
45457                                     -70.484763,
45458                                     45.699641
45459                                 ],
45460                                 [
45461                                     -70.4728,
45462                                     45.703568
45463                                 ],
45464                                 [
45465                                     -70.450424,
45466                                     45.703723
45467                                 ],
45468                                 [
45469                                     -70.439132,
45470                                     45.705893
45471                                 ],
45472                                 [
45473                                     -70.419315,
45474                                     45.716901
45475                                 ],
45476                                 [
45477                                     -70.407351,
45478                                     45.731525
45479                                 ],
45480                                 [
45481                                     -70.402442,
45482                                     45.749663
45483                                 ],
45484                                 [
45485                                     -70.403941,
45486                                     45.771161
45487                                 ],
45488                                 [
45489                                     -70.408282,
45490                                     45.781651
45491                                 ],
45492                                 [
45493                                     -70.413682,
45494                                     45.787697
45495                                 ],
45496                                 [
45497                                     -70.41717,
45498                                     45.793795
45499                                 ],
45500                                 [
45501                                     -70.415232,
45502                                     45.804389
45503                                 ],
45504                                 [
45505                                     -70.409935,
45506                                     45.810745
45507                                 ],
45508                                 [
45509                                     -70.389807,
45510                                     45.825059
45511                                 ],
45512                                 [
45513                                     -70.312654,
45514                                     45.867641
45515                                 ],
45516                                 [
45517                                     -70.283173,
45518                                     45.890482
45519                                 ],
45520                                 [
45521                                     -70.262528,
45522                                     45.923038
45523                                 ],
45524                                 [
45525                                     -70.255939,
45526                                     45.948876
45527                                 ],
45528                                 [
45529                                     -70.263148,
45530                                     45.956834
45531                                 ],
45532                                 [
45533                                     -70.280434,
45534                                     45.959315
45535                                 ],
45536                                 [
45537                                     -70.303947,
45538                                     45.968616
45539                                 ],
45540                                 [
45541                                     -70.316298,
45542                                     45.982982
45543                                 ],
45544                                 [
45545                                     -70.316892,
45546                                     45.999002
45547                                 ],
45548                                 [
45549                                     -70.306143,
45550                                     46.035331
45551                                 ],
45552                                 [
45553                                     -70.303637,
45554                                     46.038483
45555                                 ],
45556                                 [
45557                                     -70.294309,
45558                                     46.044943
45559                                 ],
45560                                 [
45561                                     -70.29201,
45562                                     46.048663
45563                                 ],
45564                                 [
45565                                     -70.293017,
45566                                     46.054038
45567                                 ],
45568                                 [
45569                                     -70.296092,
45570                                     46.057862
45571                                 ],
45572                                 [
45573                                     -70.300795,
45574                                     46.061737
45575                                 ],
45576                                 [
45577                                     -70.304774,
45578                                     46.065975
45579                                 ],
45580                                 [
45581                                     -70.311362,
45582                                     46.071866
45583                                 ],
45584                                 [
45585                                     -70.312629,
45586                                     46.079566
45587                                 ],
45588                                 [
45589                                     -70.30033,
45590                                     46.089281
45591                                 ],
45592                                 [
45593                                     -70.26444,
45594                                     46.106593
45595                                 ],
45596                                 [
45597                                     -70.24948,
45598                                     46.120597
45599                                 ],
45600                                 [
45601                                     -70.244002,
45602                                     46.141009
45603                                 ],
45604                                 [
45605                                     -70.249247,
45606                                     46.162765
45607                                 ],
45608                                 [
45609                                     -70.263329,
45610                                     46.183229
45611                                 ],
45612                                 [
45613                                     -70.284801,
45614                                     46.191859
45615                                 ],
45616                                 [
45617                                     -70.280899,
45618                                     46.211857
45619                                 ],
45620                                 [
45621                                     -70.253407,
45622                                     46.251493
45623                                 ],
45624                                 [
45625                                     -70.236173,
45626                                     46.288339
45627                                 ],
45628                                 [
45629                                     -70.223693,
45630                                     46.300793
45631                                 ],
45632                                 [
45633                                     -70.201886,
45634                                     46.305495
45635                                 ],
45636                                 [
45637                                     -70.199509,
45638                                     46.315262
45639                                 ],
45640                                 [
45641                                     -70.197028,
45642                                     46.336863
45643                                 ],
45644                                 [
45645                                     -70.188398,
45646                                     46.358412
45647                                 ],
45648                                 [
45649                                     -70.167418,
45650                                     46.368179
45651                                 ],
45652                                 [
45653                                     -70.153052,
45654                                     46.372829
45655                                 ],
45656                                 [
45657                                     -70.074323,
45658                                     46.419545
45659                                 ],
45660                                 [
45661                                     -70.061817,
45662                                     46.445409
45663                                 ],
45664                                 [
45665                                     -70.050086,
45666                                     46.511271
45667                                 ],
45668                                 [
45669                                     -70.032723,
45670                                     46.609766
45671                                 ],
45672                                 [
45673                                     -70.023628,
45674                                     46.661287
45675                                 ],
45676                                 [
45677                                     -70.007763,
45678                                     46.704075
45679                                 ],
45680                                 [
45681                                     -69.989961,
45682                                     46.721697
45683                                 ],
45684                                 [
45685                                     -69.899708,
45686                                     46.811562
45687                                 ],
45688                                 [
45689                                     -69.809403,
45690                                     46.901299
45691                                 ],
45692                                 [
45693                                     -69.719099,
45694                                     46.991086
45695                                 ],
45696                                 [
45697                                     -69.628794,
45698                                     47.080797
45699                                 ],
45700                                 [
45701                                     -69.538464,
45702                                     47.17061
45703                                 ],
45704                                 [
45705                                     -69.448159,
45706                                     47.260346
45707                                 ],
45708                                 [
45709                                     -69.357906,
45710                                     47.350134
45711                                 ],
45712                                 [
45713                                     -69.267628,
45714                                     47.439844
45715                                 ],
45716                                 [
45717                                     -69.25091,
45718                                     47.452919
45719                                 ],
45720                                 [
45721                                     -69.237268,
45722                                     47.45881
45723                                 ],
45724                                 [
45725                                     -69.221972,
45726                                     47.459688
45727                                 ],
45728                                 [
45729                                     -69.069655,
45730                                     47.431886
45731                                 ],
45732                                 [
45733                                     -69.054023,
45734                                     47.418399
45735                                 ],
45736                                 [
45737                                     -69.054333,
45738                                     47.389253
45739                                 ],
45740                                 [
45741                                     -69.066193,
45742                                     47.32967
45743                                 ],
45744                                 [
45745                                     -69.065134,
45746                                     47.296339
45747                                 ],
45748                                 [
45749                                     -69.06356,
45750                                     47.290809
45751                                 ],
45752                                 [
45753                                     -69.057486,
45754                                     47.269467
45755                                 ],
45756                                 [
45757                                     -69.0402,
45758                                     47.249055
45759                                 ],
45760                                 [
45761                                     -68.906229,
45762                                     47.190221
45763                                 ],
45764                                 [
45765                                     -68.889718,
45766                                     47.190609
45767                                 ],
45768                                 [
45769                                     -68.761819,
45770                                     47.23704
45771                                 ],
45772                                 [
45773                                     -68.71779,
45774                                     47.245231
45775                                 ],
45776                                 [
45777                                     -68.668801,
45778                                     47.243422
45779                                 ],
45780                                 [
45781                                     -68.644203,
45782                                     47.245283
45783                                 ],
45784                                 [
45785                                     -68.6256,
45786                                     47.255205
45787                                 ],
45788                                 [
45789                                     -68.607926,
45790                                     47.269829
45791                                 ],
45792                                 [
45793                                     -68.58524,
45794                                     47.28249
45795                                 ],
45796                                 [
45797                                     -68.539662,
45798                                     47.299853
45799                                 ],
45800                                 [
45801                                     -68.518009,
45802                                     47.304762
45803                                 ],
45804                                 [
45805                                     -68.492016,
45806                                     47.307553
45807                                 ],
45808                                 [
45809                                     -68.466746,
45810                                     47.305692
45811                                 ],
45812                                 [
45813                                     -68.435327,
45814                                     47.291275
45815                                 ],
45816                                 [
45817                                     -68.422563,
45818                                     47.293109
45819                                 ],
45820                                 [
45821                                     -68.410212,
45822                                     47.297424
45823                                 ],
45824                                 [
45825                                     -68.385614,
45826                                     47.301713
45827                                 ],
45828                                 [
45829                                     -68.383392,
45830                                     47.307139
45831                                 ],
45832                                 [
45833                                     -68.384839,
45834                                     47.315873
45835                                 ],
45836                                 [
45837                                     -68.382049,
45838                                     47.32781
45839                                 ],
45840                                 [
45841                                     -68.347839,
45842                                     47.358506
45843                                 ],
45844                                 [
45845                                     -68.299728,
45846                                     47.367833
45847                                 ],
45848                                 [
45849                                     -68.24645,
45850                                     47.360573
45851                                 ],
45852                                 [
45853                                     -68.197047,
45854                                     47.341401
45855                                 ],
45856                                 [
45857                                     -68.184335,
45858                                     47.333133
45859                                 ],
45860                                 [
45861                                     -68.156068,
45862                                     47.306674
45863                                 ],
45864                                 [
45865                                     -68.145061,
45866                                     47.301455
45867                                 ],
45868                                 [
45869                                     -68.115398,
45870                                     47.292282
45871                                 ],
45872                                 [
45873                                     -68.101446,
45874                                     47.286185
45875                                 ],
45876                                 [
45877                                     -68.039382,
45878                                     47.245231
45879                                 ],
45880                                 [
45881                                     -67.993184,
45882                                     47.223217
45883                                 ],
45884                                 [
45885                                     -67.962436,
45886                                     47.197689
45887                                 ],
45888                                 [
45889                                     -67.953703,
45890                                     47.18663
45891                                 ],
45892                                 [
45893                                     -67.949982,
45894                                     47.172936
45895                                 ],
45896                                 [
45897                                     -67.943419,
45898                                     47.164538
45899                                 ],
45900                                 [
45901                                     -67.899132,
45902                                     47.138778
45903                                 ],
45904                                 [
45905                                     -67.870607,
45906                                     47.107358
45907                                 ],
45908                                 [
45909                                     -67.854742,
45910                                     47.09785
45911                                 ],
45912                                 [
45913                                     -67.813556,
45914                                     47.081908
45915                                 ],
45916                                 [
45917                                     -67.808699,
45918                                     47.075138
45919                                 ],
45920                                 [
45921                                     -67.805185,
45922                                     47.035631
45923                                 ],
45924                                 [
45925                                     -67.802549,
45926                                     46.901247
45927                                 ],
45928                                 [
45929                                     -67.800017,
45930                                     46.766785
45931                                 ],
45932                                 [
45933                                     -67.797433,
45934                                     46.632297
45935                                 ],
45936                                 [
45937                                     -67.794849,
45938                                     46.497861
45939                                 ],
45940                                 [
45941                                     -67.792317,
45942                                     46.363476
45943                                 ],
45944                                 [
45945                                     -67.789733,
45946                                     46.229014
45947                                 ],
45948                                 [
45949                                     -67.78715,
45950                                     46.094552
45951                                 ],
45952                                 [
45953                                     -67.784566,
45954                                     45.960142
45955                                 ],
45956                                 [
45957                                     -67.782757,
45958                                     45.95053
45959                                 ],
45960                                 [
45961                                     -67.776556,
45962                                     45.942933
45963                                 ],
45964                                 [
45965                                     -67.767461,
45966                                     45.935957
45967                                 ],
45968                                 [
45969                                     -67.759658,
45970                                     45.928567
45971                                 ],
45972                                 [
45973                                     -67.757849,
45974                                     45.919472
45975                                 ],
45976                                 [
45977                                     -67.769425,
45978                                     45.903969
45979                                 ],
45980                                 [
45981                                     -67.787356,
45982                                     45.890017
45983                                 ],
45984                                 [
45985                                     -67.799242,
45986                                     45.875651
45987                                 ],
45988                                 [
45989                                     -67.792627,
45990                                     45.858907
45991                                 ],
45992                                 [
45993                                     -67.776091,
45994                                     45.840821
45995                                 ],
45996                                 [
45997                                     -67.772835,
45998                                     45.828057
45999                                 ],
46000                                 [
46001                                     -67.779863,
46002                                     45.815706
46003                                 ],
46004                                 [
46005                                     -67.794126,
46006                                     45.799169
46007                                 ],
46008                                 [
46009                                     -67.80627,
46010                                     45.781754
46011                                 ],
46012                                 [
46013                                     -67.811127,
46014                                     45.76651
46015                                 ],
46016                                 [
46017                                     -67.810816,
46018                                     45.762414
46019                                 ],
46020                                 [
46021                                     -67.817811,
46022                                     45.754896
46023                                 ],
46024                                 [
46025                                     -67.821785,
46026                                     45.740767
46027                                 ],
46028                                 [
46029                                     -67.827673,
46030                                     45.739001
46031                                 ],
46032                                 [
46033                                     -67.868884,
46034                                     45.744593
46035                                 ],
46036                                 [
46037                                     -67.856815,
46038                                     45.723694
46039                                 ],
46040                                 [
46041                                     -67.835768,
46042                                     45.703971
46043                                 ],
46044                                 [
46045                                     -67.793821,
46046                                     45.676301
46047                                 ],
46048                                 [
46049                                     -67.733034,
46050                                     45.651869
46051                                 ],
46052                                 [
46053                                     -67.723173,
46054                                     45.645393
46055                                 ],
46056                                 [
46057                                     -67.711546,
46058                                     45.642155
46059                                 ],
46060                                 [
46061                                     -67.697564,
46062                                     45.64922
46063                                 ],
46064                                 [
46065                                     -67.66695,
46066                                     45.620077
46067                                 ],
46068                                 [
46069                                     -67.649435,
46070                                     45.611247
46071                                 ],
46072                                 [
46073                                     -67.603073,
46074                                     45.605948
46075                                 ],
46076                                 [
46077                                     -67.561862,
46078                                     45.596234
46079                                 ],
46080                                 [
46081                                     -67.54052,
46082                                     45.593879
46083                                 ],
46084                                 [
46085                                     -67.442056,
46086                                     45.603593
46087                                 ],
46088                                 [
46089                                     -67.440939,
46090                                     45.604586
46091                                 ],
46092                                 [
46093                                     -67.431306,
46094                                     45.597941
46095                                 ],
46096                                 [
46097                                     -67.422107,
46098                                     45.568796
46099                                 ],
46100                                 [
46101                                     -67.42619,
46102                                     45.533449
46103                                 ],
46104                                 [
46105                                     -67.443036,
46106                                     45.522184
46107                                 ],
46108                                 [
46109                                     -67.467531,
46110                                     45.508283
46111                                 ],
46112                                 [
46113                                     -67.493214,
46114                                     45.493142
46115                                 ],
46116                                 [
46117                                     -67.48231,
46118                                     45.455521
46119                                 ],
46120                                 [
46121                                     -67.428825,
46122                                     45.38705
46123                                 ],
46124                                 [
46125                                     -67.434561,
46126                                     45.350308
46127                                 ],
46128                                 [
46129                                     -67.459056,
46130                                     45.318424
46131                                 ],
46132                                 [
46133                                     -67.468668,
46134                                     45.301835
46135                                 ],
46136                                 [
46137                                     -67.475024,
46138                                     45.282353
46139                                 ],
46140                                 [
46141                                     -67.471303,
46142                                     45.266282
46143                                 ],
46144                                 [
46145                                     -67.427585,
46146                                     45.236568
46147                                 ],
46148                                 [
46149                                     -67.390533,
46150                                     45.193108
46151                                 ],
46152                                 [
46153                                     -67.356272,
46154                                     45.165926
46155                                 ],
46156                                 [
46157                                     -67.31922,
46158                                     45.153886
46159                                 ],
46160                                 [
46161                                     -67.284648,
46162                                     45.169699
46163                                 ],
46164                                 [
46165                                     -67.279584,
46166                                     45.179052
46167                                 ],
46168                                 [
46169                                     -67.279222,
46170                                     45.187372
46171                                 ],
46172                                 [
46173                                     -67.277207,
46174                                     45.195072
46175                                 ],
46176                                 [
46177                                     -67.267336,
46178                                     45.202513
46179                                 ],
46180                                 [
46181                                     -67.254986,
46182                                     45.205045
46183                                 ],
46184                                 [
46185                                     -67.242428,
46186                                     45.202565
46187                                 ],
46188                                 [
46189                                     -67.219071,
46190                                     45.192126
46191                                 ],
46192                                 [
46193                                     -67.206166,
46194                                     45.189401
46195                                 ],
46196                                 [
46197                                     -67.176015,
46198                                     45.178656
46199                                 ],
46200                                 [
46201                                     -67.191274,
46202                                     45.180365
46203                                 ],
46204                                 [
46205                                     -67.204376,
46206                                     45.178209
46207                                 ],
46208                                 [
46209                                     -67.204724,
46210                                     45.177791
46211                                 ],
46212                                 [
46213                                     -67.152423,
46214                                     45.148932
46215                                 ],
46216                                 [
46217                                     -67.048033,
46218                                     45.043407
46219                                 ],
46220                                 [
46221                                     -66.962727,
46222                                     45.047088
46223                                 ],
46224                                 [
46225                                     -66.857192,
46226                                     44.968696
46227                                 ],
46228                                 [
46229                                     -66.897268,
46230                                     44.817275
46231                                 ],
46232                                 [
46233                                     -67.2159,
46234                                     44.593511
46235                                 ],
46236                                 [
46237                                     -67.122366,
46238                                     44.423624
46239                                 ],
46240                                 [
46241                                     -67.68447,
46242                                     44.192544
46243                                 ],
46244                                 [
46245                                     -67.459678,
46246                                     40.781645
46247                                 ],
46248                                 [
46249                                     -76.607854,
46250                                     32.495823
46251                                 ],
46252                                 [
46253                                     -76.798479,
46254                                     32.713735
46255                                 ],
46256                                 [
46257                                     -78.561892,
46258                                     29.037718
46259                                 ],
46260                                 [
46261                                     -78.892446,
46262                                     29.039659
46263                                 ],
46264                                 [
46265                                     -79.762295,
46266                                     26.719312
46267                                 ],
46268                                 [
46269                                     -80.026352,
46270                                     24.932961
46271                                 ],
46272                                 [
46273                                     -82.368794,
46274                                     23.994833
46275                                 ],
46276                                 [
46277                                     -83.806281,
46278                                     29.068506
46279                                 ],
46280                                 [
46281                                     -87.460772,
46282                                     29.089961
46283                                 ],
46284                                 [
46285                                     -87.922646,
46286                                     28.666131
46287                                 ],
46288                                 [
46289                                     -90.461001,
46290                                     28.246758
46291                                 ],
46292                                 [
46293                                     -91.787336,
46294                                     29.11536
46295                                 ],
46296                                 [
46297                                     -93.311871,
46298                                     29.12431
46299                                 ],
46300                                 [
46301                                     -96.423449,
46302                                     26.057857
46303                                 ],
46304                                 [
46305                                     -97.129057,
46306                                     25.991017
46307                                 ],
46308                                 [
46309                                     -97.129509,
46310                                     25.966833
46311                                 ],
46312                                 [
46313                                     -97.139358,
46314                                     25.965876
46315                                 ],
46316                                 [
46317                                     -97.202171,
46318                                     25.960893
46319                                 ],
46320                                 [
46321                                     -97.202176,
46322                                     25.960857
46323                                 ],
46324                                 [
46325                                     -97.204941,
46326                                     25.960639
46327                                 ],
46328                                 [
46329                                     -97.253051,
46330                                     25.963481
46331                                 ],
46332                                 [
46333                                     -97.266358,
46334                                     25.960639
46335                                 ],
46336                                 [
46337                                     -97.2692,
46338                                     25.944361
46339                                 ],
46340                                 [
46341                                     -97.287649,
46342                                     25.928651
46343                                 ],
46344                                 [
46345                                     -97.310981,
46346                                     25.922088
46347                                 ],
46348                                 [
46349                                     -97.328447,
46350                                     25.933302
46351                                 ],
46352                                 [
46353                                     -97.351107,
46354                                     25.918419
46355                                 ],
46356                                 [
46357                                     -97.355112,
46358                                     25.912786
46359                                 ],
46360                                 [
46361                                     -97.35227,
46362                                     25.894493
46363                                 ],
46364                                 [
46365                                     -97.345165,
46366                                     25.871704
46367                                 ],
46368                                 [
46369                                     -97.345733,
46370                                     25.852222
46371                                 ],
46372                                 [
46373                                     -97.36599,
46374                                     25.843902
46375                                 ],
46376                                 [
46377                                     -97.376015,
46378                                     25.846744
46379                                 ],
46380                                 [
46381                                     -97.380124,
46382                                     25.853203
46383                                 ],
46384                                 [
46385                                     -97.383121,
46386                                     25.860541
46387                                 ],
46388                                 [
46389                                     -97.389891,
46390                                     25.865657
46391                                 ],
46392                                 [
46393                                     -97.397823,
46394                                     25.865812
46395                                 ],
46396                                 [
46397                                     -97.399476,
46398                                     25.861162
46399                                 ],
46400                                 [
46401                                     -97.39989,
46402                                     25.855115
46403                                 ],
46404                                 [
46405                                     -97.404179,
46406                                     25.851395
46407                                 ],
46408                                 [
46409                                     -97.425418,
46410                                     25.854857
46411                                 ],
46412                                 [
46413                                     -97.435727,
46414                                     25.869275
46415                                 ],
46416                                 [
46417                                     -97.441309,
46418                                     25.884933
46419                                 ],
46420                                 [
46421                                     -97.448259,
46422                                     25.892322
46423                                 ],
46424                                 [
46425                                     -97.469421,
46426                                     25.892943
46427                                 ],
46428                                 [
46429                                     -97.486319,
46430                                     25.895733
46431                                 ],
46432                                 [
46433                                     -97.502209,
46434                                     25.901883
46435                                 ],
46436                                 [
46437                                     -97.52027,
46438                                     25.912786
46439                                 ],
46440                                 [
46441                                     -97.565177,
46442                                     25.954748
46443                                 ],
46444                                 [
46445                                     -97.594322,
46446                                     25.966375
46447                                 ],
46448                                 [
46449                                     -97.604787,
46450                                     25.979966
46451                                 ],
46452                                 [
46453                                     -97.613055,
46454                                     25.995985
46455                                 ],
46456                                 [
46457                                     -97.622641,
46458                                     26.00906
46459                                 ],
46460                                 [
46461                                     -97.641451,
46462                                     26.022495
46463                                 ],
46464                                 [
46465                                     -97.659874,
46466                                     26.03066
46467                                 ],
46468                                 [
46469                                     -97.679614,
46470                                     26.034639
46471                                 ],
46472                                 [
46473                                     -97.766948,
46474                                     26.039652
46475                                 ],
46476                                 [
46477                                     -97.780306,
46478                                     26.043218
46479                                 ],
46480                                 [
46481                                     -97.782321,
46482                                     26.058617
46483                                 ],
46484                                 [
46485                                     -97.80201,
46486                                     26.063733
46487                                 ],
46488                                 [
46489                                     -97.878181,
46490                                     26.063733
46491                                 ],
46492                                 [
46493                                     -97.941666,
46494                                     26.056809
46495                                 ],
46496                                 [
46497                                     -97.999233,
46498                                     26.064302
46499                                 ],
46500                                 [
46501                                     -98.013057,
46502                                     26.063682
46503                                 ],
46504                                 [
46505                                     -98.044166,
46506                                     26.048799
46507                                 ],
46508                                 [
46509                                     -98.065457,
46510                                     26.042184
46511                                 ],
46512                                 [
46513                                     -98.075146,
46514                                     26.046628
46515                                 ],
46516                                 [
46517                                     -98.083311,
46518                                     26.070916
46519                                 ],
46520                                 [
46521                                     -98.103103,
46522                                     26.074947
46523                                 ],
46524                                 [
46525                                     -98.150232,
46526                                     26.063682
46527                                 ],
46528                                 [
46529                                     -98.185062,
46530                                     26.065232
46531                                 ],
46532                                 [
46533                                     -98.222656,
46534                                     26.075412
46535                                 ],
46536                                 [
46537                                     -98.300429,
46538                                     26.111431
46539                                 ],
46540                                 [
46541                                     -98.309809,
46542                                     26.121094
46543                                 ],
46544                                 [
46545                                     -98.333037,
46546                                     26.15303
46547                                 ],
46548                                 [
46549                                     -98.339264,
46550                                     26.159851
46551                                 ],
46552                                 [
46553                                     -98.365774,
46554                                     26.160161
46555                                 ],
46556                                 [
46557                                     -98.377272,
46558                                     26.163572
46559                                 ],
46560                                 [
46561                                     -98.377272,
46562                                     26.173649
46563                                 ],
46564                                 [
46565                                     -98.36934,
46566                                     26.19401
46567                                 ],
46568                                 [
46569                                     -98.397193,
46570                                     26.201141
46571                                 ],
46572                                 [
46573                                     -98.428845,
46574                                     26.217729
46575                                 ],
46576                                 [
46577                                     -98.456544,
46578                                     26.225946
46579                                 ],
46580                                 [
46581                                     -98.472383,
46582                                     26.207652
46583                                 ],
46584                                 [
46585                                     -98.49295,
46586                                     26.230596
46587                                 ],
46588                                 [
46589                                     -98.521527,
46590                                     26.240932
46591                                 ],
46592                                 [
46593                                     -98.552791,
46594                                     26.248321
46595                                 ],
46596                                 [
46597                                     -98.581627,
46598                                     26.262274
46599                                 ],
46600                                 [
46601                                     -98.640564,
46602                                     26.24181
46603                                 ],
46604                                 [
46605                                     -98.653663,
46606                                     26.244291
46607                                 ],
46608                                 [
46609                                     -98.664696,
46610                                     26.250647
46611                                 ],
46612                                 [
46613                                     -98.685289,
46614                                     26.268475
46615                                 ],
46616                                 [
46617                                     -98.693325,
46618                                     26.270542
46619                                 ],
46620                                 [
46621                                     -98.702239,
46622                                     26.271628
46623                                 ],
46624                                 [
46625                                     -98.704255,
46626                                     26.27664
46627                                 ],
46628                                 [
46629                                     -98.691465,
46630                                     26.290231
46631                                 ],
46632                                 [
46633                                     -98.701413,
46634                                     26.299119
46635                                 ],
46636                                 [
46637                                     -98.713169,
46638                                     26.303357
46639                                 ],
46640                                 [
46641                                     -98.726217,
46642                                     26.30439
46643                                 ],
46644                                 [
46645                                     -98.739911,
46646                                     26.303253
46647                                 ],
46648                                 [
46649                                     -98.735932,
46650                                     26.320048
46651                                 ],
46652                                 [
46653                                     -98.746397,
46654                                     26.332141
46655                                 ],
46656                                 [
46657                                     -98.780839,
46658                                     26.351674
46659                                 ],
46660                                 [
46661                                     -98.795851,
46662                                     26.368314
46663                                 ],
46664                                 [
46665                                     -98.801329,
46666                                     26.372138
46667                                 ],
46668                                 [
46669                                     -98.810295,
46670                                     26.372448
46671                                 ],
46672                                 [
46673                                     -98.817323,
46674                                     26.368521
46675                                 ],
46676                                 [
46677                                     -98.825023,
46678                                     26.366454
46679                                 ],
46680                                 [
46681                                     -98.836081,
46682                                     26.372138
46683                                 ],
46684                                 [
46685                                     -98.842334,
46686                                     26.365834
46687                                 ],
46688                                 [
46689                                     -98.850835,
46690                                     26.364077
46691                                 ],
46692                                 [
46693                                     -98.860524,
46694                                     26.366299
46695                                 ],
46696                                 [
46697                                     -98.870214,
46698                                     26.372138
46699                                 ],
46700                                 [
46701                                     -98.893029,
46702                                     26.367849
46703                                 ],
46704                                 [
46705                                     -98.9299,
46706                                     26.39224
46707                                 ],
46708                                 [
46709                                     -98.945377,
46710                                     26.378288
46711                                 ],
46712                                 [
46713                                     -98.954136,
46714                                     26.393946
46715                                 ],
46716                                 [
46717                                     -98.962844,
46718                                     26.399527
46719                                 ],
46720                                 [
46721                                     -98.986951,
46722                                     26.400095
46723                                 ],
46724                                 [
46725                                     -99.004056,
46726                                     26.393842
46727                                 ],
46728                                 [
46729                                     -99.010515,
46730                                     26.392602
46731                                 ],
46732                                 [
46733                                     -99.016432,
46734                                     26.394462
46735                                 ],
46736                                 [
46737                                     -99.022995,
46738                                     26.403351
46739                                 ],
46740                                 [
46741                                     -99.027878,
46742                                     26.406245
46743                                 ],
46744                                 [
46745                                     -99.047645,
46746                                     26.406968
46747                                 ],
46748                                 [
46749                                     -99.066351,
46750                                     26.404746
46751                                 ],
46752                                 [
46753                                     -99.085498,
46754                                     26.40764
46755                                 ],
46756                                 [
46757                                     -99.106427,
46758                                     26.423039
46759                                 ],
46760                                 [
46761                                     -99.108907,
46762                                     26.434253
46763                                 ],
46764                                 [
46765                                     -99.102525,
46766                                     26.446966
46767                                 ],
46768                                 [
46769                                     -99.09374,
46770                                     26.459781
46771                                 ],
46772                                 [
46773                                     -99.089373,
46774                                     26.47115
46775                                 ],
46776                                 [
46777                                     -99.091492,
46778                                     26.484018
46779                                 ],
46780                                 [
46781                                     -99.10299,
46782                                     26.512078
46783                                 ],
46784                                 [
46785                                     -99.115108,
46786                                     26.525617
46787                                 ],
46788                                 [
46789                                     -99.140946,
46790                                     26.531405
46791                                 ],
46792                                 [
46793                                     -99.164873,
46794                                     26.540448
46795                                 ],
46796                                 [
46797                                     -99.17128,
46798                                     26.563961
46799                                 ],
46800                                 [
46801                                     -99.171548,
46802                                     26.56583
46803                                 ],
46804                                 [
46805                                     -99.213953,
46806                                     26.568537
46807                                 ],
46808                                 [
46809                                     -99.242801,
46810                                     26.579723
46811                                 ],
46812                                 [
46813                                     -99.254575,
46814                                     26.6018
46815                                 ],
46816                                 [
46817                                     -99.258844,
46818                                     26.614752
46819                                 ],
46820                                 [
46821                                     -99.277683,
46822                                     26.638007
46823                                 ],
46824                                 [
46825                                     -99.281951,
46826                                     26.649781
46827                                 ],
46828                                 [
46829                                     -99.277389,
46830                                     26.657729
46831                                 ],
46832                                 [
46833                                     -99.26635,
46834                                     26.653314
46835                                 ],
46836                                 [
46837                                     -99.252662,
46838                                     26.644483
46839                                 ],
46840                                 [
46841                                     -99.240299,
46842                                     26.639184
46843                                 ],
46844                                 [
46845                                     -99.244861,
46846                                     26.652431
46847                                 ],
46848                                 [
46849                                     -99.240299,
46850                                     26.697763
46851                                 ],
46852                                 [
46853                                     -99.242507,
46854                                     26.713658
46855                                 ],
46856                                 [
46857                                     -99.252368,
46858                                     26.743683
46859                                 ],
46860                                 [
46861                                     -99.254575,
46862                                     26.75899
46863                                 ],
46864                                 [
46865                                     -99.252368,
46866                                     26.799024
46867                                 ],
46868                                 [
46869                                     -99.254575,
46870                                     26.810504
46871                                 ],
46872                                 [
46873                                     -99.257666,
46874                                     26.813153
46875                                 ],
46876                                 [
46877                                     -99.262229,
46878                                     26.814036
46879                                 ],
46880                                 [
46881                                     -99.266497,
46882                                     26.817863
46883                                 ],
46884                                 [
46885                                     -99.268263,
46886                                     26.827872
46887                                 ],
46888                                 [
46889                                     -99.271649,
46890                                     26.832876
46891                                 ],
46892                                 [
46893                                     -99.289458,
46894                                     26.84465
46895                                 ],
46896                                 [
46897                                     -99.308444,
46898                                     26.830521
46899                                 ],
46900                                 [
46901                                     -99.316539,
46902                                     26.822279
46903                                 ],
46904                                 [
46905                                     -99.323457,
46906                                     26.810504
46907                                 ],
46908                                 [
46909                                     -99.328166,
46910                                     26.797258
46911                                 ],
46912                                 [
46913                                     -99.329197,
46914                                     26.789016
46915                                 ],
46916                                 [
46917                                     -99.331699,
46918                                     26.78254
46919                                 ],
46920                                 [
46921                                     -99.340383,
46922                                     26.77312
46923                                 ],
46924                                 [
46925                                     -99.366728,
46926                                     26.761345
46927                                 ],
46928                                 [
46929                                     -99.380269,
46930                                     26.777241
46931                                 ],
46932                                 [
46933                                     -99.391896,
46934                                     26.796963
46935                                 ],
46936                                 [
46937                                     -99.412207,
46938                                     26.796963
46939                                 ],
46940                                 [
46941                                     -99.410883,
46942                                     26.808149
46943                                 ],
46944                                 [
46945                                     -99.405437,
46946                                     26.818452
46947                                 ],
46948                                 [
46949                                     -99.396606,
46950                                     26.824928
46951                                 ],
46952                                 [
46953                                     -99.384979,
46954                                     26.824928
46955                                 ],
46956                                 [
46957                                     -99.377178,
46958                                     26.816686
46959                                 ],
46960                                 [
46961                                     -99.374823,
46962                                     26.804028
46963                                 ],
46964                                 [
46965                                     -99.374234,
46966                                     26.791076
46967                                 ],
46968                                 [
46969                                     -99.371291,
46970                                     26.783128
46971                                 ],
46972                                 [
46973                                     -99.360694,
46974                                     26.780479
46975                                 ],
46976                                 [
46977                                     -99.359369,
46978                                     26.790487
46979                                 ],
46980                                 [
46981                                     -99.36452,
46982                                     26.810504
46983                                 ],
46984                                 [
46985                                     -99.357897,
46986                                     26.822279
46987                                 ],
46988                                 [
46989                                     -99.351274,
46990                                     26.83111
46991                                 ],
46992                                 [
46993                                     -99.346123,
46994                                     26.840824
46995                                 ],
46996                                 [
46997                                     -99.344062,
46998                                     26.855247
46999                                 ],
47000                                 [
47001                                     -99.348772,
47002                                     26.899696
47003                                 ],
47004                                 [
47005                                     -99.355101,
47006                                     26.920302
47007                                 ],
47008                                 [
47009                                     -99.36452,
47010                                     26.934726
47011                                 ],
47012                                 [
47013                                     -99.403377,
47014                                     26.952093
47015                                 ],
47016                                 [
47017                                     -99.413974,
47018                                     26.964162
47019                                 ],
47020                                 [
47021                                     -99.401758,
47022                                     26.985651
47023                                 ],
47024                                 [
47025                                     -99.399991,
47026                                     26.999192
47027                                 ],
47028                                 [
47029                                     -99.418831,
47030                                     27.007728
47031                                 ],
47032                                 [
47033                                     -99.441938,
47034                                     27.013615
47035                                 ],
47036                                 [
47037                                     -99.453271,
47038                                     27.019797
47039                                 ],
47040                                 [
47041                                     -99.455332,
47042                                     27.025979
47043                                 ],
47044                                 [
47045                                     -99.464751,
47046                                     27.039225
47047                                 ],
47048                                 [
47049                                     -99.466959,
47050                                     27.047467
47051                                 ],
47052                                 [
47053                                     -99.462544,
47054                                     27.057181
47055                                 ],
47056                                 [
47057                                     -99.461635,
47058                                     27.056839
47059                                 ],
47060                                 [
47061                                     -99.461728,
47062                                     27.056954
47063                                 ],
47064                                 [
47065                                     -99.442039,
47066                                     27.089614
47067                                 ],
47068                                 [
47069                                     -99.439404,
47070                                     27.098347
47071                                 ],
47072                                 [
47073                                     -99.441419,
47074                                     27.107494
47075                                 ],
47076                                 [
47077                                     -99.445734,
47078                                     27.114728
47079                                 ],
47080                                 [
47081                                     -99.450178,
47082                                     27.120465
47083                                 ],
47084                                 [
47085                                     -99.452452,
47086                                     27.125012
47087                                 ],
47088                                 [
47089                                     -99.450333,
47090                                     27.145166
47091                                 ],
47092                                 [
47093                                     -99.435786,
47094                                     27.188419
47095                                 ],
47096                                 [
47097                                     -99.431988,
47098                                     27.207591
47099                                 ],
47100                                 [
47101                                     -99.434029,
47102                                     27.22697
47103                                 ],
47104                                 [
47105                                     -99.440902,
47106                                     27.244798
47107                                 ],
47108                                 [
47109                                     -99.451832,
47110                                     27.26118
47111                                 ],
47112                                 [
47113                                     -99.46612,
47114                                     27.276527
47115                                 ],
47116                                 [
47117                                     -99.468963,
47118                                     27.278233
47119                                 ],
47120                                 [
47121                                     -99.480409,
47122                                     27.283297
47123                                 ],
47124                                 [
47125                                     -99.482941,
47126                                     27.286708
47127                                 ],
47128                                 [
47129                                     -99.484879,
47130                                     27.294821
47131                                 ],
47132                                 [
47133                                     -99.486584,
47134                                     27.297611
47135                                 ],
47136                                 [
47137                                     -99.493199,
47138                                     27.30128
47139                                 ],
47140                                 [
47141                                     -99.521362,
47142                                     27.311254
47143                                 ],
47144                                 [
47145                                     -99.5148,
47146                                     27.321796
47147                                 ],
47148                                 [
47149                                     -99.497591,
47150                                     27.338798
47151                                 ],
47152                                 [
47153                                     -99.494026,
47154                                     27.348203
47155                                 ],
47156                                 [
47157                                     -99.492889,
47158                                     27.358848
47159                                 ],
47160                                 [
47161                                     -99.487721,
47162                                     27.37187
47163                                 ],
47164                                 [
47165                                     -99.484621,
47166                                     27.391766
47167                                 ],
47168                                 [
47169                                     -99.475706,
47170                                     27.414762
47171                                 ],
47172                                 [
47173                                     -99.472916,
47174                                     27.426647
47175                                 ],
47176                                 [
47177                                     -99.473639,
47178                                     27.463803
47179                                 ],
47180                                 [
47181                                     -99.472916,
47182                                     27.468299
47183                                 ],
47184                                 [
47185                                     -99.47643,
47186                                     27.48251
47187                                 ],
47188                                 [
47189                                     -99.480409,
47190                                     27.490778
47191                                 ],
47192                                 [
47193                                     -99.48829,
47194                                     27.494654
47195                                 ],
47196                                 [
47197                                     -99.503689,
47198                                     27.495584
47199                                 ],
47200                                 [
47201                                     -99.509503,
47202                                     27.500028
47203                                 ],
47204                                 [
47205                                     -99.510071,
47206                                     27.510518
47207                                 ],
47208                                 [
47209                                     -99.507074,
47210                                     27.533437
47211                                 ],
47212                                 [
47213                                     -99.507203,
47214                                     27.57377
47215                                 ],
47216                                 [
47217                                     -99.515006,
47218                                     27.588601
47219                                 ],
47220                                 [
47221                                     -99.535031,
47222                                     27.604828
47223                                 ],
47224                                 [
47225                                     -99.55503,
47226                                     27.613509
47227                                 ],
47228                                 [
47229                                     -99.572264,
47230                                     27.61847
47231                                 ],
47232                                 [
47233                                     -99.578232,
47234                                     27.622811
47235                                 ],
47236                                 [
47237                                     -99.590247,
47238                                     27.642061
47239                                 ],
47240                                 [
47241                                     -99.600169,
47242                                     27.646427
47243                                 ],
47244                                 [
47245                                     -99.612442,
47246                                     27.643637
47247                                 ],
47248                                 [
47249                                     -99.633526,
47250                                     27.633069
47251                                 ],
47252                                 [
47253                                     -99.644869,
47254                                     27.632733
47255                                 ],
47256                                 [
47257                                     -99.648642,
47258                                     27.636919
47259                                 ],
47260                                 [
47261                                     -99.658693,
47262                                     27.654024
47263                                 ],
47264                                 [
47265                                     -99.664739,
47266                                     27.659398
47267                                 ],
47268                                 [
47269                                     -99.70037,
47270                                     27.659191
47271                                 ],
47272                                 [
47273                                     -99.705692,
47274                                     27.66317
47275                                 ],
47276                                 [
47277                                     -99.710674,
47278                                     27.670116
47279                                 ],
47280                                 [
47281                                     -99.723056,
47282                                     27.687381
47283                                 ],
47284                                 [
47285                                     -99.730652,
47286                                     27.691825
47287                                 ],
47288                                 [
47289                                     -99.734037,
47290                                     27.702031
47291                                 ],
47292                                 [
47293                                     -99.736311,
47294                                     27.713607
47295                                 ],
47296                                 [
47297                                     -99.740445,
47298                                     27.722159
47299                                 ],
47300                                 [
47301                                     -99.747344,
47302                                     27.726009
47303                                 ],
47304                                 [
47305                                     -99.765198,
47306                                     27.731177
47307                                 ],
47308                                 [
47309                                     -99.774577,
47310                                     27.735828
47311                                 ],
47312                                 [
47313                                     -99.78685,
47314                                     27.748488
47315                                 ],
47316                                 [
47317                                     -99.795428,
47318                                     27.761924
47319                                 ],
47320                                 [
47321                                     -99.806963,
47322                                     27.771423
47323                                 ],
47324                                 [
47325                                     -99.808167,
47326                                     27.772414
47327                                 ],
47328                                 [
47329                                     -99.83292,
47330                                     27.776755
47331                                 ],
47332                                 [
47333                                     -99.832971,
47334                                     27.782181
47335                                 ],
47336                                 [
47337                                     -99.844779,
47338                                     27.793576
47339                                 ],
47340                                 [
47341                                     -99.858241,
47342                                     27.803524
47343                                 ],
47344                                 [
47345                                     -99.863357,
47346                                     27.804661
47347                                 ],
47348                                 [
47349                                     -99.864727,
47350                                     27.814324
47351                                 ],
47352                                 [
47353                                     -99.861858,
47354                                     27.83608
47355                                 ],
47356                                 [
47357                                     -99.863357,
47358                                     27.845666
47359                                 ],
47360                                 [
47361                                     -99.870928,
47362                                     27.854477
47363                                 ],
47364                                 [
47365                                     -99.880204,
47366                                     27.859231
47367                                 ],
47368                                 [
47369                                     -99.888007,
47370                                     27.864812
47371                                 ],
47372                                 [
47373                                     -99.891288,
47374                                     27.876026
47375                                 ],
47376                                 [
47377                                     -99.882684,
47378                                     27.89158
47379                                 ],
47380                                 [
47381                                     -99.878808,
47382                                     27.901838
47383                                 ],
47384                                 [
47385                                     -99.88134,
47386                                     27.906463
47387                                 ],
47388                                 [
47389                                     -99.896766,
47390                                     27.912923
47391                                 ],
47392                                 [
47393                                     -99.914336,
47394                                     27.928245
47395                                 ],
47396                                 [
47397                                     -99.929916,
47398                                     27.946331
47399                                 ],
47400                                 [
47401                                     -99.939683,
47402                                     27.961085
47403                                 ],
47404                                 [
47405                                     -99.928289,
47406                                     27.975761
47407                                 ],
47408                                 [
47409                                     -99.940717,
47410                                     27.983254
47411                                 ],
47412                                 [
47413                                     -99.961852,
47414                                     27.987492
47415                                 ],
47416                                 [
47417                                     -99.976606,
47418                                     27.992453
47419                                 ],
47420                                 [
47421                                     -99.991127,
47422                                     28.007801
47423                                 ],
47424                                 [
47425                                     -100.000584,
47426                                     28.02041
47427                                 ],
47428                                 [
47429                                     -100.007457,
47430                                     28.033561
47431                                 ],
47432                                 [
47433                                     -100.014123,
47434                                     28.050459
47435                                 ],
47436                                 [
47437                                     -100.013503,
47438                                     28.056971
47439                                 ],
47440                                 [
47441                                     -100.010506,
47442                                     28.063611
47443                                 ],
47444                                 [
47445                                     -100.010196,
47446                                     28.068882
47447                                 ],
47448                                 [
47449                                     -100.017585,
47450                                     28.070949
47451                                 ],
47452                                 [
47453                                     -100.031538,
47454                                     28.081801
47455                                 ],
47456                                 [
47457                                     -100.045077,
47458                                     28.095289
47459                                 ],
47460                                 [
47461                                     -100.048023,
47462                                     28.102523
47463                                 ],
47464                                 [
47465                                     -100.048901,
47466                                     28.115959
47467                                 ],
47468                                 [
47469                                     -100.056498,
47470                                     28.137922
47471                                 ],
47472                                 [
47473                                     -100.074895,
47474                                     28.154407
47475                                 ],
47476                                 [
47477                                     -100.172873,
47478                                     28.198538
47479                                 ],
47480                                 [
47481                                     -100.189203,
47482                                     28.201329
47483                                 ],
47484                                 [
47485                                     -100.197626,
47486                                     28.207168
47487                                 ],
47488                                 [
47489                                     -100.201192,
47490                                     28.220346
47491                                 ],
47492                                 [
47493                                     -100.202949,
47494                                     28.234428
47495                                 ],
47496                                 [
47497                                     -100.205946,
47498                                     28.242877
47499                                 ],
47500                                 [
47501                                     -100.212819,
47502                                     28.245073
47503                                 ],
47504                                 [
47505                                     -100.240724,
47506                                     28.249698
47507                                 ],
47508                                 [
47509                                     -100.257932,
47510                                     28.260524
47511                                 ],
47512                                 [
47513                                     -100.275089,
47514                                     28.277242
47515                                 ],
47516                                 [
47517                                     -100.284339,
47518                                     28.296517
47519                                 ],
47520                                 [
47521                                     -100.277931,
47522                                     28.314888
47523                                 ],
47524                                 [
47525                                     -100.278551,
47526                                     28.331088
47527                                 ],
47528                                 [
47529                                     -100.293899,
47530                                     28.353413
47531                                 ],
47532                                 [
47533                                     -100.322631,
47534                                     28.386899
47535                                 ],
47536                                 [
47537                                     -100.331675,
47538                                     28.422013
47539                                 ],
47540                                 [
47541                                     -100.336326,
47542                                     28.458574
47543                                 ],
47544                                 [
47545                                     -100.340201,
47546                                     28.464259
47547                                 ],
47548                                 [
47549                                     -100.348315,
47550                                     28.470253
47551                                 ],
47552                                 [
47553                                     -100.355549,
47554                                     28.478185
47555                                 ],
47556                                 [
47557                                     -100.35679,
47558                                     28.489322
47559                                 ],
47560                                 [
47561                                     -100.351622,
47562                                     28.496711
47563                                 ],
47564                                 [
47565                                     -100.322631,
47566                                     28.510406
47567                                 ],
47568                                 [
47569                                     -100.364024,
47570                                     28.524797
47571                                 ],
47572                                 [
47573                                     -100.38423,
47574                                     28.537174
47575                                 ],
47576                                 [
47577                                     -100.397769,
47578                                     28.557586
47579                                 ],
47580                                 [
47581                                     -100.398751,
47582                                     28.568645
47583                                 ],
47584                                 [
47585                                     -100.397097,
47586                                     28.592726
47587                                 ],
47588                                 [
47589                                     -100.401438,
47590                                     28.60226
47591                                 ],
47592                                 [
47593                                     -100.411463,
47594                                     28.609314
47595                                 ],
47596                                 [
47597                                     -100.434821,
47598                                     28.619133
47599                                 ],
47600                                 [
47601                                     -100.44619,
47602                                     28.626497
47603                                 ],
47604                                 [
47605                                     -100.444898,
47606                                     28.643782
47607                                 ],
47608                                 [
47609                                     -100.481381,
47610                                     28.686054
47611                                 ],
47612                                 [
47613                                     -100.493939,
47614                                     28.708378
47615                                 ],
47616                                 [
47617                                     -100.519054,
47618                                     28.804961
47619                                 ],
47620                                 [
47621                                     -100.524996,
47622                                     28.814831
47623                                 ],
47624                                 [
47625                                     -100.529285,
47626                                     28.819947
47627                                 ],
47628                                 [
47629                                     -100.534453,
47630                                     28.830231
47631                                 ],
47632                                 [
47633                                     -100.538639,
47634                                     28.835631
47635                                 ],
47636                                 [
47637                                     -100.54515,
47638                                     28.83899
47639                                 ],
47640                                 [
47641                                     -100.559671,
47642                                     28.839378
47643                                 ],
47644                                 [
47645                                     -100.566234,
47646                                     28.842504
47647                                 ],
47648                                 [
47649                                     -100.569696,
47650                                     28.84961
47651                                 ],
47652                                 [
47653                                     -100.56334,
47654                                     28.86209
47655                                 ],
47656                                 [
47657                                     -100.566234,
47658                                     28.869789
47659                                 ],
47660                                 [
47661                                     -100.571763,
47662                                     28.8732
47663                                 ],
47664                                 [
47665                                     -100.586543,
47666                                     28.879789
47667                                 ],
47668                                 [
47669                                     -100.58954,
47670                                     28.883458
47671                                 ],
47672                                 [
47673                                     -100.594966,
47674                                     28.899322
47675                                 ],
47676                                 [
47677                                     -100.606955,
47678                                     28.910123
47679                                 ],
47680                                 [
47681                                     -100.618841,
47682                                     28.917926
47683                                 ],
47684                                 [
47685                                     -100.624318,
47686                                     28.924721
47687                                 ],
47688                                 [
47689                                     -100.624783,
47690                                     28.93777
47691                                 ],
47692                                 [
47693                                     -100.626696,
47694                                     28.948338
47695                                 ],
47696                                 [
47697                                     -100.630778,
47698                                     28.956683
47699                                 ],
47700                                 [
47701                                     -100.637909,
47702                                     28.962884
47703                                 ],
47704                                 [
47705                                     -100.628918,
47706                                     28.98433
47707                                 ],
47708                                 [
47709                                     -100.632793,
47710                                     29.005156
47711                                 ],
47712                                 [
47713                                     -100.652224,
47714                                     29.044817
47715                                 ],
47716                                 [
47717                                     -100.660854,
47718                                     29.102669
47719                                 ],
47720                                 [
47721                                     -100.668967,
47722                                     29.116208
47723                                 ],
47724                                 [
47725                                     -100.678165,
47726                                     29.119412
47727                                 ],
47728                                 [
47729                                     -100.690826,
47730                                     29.121014
47731                                 ],
47732                                 [
47733                                     -100.70204,
47734                                     29.12365
47735                                 ],
47736                                 [
47737                                     -100.706846,
47738                                     29.130187
47739                                 ],
47740                                 [
47741                                     -100.70974,
47742                                     29.135561
47743                                 ],
47744                                 [
47745                                     -100.762501,
47746                                     29.173776
47747                                 ],
47748                                 [
47749                                     -100.770098,
47750                                     29.187289
47751                                 ],
47752                                 [
47753                                     -100.762088,
47754                                     29.208658
47755                                 ],
47756                                 [
47757                                     -100.783172,
47758                                     29.243074
47759                                 ],
47760                                 [
47761                                     -100.796143,
47762                                     29.257673
47763                                 ],
47764                                 [
47765                                     -100.81609,
47766                                     29.270773
47767                                 ],
47768                                 [
47769                                     -100.86389,
47770                                     29.290616
47771                                 ],
47772                                 [
47773                                     -100.871797,
47774                                     29.296456
47775                                 ],
47776                                 [
47777                                     -100.891227,
47778                                     29.318547
47779                                 ],
47780                                 [
47781                                     -100.91474,
47782                                     29.337048
47783                                 ],
47784                                 [
47785                                     -100.987397,
47786                                     29.366322
47787                                 ],
47788                                 [
47789                                     -100.998301,
47790                                     29.372472
47791                                 ],
47792                                 [
47793                                     -101.008068,
47794                                     29.380585
47795                                 ],
47796                                 [
47797                                     -101.016232,
47798                                     29.390068
47799                                 ],
47800                                 [
47801                                     -101.022175,
47802                                     29.40048
47803                                 ],
47804                                 [
47805                                     -101.025948,
47806                                     29.414356
47807                                 ],
47808                                 [
47809                                     -101.029617,
47810                                     29.442984
47811                                 ],
47812                                 [
47813                                     -101.037782,
47814                                     29.460063
47815                                 ],
47816                                 [
47817                                     -101.039026,
47818                                     29.460452
47819                                 ],
47820                                 [
47821                                     -101.040188,
47822                                     29.457132
47823                                 ],
47824                                 [
47825                                     -101.045487,
47826                                     29.451245
47827                                 ],
47828                                 [
47829                                     -101.060205,
47830                                     29.449184
47831                                 ],
47832                                 [
47833                                     -101.067711,
47834                                     29.45095
47835                                 ],
47836                                 [
47837                                     -101.076101,
47838                                     29.453894
47839                                 ],
47840                                 [
47841                                     -101.085962,
47842                                     29.454483
47843                                 ],
47844                                 [
47845                                     -101.098031,
47846                                     29.449184
47847                                 ],
47848                                 [
47849                                     -101.113043,
47850                                     29.466552
47851                                 ],
47852                                 [
47853                                     -101.142774,
47854                                     29.475383
47855                                 ],
47856                                 [
47857                                     -101.174124,
47858                                     29.475971
47859                                 ],
47860                                 [
47861                                     -101.193699,
47862                                     29.469495
47863                                 ],
47864                                 [
47865                                     -101.198703,
47866                                     29.473911
47867                                 ],
47868                                 [
47869                                     -101.198851,
47870                                     29.476854
47871                                 ],
47872                                 [
47873                                     -101.184132,
47874                                     29.497754
47875                                 ],
47876                                 [
47877                                     -101.184868,
47878                                     29.512767
47879                                 ],
47880                                 [
47881                                     -101.195171,
47882                                     29.521892
47883                                 ],
47884                                 [
47885                                     -101.214157,
47886                                     29.518065
47887                                 ],
47888                                 [
47889                                     -101.245213,
47890                                     29.493044
47891                                 ],
47892                                 [
47893                                     -101.265818,
47894                                     29.487157
47895                                 ],
47896                                 [
47897                                     -101.290545,
47898                                     29.49746
47899                                 ],
47900                                 [
47901                                     -101.297315,
47902                                     29.503936
47903                                 ],
47904                                 [
47905                                     -101.300995,
47906                                     29.512767
47907                                 ],
47908                                 [
47909                                     -101.294372,
47910                                     29.520715
47911                                 ],
47912                                 [
47913                                     -101.273177,
47914                                     29.524247
47915                                 ],
47916                                 [
47917                                     -101.259195,
47918                                     29.533372
47919                                 ],
47920                                 [
47921                                     -101.243888,
47922                                     29.554861
47923                                 ],
47924                                 [
47925                                     -101.231966,
47926                                     29.580176
47927                                 ],
47928                                 [
47929                                     -101.227845,
47930                                     29.599899
47931                                 ],
47932                                 [
47933                                     -101.239178,
47934                                     29.616677
47935                                 ],
47936                                 [
47937                                     -101.26052,
47938                                     29.613439
47939                                 ],
47940                                 [
47941                                     -101.281272,
47942                                     29.597249
47943                                 ],
47944                                 [
47945                                     -101.290545,
47946                                     29.575761
47947                                 ],
47948                                 [
47949                                     -101.295255,
47950                                     29.570168
47951                                 ],
47952                                 [
47953                                     -101.306146,
47954                                     29.574583
47955                                 ],
47956                                 [
47957                                     -101.317626,
47958                                     29.584003
47959                                 ],
47960                                 [
47961                                     -101.323955,
47962                                     29.592539
47963                                 ],
47964                                 [
47965                                     -101.323661,
47966                                     29.603137
47967                                 ],
47968                                 [
47969                                     -101.318804,
47970                                     29.616383
47971                                 ],
47972                                 [
47973                                     -101.311445,
47974                                     29.628158
47975                                 ],
47976                                 [
47977                                     -101.303497,
47978                                     29.634045
47979                                 ],
47980                                 [
47981                                     -101.303669,
47982                                     29.631411
47983                                 ],
47984                                 [
47985                                     -101.302727,
47986                                     29.633851
47987                                 ],
47988                                 [
47989                                     -101.301073,
47990                                     29.649509
47991                                 ],
47992                                 [
47993                                     -101.30978,
47994                                     29.654548
47995                                 ],
47996                                 [
47997                                     -101.336239,
47998                                     29.654315
47999                                 ],
48000                                 [
48001                                     -101.349029,
48002                                     29.660103
48003                                 ],
48004                                 [
48005                                     -101.357684,
48006                                     29.667441
48007                                 ],
48008                                 [
48009                                     -101.364351,
48010                                     29.676665
48011                                 ],
48012                                 [
48013                                     -101.376624,
48014                                     29.700643
48015                                 ],
48016                                 [
48017                                     -101.383368,
48018                                     29.718497
48019                                 ],
48020                                 [
48021                                     -101.39962,
48022                                     29.740718
48023                                 ],
48024                                 [
48025                                     -101.406545,
48026                                     29.752888
48027                                 ],
48028                                 [
48029                                     -101.409309,
48030                                     29.765781
48031                                 ],
48032                                 [
48033                                     -101.405098,
48034                                     29.778442
48035                                 ],
48036                                 [
48037                                     -101.414012,
48038                                     29.774411
48039                                 ],
48040                                 [
48041                                     -101.424218,
48042                                     29.771414
48043                                 ],
48044                                 [
48045                                     -101.435096,
48046                                     29.770122
48047                                 ],
48048                                 [
48049                                     -101.446103,
48050                                     29.771052
48051                                 ],
48052                                 [
48053                                     -101.455689,
48054                                     29.77591
48055                                 ],
48056                                 [
48057                                     -101.462433,
48058                                     29.788932
48059                                 ],
48060                                 [
48061                                     -101.470908,
48062                                     29.791516
48063                                 ],
48064                                 [
48065                                     -101.490286,
48066                                     29.785547
48067                                 ],
48068                                 [
48069                                     -101.505763,
48070                                     29.773894
48071                                 ],
48072                                 [
48073                                     -101.521809,
48074                                     29.765936
48075                                 ],
48076                                 [
48077                                     -101.542893,
48078                                     29.771052
48079                                 ],
48080                                 [
48081                                     -101.539689,
48082                                     29.779191
48083                                 ],
48084                                 [
48085                                     -101.530516,
48086                                     29.796477
48087                                 ],
48088                                 [
48089                                     -101.528604,
48090                                     29.801438
48091                                 ],
48092                                 [
48093                                     -101.531912,
48094                                     29.811101
48095                                 ],
48096                                 [
48097                                     -101.539172,
48098                                     29.817974
48099                                 ],
48100                                 [
48101                                     -101.546458,
48102                                     29.820145
48103                                 ],
48104                                 [
48105                                     -101.549766,
48106                                     29.815701
48107                                 ],
48108                                 [
48109                                     -101.553977,
48110                                     29.796684
48111                                 ],
48112                                 [
48113                                     -101.564907,
48114                                     29.786478
48115                                 ],
48116                                 [
48117                                     -101.580281,
48118                                     29.781568
48119                                 ],
48120                                 [
48121                                     -101.632216,
48122                                     29.775651
48123                                 ],
48124                                 [
48125                                     -101.794531,
48126                                     29.795857
48127                                 ],
48128                                 [
48129                                     -101.80298,
48130                                     29.801438
48131                                 ],
48132                                 [
48133                                     -101.805978,
48134                                     29.811928
48135                                 ],
48136                                 [
48137                                     -101.812695,
48138                                     29.812032
48139                                 ],
48140                                 [
48141                                     -101.82409,
48142                                     29.805184
48143                                 ],
48144                                 [
48145                                     -101.857602,
48146                                     29.805184
48147                                 ],
48148                                 [
48149                                     -101.877524,
48150                                     29.810843
48151                                 ],
48152                                 [
48153                                     -101.88742,
48154                                     29.81229
48155                                 ],
48156                                 [
48157                                     -101.895455,
48158                                     29.808621
48159                                 ],
48160                                 [
48161                                     -101.90238,
48162                                     29.803247
48163                                 ],
48164                                 [
48165                                     -101.910881,
48166                                     29.799888
48167                                 ],
48168                                 [
48169                                     -101.920157,
48170                                     29.798182
48171                                 ],
48172                                 [
48173                                     -101.929613,
48174                                     29.797717
48175                                 ],
48176                                 [
48177                                     -101.942662,
48178                                     29.803608
48179                                 ],
48180                                 [
48181                                     -101.957054,
48182                                     29.814047
48183                                 ],
48184                                 [
48185                                     -101.972246,
48186                                     29.818181
48187                                 ],
48188                                 [
48189                                     -101.98793,
48190                                     29.805184
48191                                 ],
48192                                 [
48193                                     -102.014595,
48194                                     29.810998
48195                                 ],
48196                                 [
48197                                     -102.109344,
48198                                     29.80211
48199                                 ],
48200                                 [
48201                                     -102.145647,
48202                                     29.815701
48203                                 ],
48204                                 [
48205                                     -102.157248,
48206                                     29.824537
48207                                 ],
48208                                 [
48209                                     -102.203679,
48210                                     29.846138
48211                                 ],
48212                                 [
48213                                     -102.239775,
48214                                     29.849135
48215                                 ],
48216                                 [
48217                                     -102.253444,
48218                                     29.855285
48219                                 ],
48220                                 [
48221                                     -102.258276,
48222                                     29.873475
48223                                 ],
48224                                 [
48225                                     -102.276181,
48226                                     29.869547
48227                                 ],
48228                                 [
48229                                     -102.289023,
48230                                     29.878126
48231                                 ],
48232                                 [
48233                                     -102.302175,
48234                                     29.889391
48235                                 ],
48236                                 [
48237                                     -102.321011,
48238                                     29.893939
48239                                 ],
48240                                 [
48241                                     -102.330235,
48242                                     29.888926
48243                                 ],
48244                                 [
48245                                     -102.339769,
48246                                     29.870633
48247                                 ],
48248                                 [
48249                                     -102.351061,
48250                                     29.866602
48251                                 ],
48252                                 [
48253                                     -102.36323,
48254                                     29.864276
48255                                 ],
48256                                 [
48257                                     -102.370723,
48258                                     29.857765
48259                                 ],
48260                                 [
48261                                     -102.374547,
48262                                     29.848102
48263                                 ],
48264                                 [
48265                                     -102.376589,
48266                                     29.821488
48267                                 ],
48268                                 [
48269                                     -102.380051,
48270                                     29.811386
48271                                 ],
48272                                 [
48273                                     -102.404132,
48274                                     29.780793
48275                                 ],
48276                                 [
48277                                     -102.406096,
48278                                     29.777279
48279                                 ],
48280                                 [
48281                                     -102.515288,
48282                                     29.784721
48283                                 ],
48284                                 [
48285                                     -102.523066,
48286                                     29.782318
48287                                 ],
48288                                 [
48289                                     -102.531127,
48290                                     29.769915
48291                                 ],
48292                                 [
48293                                     -102.54154,
48294                                     29.762474
48295                                 ],
48296                                 [
48297                                     -102.543349,
48298                                     29.760123
48299                                 ],
48300                                 [
48301                                     -102.546578,
48302                                     29.757875
48303                                 ],
48304                                 [
48305                                     -102.553141,
48306                                     29.756738
48307                                 ],
48308                                 [
48309                                     -102.558309,
48310                                     29.759089
48311                                 ],
48312                                 [
48313                                     -102.562882,
48314                                     29.769347
48315                                 ],
48316                                 [
48317                                     -102.566758,
48318                                     29.771052
48319                                 ],
48320                                 [
48321                                     -102.58531,
48322                                     29.764696
48323                                 ],
48324                                 [
48325                                     -102.621225,
48326                                     29.747281
48327                                 ],
48328                                 [
48329                                     -102.638743,
48330                                     29.743715
48331                                 ],
48332                                 [
48333                                     -102.676054,
48334                                     29.74449
48335                                 ],
48336                                 [
48337                                     -102.683469,
48338                                     29.743715
48339                                 ],
48340                                 [
48341                                     -102.69104,
48342                                     29.736817
48343                                 ],
48344                                 [
48345                                     -102.693624,
48346                                     29.729401
48347                                 ],
48348                                 [
48349                                     -102.694709,
48350                                     29.720616
48351                                 ],
48352                                 [
48353                                     -102.697758,
48354                                     29.709557
48355                                 ],
48356                                 [
48357                                     -102.726748,
48358                                     29.664495
48359                                 ],
48360                                 [
48361                                     -102.73127,
48362                                     29.650594
48363                                 ],
48364                                 [
48365                                     -102.735507,
48366                                     29.649509
48367                                 ],
48368                                 [
48369                                     -102.751656,
48370                                     29.622457
48371                                 ],
48372                                 [
48373                                     -102.75176,
48374                                     29.620157
48375                                 ],
48376                                 [
48377                                     -102.761346,
48378                                     29.603414
48379                                 ],
48380                                 [
48381                                     -102.767598,
48382                                     29.59729
48383                                 ],
48384                                 [
48385                                     -102.779665,
48386                                     29.592303
48387                                 ],
48388                                 [
48389                                     -102.774084,
48390                                     29.579617
48391                                 ],
48392                                 [
48393                                     -102.776461,
48394                                     29.575948
48395                                 ],
48396                                 [
48397                                     -102.785892,
48398                                     29.571814
48399                                 ],
48400                                 [
48401                                     -102.78075,
48402                                     29.558249
48403                                 ],
48404                                 [
48405                                     -102.786512,
48406                                     29.550497
48407                                 ],
48408                                 [
48409                                     -102.795478,
48410                                     29.54427
48411                                 ],
48412                                 [
48413                                     -102.827311,
48414                                     29.470502
48415                                 ],
48416                                 [
48417                                     -102.833951,
48418                                     29.461355
48419                                 ],
48420                                 [
48421                                     -102.839067,
48422                                     29.45195
48423                                 ],
48424                                 [
48425                                     -102.841134,
48426                                     29.438308
48427                                 ],
48428                                 [
48429                                     -102.838705,
48430                                     29.426939
48431                                 ],
48432                                 [
48433                                     -102.834984,
48434                                     29.415699
48435                                 ],
48436                                 [
48437                                     -102.835191,
48438                                     29.403839
48439                                 ],
48440                                 [
48441                                     -102.844545,
48442                                     29.390533
48443                                 ],
48444                                 [
48445                                     -102.845578,
48446                                     29.384719
48447                                 ],
48448                                 [
48449                                     -102.838033,
48450                                     29.370534
48451                                 ],
48452                                 [
48453                                     -102.837672,
48454                                     29.366322
48455                                 ],
48456                                 [
48457                                     -102.84656,
48458                                     29.361749
48459                                 ],
48460                                 [
48461                                     -102.853872,
48462                                     29.361
48463                                 ],
48464                                 [
48465                                     -102.859867,
48466                                     29.361155
48467                                 ],
48468                                 [
48469                                     -102.864957,
48470                                     29.359527
48471                                 ],
48472                                 [
48473                                     -102.876972,
48474                                     29.350871
48475                                 ],
48476                                 [
48477                                     -102.883069,
48478                                     29.343766
48479                                 ],
48480                                 [
48481                                     -102.885188,
48482                                     29.333379
48483                                 ],
48484                                 [
48485                                     -102.885498,
48486                                     29.314801
48487                                 ],
48488                                 [
48489                                     -102.899399,
48490                                     29.276095
48491                                 ],
48492                                 [
48493                                     -102.899709,
48494                                     29.2639
48495                                 ],
48496                                 [
48497                                     -102.892139,
48498                                     29.254391
48499                                 ],
48500                                 [
48501                                     -102.867954,
48502                                     29.240387
48503                                 ],
48504                                 [
48505                                     -102.858781,
48506                                     29.229147
48507                                 ],
48508                                 [
48509                                     -102.869866,
48510                                     29.224781
48511                                 ],
48512                                 [
48513                                     -102.896893,
48514                                     29.220285
48515                                 ],
48516                                 [
48517                                     -102.942265,
48518                                     29.190209
48519                                 ],
48520                                 [
48521                                     -102.947536,
48522                                     29.182018
48523                                 ],
48524                                 [
48525                                     -102.969757,
48526                                     29.192845
48527                                 ],
48528                                 [
48529                                     -102.988386,
48530                                     29.177135
48531                                 ],
48532                                 [
48533                                     -103.015826,
48534                                     29.126776
48535                                 ],
48536                                 [
48537                                     -103.024275,
48538                                     29.116157
48539                                 ],
48540                                 [
48541                                     -103.032621,
48542                                     29.110214
48543                                 ],
48544                                 [
48545                                     -103.072541,
48546                                     29.091404
48547                                 ],
48548                                 [
48549                                     -103.080758,
48550                                     29.085203
48551                                 ],
48552                                 [
48553                                     -103.085589,
48554                                     29.07572
48555                                 ],
48556                                 [
48557                                     -103.091532,
48558                                     29.057866
48559                                 ],
48560                                 [
48561                                     -103.095356,
48562                                     29.060294
48563                                 ],
48564                                 [
48565                                     -103.104684,
48566                                     29.057866
48567                                 ],
48568                                 [
48569                                     -103.109205,
48570                                     29.023372
48571                                 ],
48572                                 [
48573                                     -103.122771,
48574                                     28.996474
48575                                 ],
48576                                 [
48577                                     -103.147989,
48578                                     28.985105
48579                                 ],
48580                                 [
48581                                     -103.187108,
48582                                     28.990221
48583                                 ],
48584                                 [
48585                                     -103.241756,
48586                                     29.003502
48587                                 ],
48588                                 [
48589                                     -103.301545,
48590                                     29.002365
48591                                 ],
48592                                 [
48593                                     -103.316247,
48594                                     29.010065
48595                                 ],
48596                                 [
48597                                     -103.311514,
48598                                     29.026043
48599                                 ],
48600                                 [
48601                                     -103.309994,
48602                                     29.031175
48603                                 ],
48604                                 [
48605                                     -103.3248,
48606                                     29.026808
48607                                 ],
48608                                 [
48609                                     -103.330484,
48610                                     29.023733
48611                                 ],
48612                                 [
48613                                     -103.342602,
48614                                     29.041226
48615                                 ],
48616                                 [
48617                                     -103.351671,
48618                                     29.039417
48619                                 ],
48620                                 [
48621                                     -103.360534,
48622                                     29.029831
48623                                 ],
48624                                 [
48625                                     -103.372083,
48626                                     29.023733
48627                                 ],
48628                                 [
48629                                     -103.38663,
48630                                     29.028798
48631                                 ],
48632                                 [
48633                                     -103.414639,
48634                                     29.052414
48635                                 ],
48636                                 [
48637                                     -103.423605,
48638                                     29.057866
48639                                 ],
48640                                 [
48641                                     -103.435697,
48642                                     29.061121
48643                                 ],
48644                                 [
48645                                     -103.478537,
48646                                     29.08205
48647                                 ],
48648                                 [
48649                                     -103.529748,
48650                                     29.126776
48651                                 ],
48652                                 [
48653                                     -103.535588,
48654                                     29.135122
48655                                 ],
48656                                 [
48657                                     -103.538223,
48658                                     29.142408
48659                                 ],
48660                                 [
48661                                     -103.541711,
48662                                     29.148816
48663                                 ],
48664                                 [
48665                                     -103.550238,
48666                                     29.154656
48667                                 ],
48668                                 [
48669                                     -103.558015,
48670                                     29.156206
48671                                 ],
48672                                 [
48673                                     -103.58499,
48674                                     29.154656
48675                                 ],
48676                                 [
48677                                     -103.673125,
48678                                     29.173569
48679                                 ],
48680                                 [
48681                                     -103.702477,
48682                                     29.187858
48683                                 ],
48684                                 [
48685                                     -103.749476,
48686                                     29.222972
48687                                 ],
48688                                 [
48689                                     -103.759062,
48690                                     29.226848
48691                                 ],
48692                                 [
48693                                     -103.770767,
48694                                     29.229845
48695                                 ],
48696                                 [
48697                                     -103.777718,
48698                                     29.235297
48699                                 ],
48700                                 [
48701                                     -103.769424,
48702                                     29.257543
48703                                 ],
48704                                 [
48705                                     -103.774229,
48706                                     29.267517
48707                                 ],
48708                                 [
48709                                     -103.78366,
48710                                     29.274803
48711                                 ],
48712                                 [
48713                                     -103.794177,
48714                                     29.277594
48715                                 ],
48716                                 [
48717                                     -103.837038,
48718                                     29.279906
48719                                 ]
48720                             ]
48721                         ],
48722                         [
48723                             [
48724                                 [
48725                                     178.301106,
48726                                     52.056551
48727                                 ],
48728                                 [
48729                                     179.595462,
48730                                     52.142083
48731                                 ],
48732                                 [
48733                                     179.825447,
48734                                     51.992849
48735                                 ],
48736                                 [
48737                                     179.661729,
48738                                     51.485763
48739                                 ],
48740                                 [
48741                                     179.723231,
48742                                     51.459963
48743                                 ],
48744                                 [
48745                                     179.408066,
48746                                     51.209841
48747                                 ],
48748                                 [
48749                                     178.411463,
48750                                     51.523605
48751                                 ],
48752                                 [
48753                                     177.698335,
48754                                     51.877899
48755                                 ],
48756                                 [
48757                                     177.16784,
48758                                     51.581866
48759                                 ],
48760                                 [
48761                                     176.487008,
48762                                     52.175325
48763                                 ],
48764                                 [
48765                                     174.484678,
48766                                     52.08716
48767                                 ],
48768                                 [
48769                                     172.866263,
48770                                     52.207379
48771                                 ],
48772                                 [
48773                                     172.825506,
48774                                     52.716846
48775                                 ],
48776                                 [
48777                                     172.747012,
48778                                     52.654022
48779                                 ],
48780                                 [
48781                                     172.08261,
48782                                     52.952695
48783                                 ],
48784                                 [
48785                                     172.942925,
48786                                     53.183013
48787                                 ],
48788                                 [
48789                                     173.029416,
48790                                     52.993628
48791                                 ],
48792                                 [
48793                                     173.127208,
48794                                     52.99494
48795                                 ],
48796                                 [
48797                                     173.143321,
48798                                     52.990383
48799                                 ],
48800                                 [
48801                                     173.175059,
48802                                     52.971747
48803                                 ],
48804                                 [
48805                                     173.182932,
48806                                     52.968373
48807                                 ],
48808                                 [
48809                                     176.45233,
48810                                     52.628178
48811                                 ],
48812                                 [
48813                                     176.468135,
48814                                     52.488358
48815                                 ],
48816                                 [
48817                                     177.900385,
48818                                     52.488358
48819                                 ],
48820                                 [
48821                                     178.007601,
48822                                     52.179677
48823                                 ],
48824                                 [
48825                                     178.301106,
48826                                     52.056551
48827                                 ]
48828                             ]
48829                         ],
48830                         [
48831                             [
48832                                 [
48833                                     -168.899607,
48834                                     65.747626
48835                                 ],
48836                                 [
48837                                     -168.909861,
48838                                     65.739569
48839                                 ],
48840                                 [
48841                                     -168.926218,
48842                                     65.739895
48843                                 ],
48844                                 [
48845                                     -168.942128,
48846                                     65.74372
48847                                 ],
48848                                 [
48849                                     -168.951731,
48850                                     65.75316
48851                                 ],
48852                                 [
48853                                     -168.942983,
48854                                     65.764716
48855                                 ],
48856                                 [
48857                                     -168.920115,
48858                                     65.768866
48859                                 ],
48860                                 [
48861                                     -168.907908,
48862                                     65.768297
48863                                 ],
48864                                 [
48865                                     -168.902781,
48866                                     65.761542
48867                                 ],
48868                                 [
48869                                     -168.899607,
48870                                     65.747626
48871                                 ]
48872                             ]
48873                         ],
48874                         [
48875                             [
48876                                 [
48877                                     -131.160718,
48878                                     54.787192
48879                                 ],
48880                                 [
48881                                     -132.853508,
48882                                     54.482536
48883                                 ],
48884                                 [
48885                                     -134.77719,
48886                                     54.717786
48887                                 ],
48888                                 [
48889                                     -142.6966,
48890                                     55.845503
48891                                 ],
48892                                 [
48893                                     -142.861997,
48894                                     49.948308
48895                                 ],
48896                                 [
48897                                     -155.675916,
48898                                     51.109976
48899                                 ],
48900                                 [
48901                                     -164.492732,
48902                                     50.603976
48903                                 ],
48904                                 [
48905                                     -164.691217,
48906                                     50.997975
48907                                 ],
48908                                 [
48909                                     -171.246993,
48910                                     49.948308
48911                                 ],
48912                                 [
48913                                     -171.215436,
48914                                     50.576636
48915                                 ],
48916                                 [
48917                                     -173.341669,
48918                                     50.968826
48919                                 ],
48920                                 [
48921                                     -173.362022,
48922                                     51.082198
48923                                 ],
48924                                 [
48925                                     -177.799603,
48926                                     51.272899
48927                                 ],
48928                                 [
48929                                     -179.155463,
48930                                     50.982285
48931                                 ],
48932                                 [
48933                                     -179.476076,
48934                                     52.072632
48935                                 ],
48936                                 [
48937                                     -177.11459,
48938                                     52.248701
48939                                 ],
48940                                 [
48941                                     -177.146284,
48942                                     52.789384
48943                                 ],
48944                                 [
48945                                     -174.777218,
48946                                     52.443779
48947                                 ],
48948                                 [
48949                                     -174.773743,
48950                                     52.685853
48951                                 ],
48952                                 [
48953                                     -173.653194,
48954                                     52.704099
48955                                 ],
48956                                 [
48957                                     -173.790528,
48958                                     53.469081
48959                                 ],
48960                                 [
48961                                     -171.063371,
48962                                     53.604473
48963                                 ],
48964                                 [
48965                                     -170.777733,
48966                                     59.291898
48967                                 ],
48968                                 [
48969                                     -174.324884,
48970                                     60.332184
48971                                 ],
48972                                 [
48973                                     -171.736408,
48974                                     62.68026
48975                                 ],
48976                                 [
48977                                     -172.315705,
48978                                     62.725352
48979                                 ],
48980                                 [
48981                                     -171.995091,
48982                                     63.999658
48983                                 ],
48984                                 [
48985                                     -168.501424,
48986                                     65.565173
48987                                 ],
48988                                 [
48989                                     -168.714145,
48990                                     65.546708
48991                                 ],
48992                                 [
48993                                     -168.853077,
48994                                     68.370871
48995                                 ],
48996                                 [
48997                                     -161.115601,
48998                                     72.416214
48999                                 ],
49000                                 [
49001                                     -146.132257,
49002                                     70.607941
49003                                 ],
49004                                 [
49005                                     -140.692512,
49006                                     69.955349
49007                                 ],
49008                                 [
49009                                     -141.145395,
49010                                     69.671641
49011                                 ],
49012                                 [
49013                                     -141.015207,
49014                                     69.654202
49015                                 ],
49016                                 [
49017                                     -141.006459,
49018                                     69.651272
49019                                 ],
49020                                 [
49021                                     -141.005564,
49022                                     69.650946
49023                                 ],
49024                                 [
49025                                     -141.005549,
49026                                     69.650941
49027                                 ],
49028                                 [
49029                                     -141.005471,
49030                                     69.505164
49031                                 ],
49032                                 [
49033                                     -141.001208,
49034                                     60.466879
49035                                 ],
49036                                 [
49037                                     -141.001156,
49038                                     60.321074
49039                                 ],
49040                                 [
49041                                     -140.994929,
49042                                     60.304382
49043                                 ],
49044                                 [
49045                                     -140.979555,
49046                                     60.295804
49047                                 ],
49048                                 [
49049                                     -140.909146,
49050                                     60.28366
49051                                 ],
49052                                 [
49053                                     -140.768457,
49054                                     60.259269
49055                                 ],
49056                                 [
49057                                     -140.660505,
49058                                     60.24051
49059                                 ],
49060                                 [
49061                                     -140.533743,
49062                                     60.218548
49063                                 ],
49064                                 [
49065                                     -140.518705,
49066                                     60.22387
49067                                 ],
49068                                 [
49069                                     -140.506664,
49070                                     60.236324
49071                                 ],
49072                                 [
49073                                     -140.475323,
49074                                     60.276477
49075                                 ],
49076                                 [
49077                                     -140.462791,
49078                                     60.289138
49079                                 ],
49080                                 [
49081                                     -140.447805,
49082                                     60.29446
49083                                 ],
49084                                 [
49085                                     -140.424111,
49086                                     60.293168
49087                                 ],
49088                                 [
49089                                     -140.32497,
49090                                     60.267537
49091                                 ],
49092                                 [
49093                                     -140.169243,
49094                                     60.227229
49095                                 ],
49096                                 [
49097                                     -140.01579,
49098                                     60.187387
49099                                 ],
49100                                 [
49101                                     -139.967757,
49102                                     60.188369
49103                                 ],
49104                                 [
49105                                     -139.916933,
49106                                     60.207851
49107                                 ],
49108                                 [
49109                                     -139.826318,
49110                                     60.256478
49111                                 ],
49112                                 [
49113                                     -139.728417,
49114                                     60.309033
49115                                 ],
49116                                 [
49117                                     -139.679816,
49118                                     60.32681
49119                                 ],
49120                                 [
49121                                     -139.628346,
49122                                     60.334096
49123                                 ],
49124                                 [
49125                                     -139.517965,
49126                                     60.336732
49127                                 ],
49128                                 [
49129                                     -139.413992,
49130                                     60.339212
49131                                 ],
49132                                 [
49133                                     -139.262193,
49134                                     60.342778
49135                                 ],
49136                                 [
49137                                     -139.101608,
49138                                     60.346602
49139                                 ],
49140                                 [
49141                                     -139.079465,
49142                                     60.341021
49143                                 ],
49144                                 [
49145                                     -139.06869,
49146                                     60.322056
49147                                 ],
49148                                 [
49149                                     -139.073186,
49150                                     60.299835
49151                                 ],
49152                                 [
49153                                     -139.113468,
49154                                     60.226816
49155                                 ],
49156                                 [
49157                                     -139.149615,
49158                                     60.161187
49159                                 ],
49160                                 [
49161                                     -139.183231,
49162                                     60.100157
49163                                 ],
49164                                 [
49165                                     -139.182146,
49166                                     60.073389
49167                                 ],
49168                                 [
49169                                     -139.112305,
49170                                     60.031376
49171                                 ],
49172                                 [
49173                                     -139.060207,
49174                                     60.000059
49175                                 ],
49176                                 [
49177                                     -139.051611,
49178                                     59.994892
49179                                 ],
49180                                 [
49181                                     -139.003759,
49182                                     59.977219
49183                                 ],
49184                                 [
49185                                     -138.842425,
49186                                     59.937686
49187                                 ],
49188                                 [
49189                                     -138.742586,
49190                                     59.913192
49191                                 ],
49192                                 [
49193                                     -138.704888,
49194                                     59.898464
49195                                 ],
49196                                 [
49197                                     -138.697188,
49198                                     59.89371
49199                                 ],
49200                                 [
49201                                     -138.692098,
49202                                     59.886888
49203                                 ],
49204                                 [
49205                                     -138.654349,
49206                                     59.805498
49207                                 ],
49208                                 [
49209                                     -138.63745,
49210                                     59.784052
49211                                 ],
49212                                 [
49213                                     -138.59921,
49214                                     59.753822
49215                                 ],
49216                                 [
49217                                     -138.488881,
49218                                     59.696357
49219                                 ],
49220                                 [
49221                                     -138.363617,
49222                                     59.631142
49223                                 ],
49224                                 [
49225                                     -138.219543,
49226                                     59.556004
49227                                 ],
49228                                 [
49229                                     -138.067614,
49230                                     59.476991
49231                                 ],
49232                                 [
49233                                     -137.91057,
49234                                     59.395187
49235                                 ],
49236                                 [
49237                                     -137.758305,
49238                                     59.315915
49239                                 ],
49240                                 [
49241                                     -137.611363,
49242                                     59.239331
49243                                 ],
49244                                 [
49245                                     -137.594181,
49246                                     59.225275
49247                                 ],
49248                                 [
49249                                     -137.582088,
49250                                     59.206568
49251                                 ],
49252                                 [
49253                                     -137.5493,
49254                                     59.134531
49255                                 ],
49256                                 [
49257                                     -137.521007,
49258                                     59.072364
49259                                 ],
49260                                 [
49261                                     -137.484394,
49262                                     58.991904
49263                                 ],
49264                                 [
49265                                     -137.507752,
49266                                     58.939969
49267                                 ],
49268                                 [
49269                                     -137.50876,
49270                                     58.914906
49271                                 ],
49272                                 [
49273                                     -137.486875,
49274                                     58.900075
49275                                 ],
49276                                 [
49277                                     -137.453466,
49278                                     58.899145
49279                                 ],
49280                                 [
49281                                     -137.423106,
49282                                     58.907723
49283                                 ],
49284                                 [
49285                                     -137.338098,
49286                                     58.955472
49287                                 ],
49288                                 [
49289                                     -137.2819,
49290                                     58.98715
49291                                 ],
49292                                 [
49293                                     -137.172346,
49294                                     59.027148
49295                                 ],
49296                                 [
49297                                     -137.062367,
49298                                     59.067572
49299                                 ],
49300                                 [
49301                                     -137.047109,
49302                                     59.07331
49303                                 ],
49304                                 [
49305                                     -136.942282,
49306                                     59.11107
49307                                 ],
49308                                 [
49309                                     -136.840816,
49310                                     59.148174
49311                                 ],
49312                                 [
49313                                     -136.785496,
49314                                     59.157217
49315                                 ],
49316                                 [
49317                                     -136.671911,
49318                                     59.150809
49319                                 ],
49320                                 [
49321                                     -136.613491,
49322                                     59.15422
49323                                 ],
49324                                 [
49325                                     -136.569489,
49326                                     59.172152
49327                                 ],
49328                                 [
49329                                     -136.484791,
49330                                     59.2538
49331                                 ],
49332                                 [
49333                                     -136.483551,
49334                                     59.257469
49335                                 ],
49336                                 [
49337                                     -136.466549,
49338                                     59.287803
49339                                 ],
49340                                 [
49341                                     -136.467092,
49342                                     59.38449
49343                                 ],
49344                                 [
49345                                     -136.467557,
49346                                     59.461643
49347                                 ],
49348                                 [
49349                                     -136.415958,
49350                                     59.452238
49351                                 ],
49352                                 [
49353                                     -136.36684,
49354                                     59.449551
49355                                 ],
49356                                 [
49357                                     -136.319995,
49358                                     59.459059
49359                                 ],
49360                                 [
49361                                     -136.275036,
49362                                     59.486448
49363                                 ],
49364                                 [
49365                                     -136.244728,
49366                                     59.528202
49367                                 ],
49368                                 [
49369                                     -136.258474,
49370                                     59.556107
49371                                 ],
49372                                 [
49373                                     -136.29935,
49374                                     59.575745
49375                                 ],
49376                                 [
49377                                     -136.350329,
49378                                     59.592384
49379                                 ],
49380                                 [
49381                                     -136.2585,
49382                                     59.621582
49383                                 ],
49384                                 [
49385                                     -136.145406,
49386                                     59.636826
49387                                 ],
49388                                 [
49389                                     -136.02686,
49390                                     59.652846
49391                                 ],
49392                                 [
49393                                     -135.923818,
49394                                     59.666747
49395                                 ],
49396                                 [
49397                                     -135.830955,
49398                                     59.693257
49399                                 ],
49400                                 [
49401                                     -135.641251,
49402                                     59.747362
49403                                 ],
49404                                 [
49405                                     -135.482759,
49406                                     59.792475
49407                                 ],
49408                                 [
49409                                     -135.465137,
49410                                     59.789685
49411                                 ],
49412                                 [
49413                                     -135.404392,
49414                                     59.753305
49415                                 ],
49416                                 [
49417                                     -135.345791,
49418                                     59.731032
49419                                 ],
49420                                 [
49421                                     -135.259879,
49422                                     59.698218
49423                                 ],
49424                                 [
49425                                     -135.221897,
49426                                     59.675273
49427                                 ],
49428                                 [
49429                                     -135.192028,
49430                                     59.64711
49431                                 ],
49432                                 [
49433                                     -135.157792,
49434                                     59.623287
49435                                 ],
49436                                 [
49437                                     -135.106684,
49438                                     59.613158
49439                                 ],
49440                                 [
49441                                     -135.087874,
49442                                     59.606544
49443                                 ],
49444                                 [
49445                                     -135.032942,
49446                                     59.573109
49447                                 ],
49448                                 [
49449                                     -135.018524,
49450                                     59.559363
49451                                 ],
49452                                 [
49453                                     -135.016198,
49454                                     59.543447
49455                                 ],
49456                                 [
49457                                     -135.01948,
49458                                     59.493166
49459                                 ],
49460                                 [
49461                                     -135.023252,
49462                                     59.477146
49463                                 ],
49464                                 [
49465                                     -135.037489,
49466                                     59.461591
49467                                 ],
49468                                 [
49469                                     -135.078598,
49470                                     59.438337
49471                                 ],
49472                                 [
49473                                     -135.095754,
49474                                     59.418855
49475                                 ],
49476                                 [
49477                                     -134.993254,
49478                                     59.381906
49479                                 ],
49480                                 [
49481                                     -135.00483,
49482                                     59.367127
49483                                 ],
49484                                 [
49485                                     -135.014441,
49486                                     59.35152
49487                                 ],
49488                                 [
49489                                     -135.016198,
49490                                     59.336173
49491                                 ],
49492                                 [
49493                                     -134.979973,
49494                                     59.297415
49495                                 ],
49496                                 [
49497                                     -134.95783,
49498                                     59.280982
49499                                 ],
49500                                 [
49501                                     -134.932431,
49502                                     59.270647
49503                                 ],
49504                                 [
49505                                     -134.839465,
49506                                     59.258141
49507                                 ],
49508                                 [
49509                                     -134.74345,
49510                                     59.245119
49511                                 ],
49512                                 [
49513                                     -134.70552,
49514                                     59.240106
49515                                 ],
49516                                 [
49517                                     -134.692084,
49518                                     59.235249
49519                                 ],
49520                                 [
49521                                     -134.68286,
49522                                     59.223001
49523                                 ],
49524                                 [
49525                                     -134.671439,
49526                                     59.193752
49527                                 ],
49528                                 [
49529                                     -134.66038,
49530                                     59.181298
49531                                 ],
49532                                 [
49533                                     -134.610771,
49534                                     59.144556
49535                                 ],
49536                                 [
49537                                     -134.582788,
49538                                     59.128847
49539                                 ],
49540                                 [
49541                                     -134.556717,
49542                                     59.123059
49543                                 ],
49544                                 [
49545                                     -134.509072,
49546                                     59.122801
49547                                 ],
49548                                 [
49549                                     -134.477575,
49550                                     59.114946
49551                                 ],
49552                                 [
49553                                     -134.451013,
49554                                     59.097893
49555                                 ],
49556                                 [
49557                                     -134.398019,
49558                                     59.051952
49559                                 ],
49560                                 [
49561                                     -134.387167,
49562                                     59.036863
49563                                 ],
49564                                 [
49565                                     -134.385591,
49566                                     59.018828
49567                                 ],
49568                                 [
49569                                     -134.399389,
49570                                     58.974954
49571                                 ],
49572                                 [
49573                                     -134.343423,
49574                                     58.968857
49575                                 ],
49576                                 [
49577                                     -134.329651,
49578                                     58.963017
49579                                 ],
49580                                 [
49581                                     -134.320039,
49582                                     58.952682
49583                                 ],
49584                                 [
49585                                     -134.32314,
49586                                     58.949168
49587                                 ],
49588                                 [
49589                                     -134.330323,
49590                                     58.945344
49591                                 ],
49592                                 [
49593                                     -134.333036,
49594                                     58.93413
49595                                 ],
49596                                 [
49597                                     -134.327403,
49598                                     58.916457
49599                                 ],
49600                                 [
49601                                     -134.316939,
49602                                     58.903796
49603                                 ],
49604                                 [
49605                                     -134.22219,
49606                                     58.842714
49607                                 ],
49608                                 [
49609                                     -134.108838,
49610                                     58.808246
49611                                 ],
49612                                 [
49613                                     -133.983109,
49614                                     58.769902
49615                                 ],
49616                                 [
49617                                     -133.87123,
49618                                     58.735899
49619                                 ],
49620                                 [
49621                                     -133.831129,
49622                                     58.718019
49623                                 ],
49624                                 [
49625                                     -133.796402,
49626                                     58.693421
49627                                 ],
49628                                 [
49629                                     -133.700077,
49630                                     58.59937
49631                                 ],
49632                                 [
49633                                     -133.626283,
49634                                     58.546402
49635                                 ],
49636                                 [
49637                                     -133.547063,
49638                                     58.505577
49639                                 ],
49640                                 [
49641                                     -133.463089,
49642                                     58.462221
49643                                 ],
49644                                 [
49645                                     -133.392241,
49646                                     58.403878
49647                                 ],
49648                                 [
49649                                     -133.43012,
49650                                     58.372097
49651                                 ],
49652                                 [
49653                                     -133.41503,
49654                                     58.330549
49655                                 ],
49656                                 [
49657                                     -133.374567,
49658                                     58.290965
49659                                 ],
49660                                 [
49661                                     -133.257262,
49662                                     58.210298
49663                                 ],
49664                                 [
49665                                     -133.165588,
49666                                     58.147305
49667                                 ],
49668                                 [
49669                                     -133.142127,
49670                                     58.120588
49671                                 ],
49672                                 [
49673                                     -133.094843,
49674                                     58.0331
49675                                 ],
49676                                 [
49677                                     -133.075154,
49678                                     58.007882
49679                                 ],
49680                                 [
49681                                     -132.99335,
49682                                     57.941917
49683                                 ],
49684                                 [
49685                                     -132.917153,
49686                                     57.880499
49687                                 ],
49688                                 [
49689                                     -132.83212,
49690                                     57.791564
49691                                 ],
49692                                 [
49693                                     -132.70944,
49694                                     57.663303
49695                                 ],
49696                                 [
49697                                     -132.629057,
49698                                     57.579277
49699                                 ],
49700                                 [
49701                                     -132.552447,
49702                                     57.499075
49703                                 ],
49704                                 [
49705                                     -132.455735,
49706                                     57.420992
49707                                 ],
49708                                 [
49709                                     -132.362304,
49710                                     57.3457
49711                                 ],
49712                                 [
49713                                     -132.304684,
49714                                     57.280355
49715                                 ],
49716                                 [
49717                                     -132.230994,
49718                                     57.19682
49719                                 ],
49720                                 [
49721                                     -132.276366,
49722                                     57.14889
49723                                 ],
49724                                 [
49725                                     -132.34122,
49726                                     57.080393
49727                                 ],
49728                                 [
49729                                     -132.16229,
49730                                     57.050317
49731                                 ],
49732                                 [
49733                                     -132.031859,
49734                                     57.028406
49735                                 ],
49736                                 [
49737                                     -132.107384,
49738                                     56.858753
49739                                 ],
49740                                 [
49741                                     -131.871558,
49742                                     56.79346
49743                                 ],
49744                                 [
49745                                     -131.865874,
49746                                     56.785708
49747                                 ],
49748                                 [
49749                                     -131.872411,
49750                                     56.77297
49751                                 ],
49752                                 [
49753                                     -131.882617,
49754                                     56.759146
49755                                 ],
49756                                 [
49757                                     -131.887966,
49758                                     56.747958
49759                                 ],
49760                                 [
49761                                     -131.886028,
49762                                     56.737055
49763                                 ],
49764                                 [
49765                                     -131.880705,
49766                                     56.728838
49767                                 ],
49768                                 [
49769                                     -131.864789,
49770                                     56.71349
49771                                 ],
49772                                 [
49773                                     -131.838976,
49774                                     56.682278
49775                                 ],
49776                                 [
49777                                     -131.830424,
49778                                     56.664759
49779                                 ],
49780                                 [
49781                                     -131.826574,
49782                                     56.644606
49783                                 ],
49784                                 [
49785                                     -131.832103,
49786                                     56.603368
49787                                 ],
49788                                 [
49789                                     -131.825592,
49790                                     56.593343
49791                                 ],
49792                                 [
49793                                     -131.799108,
49794                                     56.587658
49795                                 ],
49796                                 [
49797                                     -131.692293,
49798                                     56.585074
49799                                 ],
49800                                 [
49801                                     -131.585891,
49802                                     56.595048
49803                                 ],
49804                                 [
49805                                     -131.560363,
49806                                     56.594066
49807                                 ],
49808                                 [
49809                                     -131.536437,
49810                                     56.585229
49811                                 ],
49812                                 [
49813                                     -131.491659,
49814                                     56.560166
49815                                 ],
49816                                 [
49817                                     -131.345699,
49818                                     56.503271
49819                                 ],
49820                                 [
49821                                     -131.215604,
49822                                     56.45255
49823                                 ],
49824                                 [
49825                                     -131.100546,
49826                                     56.407669
49827                                 ],
49828                                 [
49829                                     -131.016934,
49830                                     56.38705
49831                                 ],
49832                                 [
49833                                     -130.839089,
49834                                     56.372452
49835                                 ],
49836                                 [
49837                                     -130.760334,
49838                                     56.345192
49839                                 ],
49840                                 [
49841                                     -130.645768,
49842                                     56.261942
49843                                 ],
49844                                 [
49845                                     -130.602256,
49846                                     56.247059
49847                                 ],
49848                                 [
49849                                     -130.495518,
49850                                     56.232434
49851                                 ],
49852                                 [
49853                                     -130.47229,
49854                                     56.22489
49855                                 ],
49856                                 [
49857                                     -130.458053,
49858                                     56.210653
49859                                 ],
49860                                 [
49861                                     -130.427926,
49862                                     56.143964
49863                                 ],
49864                                 [
49865                                     -130.418159,
49866                                     56.129702
49867                                 ],
49868                                 [
49869                                     -130.403974,
49870                                     56.121898
49871                                 ],
49872                                 [
49873                                     -130.290311,
49874                                     56.10097
49875                                 ],
49876                                 [
49877                                     -130.243156,
49878                                     56.092391
49879                                 ],
49880                                 [
49881                                     -130.211246,
49882                                     56.089962
49883                                 ],
49884                                 [
49885                                     -130.116756,
49886                                     56.105646
49887                                 ],
49888                                 [
49889                                     -130.094328,
49890                                     56.101486
49891                                 ],
49892                                 [
49893                                     -130.071539,
49894                                     56.084123
49895                                 ],
49896                                 [
49897                                     -130.039319,
49898                                     56.045521
49899                                 ],
49900                                 [
49901                                     -130.026632,
49902                                     56.024101
49903                                 ],
49904                                 [
49905                                     -130.01901,
49906                                     56.002216
49907                                 ],
49908                                 [
49909                                     -130.014695,
49910                                     55.963252
49911                                 ],
49912                                 [
49913                                     -130.016788,
49914                                     55.918913
49915                                 ],
49916                                 [
49917                                     -130.019612,
49918                                     55.907978
49919                                 ],
49920                                 [
49921                                     -130.019618,
49922                                     55.907952
49923                                 ],
49924                                 [
49925                                     -130.022817,
49926                                     55.901353
49927                                 ],
49928                                 [
49929                                     -130.049387,
49930                                     55.871405
49931                                 ],
49932                                 [
49933                                     -130.104726,
49934                                     55.825263
49935                                 ],
49936                                 [
49937                                     -130.136627,
49938                                     55.806464
49939                                 ],
49940                                 [
49941                                     -130.148834,
49942                                     55.795356
49943                                 ],
49944                                 [
49945                                     -130.163482,
49946                                     55.771145
49947                                 ],
49948                                 [
49949                                     -130.167307,
49950                                     55.766262
49951                                 ],
49952                                 [
49953                                     -130.170806,
49954                                     55.759833
49955                                 ],
49956                                 [
49957                                     -130.173655,
49958                                     55.749498
49959                                 ],
49960                                 [
49961                                     -130.170806,
49962                                     55.740953
49963                                 ],
49964                                 [
49965                                     -130.163808,
49966                                     55.734565
49967                                 ],
49968                                 [
49969                                     -130.160064,
49970                                     55.727118
49971                                 ],
49972                                 [
49973                                     -130.167388,
49974                                     55.715399
49975                                 ],
49976                                 [
49977                                     -130.155914,
49978                                     55.700141
49979                                 ],
49980                                 [
49981                                     -130.142893,
49982                                     55.689521
49983                                 ],
49984                                 [
49985                                     -130.131825,
49986                                     55.676581
49987                                 ],
49988                                 [
49989                                     -130.126454,
49990                                     55.653998
49991                                 ],
49992                                 [
49993                                     -130.12857,
49994                                     55.63642
49995                                 ],
49996                                 [
49997                                     -130.135121,
49998                                     55.619127
49999                                 ],
50000                                 [
50001                                     -130.153147,
50002                                     55.58511
50003                                 ],
50004                                 [
50005                                     -130.148671,
50006                                     55.578192
50007                                 ],
50008                                 [
50009                                     -130.146881,
50010                                     55.569322
50011                                 ],
50012                                 [
50013                                     -130.146962,
50014                                     55.547187
50015                                 ],
50016                                 [
50017                                     -130.112172,
50018                                     55.509345
50019                                 ],
50020                                 [
50021                                     -130.101674,
50022                                     55.481147
50023                                 ],
50024                                 [
50025                                     -130.095082,
50026                                     55.472113
50027                                 ],
50028                                 [
50029                                     -130.065419,
50030                                     55.446112
50031                                 ],
50032                                 [
50033                                     -130.057525,
50034                                     55.434882
50035                                 ],
50036                                 [
50037                                     -130.052561,
50038                                     55.414008
50039                                 ],
50040                                 [
50041                                     -130.054311,
50042                                     55.366645
50043                                 ],
50044                                 [
50045                                     -130.05012,
50046                                     55.345445
50047                                 ],
50048                                 [
50049                                     -130.039296,
50050                                     55.330756
50051                                 ],
50052                                 [
50053                                     -129.989247,
50054                                     55.284003
50055                                 ],
50056                                 [
50057                                     -130.031239,
50058                                     55.26435
50059                                 ],
50060                                 [
50061                                     -130.050038,
50062                                     55.252875
50063                                 ],
50064                                 [
50065                                     -130.067494,
50066                                     55.239
50067                                 ],
50068                                 [
50069                                     -130.078236,
50070                                     55.233791
50071                                 ],
50072                                 [
50073                                     -130.100494,
50074                                     55.230292
50075                                 ],
50076                                 [
50077                                     -130.104726,
50078                                     55.225653
50079                                 ],
50080                                 [
50081                                     -130.105702,
50082                                     55.211127
50083                                 ],
50084                                 [
50085                                     -130.10912,
50086                                     55.200751
50087                                 ],
50088                                 [
50089                                     -130.115793,
50090                                     55.191596
50091                                 ],
50092                                 [
50093                                     -130.126454,
50094                                     55.180976
50095                                 ],
50096                                 [
50097                                     -130.151967,
50098                                     55.163275
50099                                 ],
50100                                 [
50101                                     -130.159983,
50102                                     55.153713
50103                                 ],
50104                                 [
50105                                     -130.167592,
50106                                     55.129584
50107                                 ],
50108                                 [
50109                                     -130.173695,
50110                                     55.117743
50111                                 ],
50112                                 [
50113                                     -130.200266,
50114                                     55.104153
50115                                 ],
50116                                 [
50117                                     -130.211781,
50118                                     55.084133
50119                                 ],
50120                                 [
50121                                     -130.228871,
50122                                     55.04385
50123                                 ],
50124                                 [
50125                                     -130.238678,
50126                                     55.03441
50127                                 ],
50128                                 [
50129                                     -130.261342,
50130                                     55.022895
50131                                 ],
50132                                 [
50133                                     -130.269846,
50134                                     55.016547
50135                                 ],
50136                                 [
50137                                     -130.275706,
50138                                     55.006985
50139                                 ],
50140                                 [
50141                                     -130.286366,
50142                                     54.983222
50143                                 ],
50144                                 [
50145                                     -130.294342,
50146                                     54.971869
50147                                 ],
50148                                 [
50149                                     -130.326568,
50150                                     54.952094
50151                                 ],
50152                                 [
50153                                     -130.335561,
50154                                     54.938707
50155                                 ],
50156                                 [
50157                                     -130.365387,
50158                                     54.907294
50159                                 ],
50160                                 [
50161                                     -130.385243,
50162                                     54.896552
50163                                 ],
50164                                 [
50165                                     -130.430816,
50166                                     54.881252
50167                                 ],
50168                                 [
50169                                     -130.488759,
50170                                     54.844184
50171                                 ],
50172                                 [
50173                                     -130.580312,
50174                                     54.806383
50175                                 ],
50176                                 [
50177                                     -130.597485,
50178                                     54.803391
50179                                 ],
50180                                 [
50181                                     -130.71074,
50182                                     54.733215
50183                                 ],
50184                                 [
50185                                     -131.160718,
50186                                     54.787192
50187                                 ]
50188                             ]
50189                         ]
50190                     ]
50191                 }
50192             }
50193         ]
50194     },
50195     "featureIcons": {
50196         "circle-stroked": {
50197             "12": [
50198                 42,
50199                 0
50200             ],
50201             "18": [
50202                 24,
50203                 0
50204             ],
50205             "24": [
50206                 0,
50207                 0
50208             ]
50209         },
50210         "circle": {
50211             "12": [
50212                 96,
50213                 0
50214             ],
50215             "18": [
50216                 78,
50217                 0
50218             ],
50219             "24": [
50220                 54,
50221                 0
50222             ]
50223         },
50224         "square-stroked": {
50225             "12": [
50226                 150,
50227                 0
50228             ],
50229             "18": [
50230                 132,
50231                 0
50232             ],
50233             "24": [
50234                 108,
50235                 0
50236             ]
50237         },
50238         "square": {
50239             "12": [
50240                 204,
50241                 0
50242             ],
50243             "18": [
50244                 186,
50245                 0
50246             ],
50247             "24": [
50248                 162,
50249                 0
50250             ]
50251         },
50252         "triangle-stroked": {
50253             "12": [
50254                 258,
50255                 0
50256             ],
50257             "18": [
50258                 240,
50259                 0
50260             ],
50261             "24": [
50262                 216,
50263                 0
50264             ]
50265         },
50266         "triangle": {
50267             "12": [
50268                 42,
50269                 24
50270             ],
50271             "18": [
50272                 24,
50273                 24
50274             ],
50275             "24": [
50276                 0,
50277                 24
50278             ]
50279         },
50280         "star-stroked": {
50281             "12": [
50282                 96,
50283                 24
50284             ],
50285             "18": [
50286                 78,
50287                 24
50288             ],
50289             "24": [
50290                 54,
50291                 24
50292             ]
50293         },
50294         "star": {
50295             "12": [
50296                 150,
50297                 24
50298             ],
50299             "18": [
50300                 132,
50301                 24
50302             ],
50303             "24": [
50304                 108,
50305                 24
50306             ]
50307         },
50308         "cross": {
50309             "12": [
50310                 204,
50311                 24
50312             ],
50313             "18": [
50314                 186,
50315                 24
50316             ],
50317             "24": [
50318                 162,
50319                 24
50320             ]
50321         },
50322         "marker-stroked": {
50323             "12": [
50324                 258,
50325                 24
50326             ],
50327             "18": [
50328                 240,
50329                 24
50330             ],
50331             "24": [
50332                 216,
50333                 24
50334             ]
50335         },
50336         "marker": {
50337             "12": [
50338                 42,
50339                 48
50340             ],
50341             "18": [
50342                 24,
50343                 48
50344             ],
50345             "24": [
50346                 0,
50347                 48
50348             ]
50349         },
50350         "religious-jewish": {
50351             "12": [
50352                 96,
50353                 48
50354             ],
50355             "18": [
50356                 78,
50357                 48
50358             ],
50359             "24": [
50360                 54,
50361                 48
50362             ]
50363         },
50364         "religious-christian": {
50365             "12": [
50366                 150,
50367                 48
50368             ],
50369             "18": [
50370                 132,
50371                 48
50372             ],
50373             "24": [
50374                 108,
50375                 48
50376             ]
50377         },
50378         "religious-muslim": {
50379             "12": [
50380                 204,
50381                 48
50382             ],
50383             "18": [
50384                 186,
50385                 48
50386             ],
50387             "24": [
50388                 162,
50389                 48
50390             ]
50391         },
50392         "cemetery": {
50393             "12": [
50394                 258,
50395                 48
50396             ],
50397             "18": [
50398                 240,
50399                 48
50400             ],
50401             "24": [
50402                 216,
50403                 48
50404             ]
50405         },
50406         "rocket": {
50407             "12": [
50408                 42,
50409                 72
50410             ],
50411             "18": [
50412                 24,
50413                 72
50414             ],
50415             "24": [
50416                 0,
50417                 72
50418             ]
50419         },
50420         "airport": {
50421             "12": [
50422                 96,
50423                 72
50424             ],
50425             "18": [
50426                 78,
50427                 72
50428             ],
50429             "24": [
50430                 54,
50431                 72
50432             ]
50433         },
50434         "heliport": {
50435             "12": [
50436                 150,
50437                 72
50438             ],
50439             "18": [
50440                 132,
50441                 72
50442             ],
50443             "24": [
50444                 108,
50445                 72
50446             ]
50447         },
50448         "rail": {
50449             "12": [
50450                 204,
50451                 72
50452             ],
50453             "18": [
50454                 186,
50455                 72
50456             ],
50457             "24": [
50458                 162,
50459                 72
50460             ]
50461         },
50462         "rail-metro": {
50463             "12": [
50464                 258,
50465                 72
50466             ],
50467             "18": [
50468                 240,
50469                 72
50470             ],
50471             "24": [
50472                 216,
50473                 72
50474             ]
50475         },
50476         "rail-light": {
50477             "12": [
50478                 42,
50479                 96
50480             ],
50481             "18": [
50482                 24,
50483                 96
50484             ],
50485             "24": [
50486                 0,
50487                 96
50488             ]
50489         },
50490         "bus": {
50491             "12": [
50492                 96,
50493                 96
50494             ],
50495             "18": [
50496                 78,
50497                 96
50498             ],
50499             "24": [
50500                 54,
50501                 96
50502             ]
50503         },
50504         "fuel": {
50505             "12": [
50506                 150,
50507                 96
50508             ],
50509             "18": [
50510                 132,
50511                 96
50512             ],
50513             "24": [
50514                 108,
50515                 96
50516             ]
50517         },
50518         "parking": {
50519             "12": [
50520                 204,
50521                 96
50522             ],
50523             "18": [
50524                 186,
50525                 96
50526             ],
50527             "24": [
50528                 162,
50529                 96
50530             ]
50531         },
50532         "parking-garage": {
50533             "12": [
50534                 258,
50535                 96
50536             ],
50537             "18": [
50538                 240,
50539                 96
50540             ],
50541             "24": [
50542                 216,
50543                 96
50544             ]
50545         },
50546         "airfield": {
50547             "12": [
50548                 42,
50549                 120
50550             ],
50551             "18": [
50552                 24,
50553                 120
50554             ],
50555             "24": [
50556                 0,
50557                 120
50558             ]
50559         },
50560         "roadblock": {
50561             "12": [
50562                 96,
50563                 120
50564             ],
50565             "18": [
50566                 78,
50567                 120
50568             ],
50569             "24": [
50570                 54,
50571                 120
50572             ]
50573         },
50574         "ferry": {
50575             "12": [
50576                 150,
50577                 120
50578             ],
50579             "18": [
50580                 132,
50581                 120
50582             ],
50583             "24": [
50584                 108,
50585                 120
50586             ],
50587             "line": [
50588                 2240,
50589                 25
50590             ]
50591         },
50592         "harbor": {
50593             "12": [
50594                 204,
50595                 120
50596             ],
50597             "18": [
50598                 186,
50599                 120
50600             ],
50601             "24": [
50602                 162,
50603                 120
50604             ]
50605         },
50606         "bicycle": {
50607             "12": [
50608                 258,
50609                 120
50610             ],
50611             "18": [
50612                 240,
50613                 120
50614             ],
50615             "24": [
50616                 216,
50617                 120
50618             ]
50619         },
50620         "park": {
50621             "12": [
50622                 42,
50623                 144
50624             ],
50625             "18": [
50626                 24,
50627                 144
50628             ],
50629             "24": [
50630                 0,
50631                 144
50632             ]
50633         },
50634         "park2": {
50635             "12": [
50636                 96,
50637                 144
50638             ],
50639             "18": [
50640                 78,
50641                 144
50642             ],
50643             "24": [
50644                 54,
50645                 144
50646             ]
50647         },
50648         "museum": {
50649             "12": [
50650                 150,
50651                 144
50652             ],
50653             "18": [
50654                 132,
50655                 144
50656             ],
50657             "24": [
50658                 108,
50659                 144
50660             ]
50661         },
50662         "lodging": {
50663             "12": [
50664                 204,
50665                 144
50666             ],
50667             "18": [
50668                 186,
50669                 144
50670             ],
50671             "24": [
50672                 162,
50673                 144
50674             ]
50675         },
50676         "monument": {
50677             "12": [
50678                 258,
50679                 144
50680             ],
50681             "18": [
50682                 240,
50683                 144
50684             ],
50685             "24": [
50686                 216,
50687                 144
50688             ]
50689         },
50690         "zoo": {
50691             "12": [
50692                 42,
50693                 168
50694             ],
50695             "18": [
50696                 24,
50697                 168
50698             ],
50699             "24": [
50700                 0,
50701                 168
50702             ]
50703         },
50704         "garden": {
50705             "12": [
50706                 96,
50707                 168
50708             ],
50709             "18": [
50710                 78,
50711                 168
50712             ],
50713             "24": [
50714                 54,
50715                 168
50716             ]
50717         },
50718         "campsite": {
50719             "12": [
50720                 150,
50721                 168
50722             ],
50723             "18": [
50724                 132,
50725                 168
50726             ],
50727             "24": [
50728                 108,
50729                 168
50730             ]
50731         },
50732         "theatre": {
50733             "12": [
50734                 204,
50735                 168
50736             ],
50737             "18": [
50738                 186,
50739                 168
50740             ],
50741             "24": [
50742                 162,
50743                 168
50744             ]
50745         },
50746         "art-gallery": {
50747             "12": [
50748                 258,
50749                 168
50750             ],
50751             "18": [
50752                 240,
50753                 168
50754             ],
50755             "24": [
50756                 216,
50757                 168
50758             ]
50759         },
50760         "pitch": {
50761             "12": [
50762                 42,
50763                 192
50764             ],
50765             "18": [
50766                 24,
50767                 192
50768             ],
50769             "24": [
50770                 0,
50771                 192
50772             ]
50773         },
50774         "soccer": {
50775             "12": [
50776                 96,
50777                 192
50778             ],
50779             "18": [
50780                 78,
50781                 192
50782             ],
50783             "24": [
50784                 54,
50785                 192
50786             ]
50787         },
50788         "america-football": {
50789             "12": [
50790                 150,
50791                 192
50792             ],
50793             "18": [
50794                 132,
50795                 192
50796             ],
50797             "24": [
50798                 108,
50799                 192
50800             ]
50801         },
50802         "tennis": {
50803             "12": [
50804                 204,
50805                 192
50806             ],
50807             "18": [
50808                 186,
50809                 192
50810             ],
50811             "24": [
50812                 162,
50813                 192
50814             ]
50815         },
50816         "basketball": {
50817             "12": [
50818                 258,
50819                 192
50820             ],
50821             "18": [
50822                 240,
50823                 192
50824             ],
50825             "24": [
50826                 216,
50827                 192
50828             ]
50829         },
50830         "baseball": {
50831             "12": [
50832                 42,
50833                 216
50834             ],
50835             "18": [
50836                 24,
50837                 216
50838             ],
50839             "24": [
50840                 0,
50841                 216
50842             ]
50843         },
50844         "golf": {
50845             "12": [
50846                 96,
50847                 216
50848             ],
50849             "18": [
50850                 78,
50851                 216
50852             ],
50853             "24": [
50854                 54,
50855                 216
50856             ]
50857         },
50858         "swimming": {
50859             "12": [
50860                 150,
50861                 216
50862             ],
50863             "18": [
50864                 132,
50865                 216
50866             ],
50867             "24": [
50868                 108,
50869                 216
50870             ]
50871         },
50872         "cricket": {
50873             "12": [
50874                 204,
50875                 216
50876             ],
50877             "18": [
50878                 186,
50879                 216
50880             ],
50881             "24": [
50882                 162,
50883                 216
50884             ]
50885         },
50886         "skiing": {
50887             "12": [
50888                 258,
50889                 216
50890             ],
50891             "18": [
50892                 240,
50893                 216
50894             ],
50895             "24": [
50896                 216,
50897                 216
50898             ]
50899         },
50900         "school": {
50901             "12": [
50902                 42,
50903                 240
50904             ],
50905             "18": [
50906                 24,
50907                 240
50908             ],
50909             "24": [
50910                 0,
50911                 240
50912             ]
50913         },
50914         "college": {
50915             "12": [
50916                 96,
50917                 240
50918             ],
50919             "18": [
50920                 78,
50921                 240
50922             ],
50923             "24": [
50924                 54,
50925                 240
50926             ]
50927         },
50928         "library": {
50929             "12": [
50930                 150,
50931                 240
50932             ],
50933             "18": [
50934                 132,
50935                 240
50936             ],
50937             "24": [
50938                 108,
50939                 240
50940             ]
50941         },
50942         "post": {
50943             "12": [
50944                 204,
50945                 240
50946             ],
50947             "18": [
50948                 186,
50949                 240
50950             ],
50951             "24": [
50952                 162,
50953                 240
50954             ]
50955         },
50956         "fire-station": {
50957             "12": [
50958                 258,
50959                 240
50960             ],
50961             "18": [
50962                 240,
50963                 240
50964             ],
50965             "24": [
50966                 216,
50967                 240
50968             ]
50969         },
50970         "town-hall": {
50971             "12": [
50972                 42,
50973                 264
50974             ],
50975             "18": [
50976                 24,
50977                 264
50978             ],
50979             "24": [
50980                 0,
50981                 264
50982             ]
50983         },
50984         "police": {
50985             "12": [
50986                 96,
50987                 264
50988             ],
50989             "18": [
50990                 78,
50991                 264
50992             ],
50993             "24": [
50994                 54,
50995                 264
50996             ]
50997         },
50998         "prison": {
50999             "12": [
51000                 150,
51001                 264
51002             ],
51003             "18": [
51004                 132,
51005                 264
51006             ],
51007             "24": [
51008                 108,
51009                 264
51010             ]
51011         },
51012         "embassy": {
51013             "12": [
51014                 204,
51015                 264
51016             ],
51017             "18": [
51018                 186,
51019                 264
51020             ],
51021             "24": [
51022                 162,
51023                 264
51024             ]
51025         },
51026         "beer": {
51027             "12": [
51028                 258,
51029                 264
51030             ],
51031             "18": [
51032                 240,
51033                 264
51034             ],
51035             "24": [
51036                 216,
51037                 264
51038             ]
51039         },
51040         "restaurant": {
51041             "12": [
51042                 42,
51043                 288
51044             ],
51045             "18": [
51046                 24,
51047                 288
51048             ],
51049             "24": [
51050                 0,
51051                 288
51052             ]
51053         },
51054         "cafe": {
51055             "12": [
51056                 96,
51057                 288
51058             ],
51059             "18": [
51060                 78,
51061                 288
51062             ],
51063             "24": [
51064                 54,
51065                 288
51066             ]
51067         },
51068         "shop": {
51069             "12": [
51070                 150,
51071                 288
51072             ],
51073             "18": [
51074                 132,
51075                 288
51076             ],
51077             "24": [
51078                 108,
51079                 288
51080             ]
51081         },
51082         "fast-food": {
51083             "12": [
51084                 204,
51085                 288
51086             ],
51087             "18": [
51088                 186,
51089                 288
51090             ],
51091             "24": [
51092                 162,
51093                 288
51094             ]
51095         },
51096         "bar": {
51097             "12": [
51098                 258,
51099                 288
51100             ],
51101             "18": [
51102                 240,
51103                 288
51104             ],
51105             "24": [
51106                 216,
51107                 288
51108             ]
51109         },
51110         "bank": {
51111             "12": [
51112                 42,
51113                 312
51114             ],
51115             "18": [
51116                 24,
51117                 312
51118             ],
51119             "24": [
51120                 0,
51121                 312
51122             ]
51123         },
51124         "grocery": {
51125             "12": [
51126                 96,
51127                 312
51128             ],
51129             "18": [
51130                 78,
51131                 312
51132             ],
51133             "24": [
51134                 54,
51135                 312
51136             ]
51137         },
51138         "cinema": {
51139             "12": [
51140                 150,
51141                 312
51142             ],
51143             "18": [
51144                 132,
51145                 312
51146             ],
51147             "24": [
51148                 108,
51149                 312
51150             ]
51151         },
51152         "pharmacy": {
51153             "12": [
51154                 204,
51155                 312
51156             ],
51157             "18": [
51158                 186,
51159                 312
51160             ],
51161             "24": [
51162                 162,
51163                 312
51164             ]
51165         },
51166         "hospital": {
51167             "12": [
51168                 258,
51169                 312
51170             ],
51171             "18": [
51172                 240,
51173                 312
51174             ],
51175             "24": [
51176                 216,
51177                 312
51178             ]
51179         },
51180         "danger": {
51181             "12": [
51182                 42,
51183                 336
51184             ],
51185             "18": [
51186                 24,
51187                 336
51188             ],
51189             "24": [
51190                 0,
51191                 336
51192             ]
51193         },
51194         "industrial": {
51195             "12": [
51196                 96,
51197                 336
51198             ],
51199             "18": [
51200                 78,
51201                 336
51202             ],
51203             "24": [
51204                 54,
51205                 336
51206             ]
51207         },
51208         "warehouse": {
51209             "12": [
51210                 150,
51211                 336
51212             ],
51213             "18": [
51214                 132,
51215                 336
51216             ],
51217             "24": [
51218                 108,
51219                 336
51220             ]
51221         },
51222         "commercial": {
51223             "12": [
51224                 204,
51225                 336
51226             ],
51227             "18": [
51228                 186,
51229                 336
51230             ],
51231             "24": [
51232                 162,
51233                 336
51234             ]
51235         },
51236         "building": {
51237             "12": [
51238                 258,
51239                 336
51240             ],
51241             "18": [
51242                 240,
51243                 336
51244             ],
51245             "24": [
51246                 216,
51247                 336
51248             ]
51249         },
51250         "place-of-worship": {
51251             "12": [
51252                 42,
51253                 360
51254             ],
51255             "18": [
51256                 24,
51257                 360
51258             ],
51259             "24": [
51260                 0,
51261                 360
51262             ]
51263         },
51264         "alcohol-shop": {
51265             "12": [
51266                 96,
51267                 360
51268             ],
51269             "18": [
51270                 78,
51271                 360
51272             ],
51273             "24": [
51274                 54,
51275                 360
51276             ]
51277         },
51278         "logging": {
51279             "12": [
51280                 150,
51281                 360
51282             ],
51283             "18": [
51284                 132,
51285                 360
51286             ],
51287             "24": [
51288                 108,
51289                 360
51290             ]
51291         },
51292         "oil-well": {
51293             "12": [
51294                 204,
51295                 360
51296             ],
51297             "18": [
51298                 186,
51299                 360
51300             ],
51301             "24": [
51302                 162,
51303                 360
51304             ]
51305         },
51306         "slaughterhouse": {
51307             "12": [
51308                 258,
51309                 360
51310             ],
51311             "18": [
51312                 240,
51313                 360
51314             ],
51315             "24": [
51316                 216,
51317                 360
51318             ]
51319         },
51320         "dam": {
51321             "12": [
51322                 42,
51323                 384
51324             ],
51325             "18": [
51326                 24,
51327                 384
51328             ],
51329             "24": [
51330                 0,
51331                 384
51332             ]
51333         },
51334         "water": {
51335             "12": [
51336                 96,
51337                 384
51338             ],
51339             "18": [
51340                 78,
51341                 384
51342             ],
51343             "24": [
51344                 54,
51345                 384
51346             ]
51347         },
51348         "wetland": {
51349             "12": [
51350                 150,
51351                 384
51352             ],
51353             "18": [
51354                 132,
51355                 384
51356             ],
51357             "24": [
51358                 108,
51359                 384
51360             ]
51361         },
51362         "disability": {
51363             "12": [
51364                 204,
51365                 384
51366             ],
51367             "18": [
51368                 186,
51369                 384
51370             ],
51371             "24": [
51372                 162,
51373                 384
51374             ]
51375         },
51376         "telephone": {
51377             "12": [
51378                 258,
51379                 384
51380             ],
51381             "18": [
51382                 240,
51383                 384
51384             ],
51385             "24": [
51386                 216,
51387                 384
51388             ]
51389         },
51390         "emergency-telephone": {
51391             "12": [
51392                 42,
51393                 408
51394             ],
51395             "18": [
51396                 24,
51397                 408
51398             ],
51399             "24": [
51400                 0,
51401                 408
51402             ]
51403         },
51404         "toilets": {
51405             "12": [
51406                 96,
51407                 408
51408             ],
51409             "18": [
51410                 78,
51411                 408
51412             ],
51413             "24": [
51414                 54,
51415                 408
51416             ]
51417         },
51418         "waste-basket": {
51419             "12": [
51420                 150,
51421                 408
51422             ],
51423             "18": [
51424                 132,
51425                 408
51426             ],
51427             "24": [
51428                 108,
51429                 408
51430             ]
51431         },
51432         "music": {
51433             "12": [
51434                 204,
51435                 408
51436             ],
51437             "18": [
51438                 186,
51439                 408
51440             ],
51441             "24": [
51442                 162,
51443                 408
51444             ]
51445         },
51446         "land-use": {
51447             "12": [
51448                 258,
51449                 408
51450             ],
51451             "18": [
51452                 240,
51453                 408
51454             ],
51455             "24": [
51456                 216,
51457                 408
51458             ]
51459         },
51460         "city": {
51461             "12": [
51462                 42,
51463                 432
51464             ],
51465             "18": [
51466                 24,
51467                 432
51468             ],
51469             "24": [
51470                 0,
51471                 432
51472             ]
51473         },
51474         "town": {
51475             "12": [
51476                 96,
51477                 432
51478             ],
51479             "18": [
51480                 78,
51481                 432
51482             ],
51483             "24": [
51484                 54,
51485                 432
51486             ]
51487         },
51488         "village": {
51489             "12": [
51490                 150,
51491                 432
51492             ],
51493             "18": [
51494                 132,
51495                 432
51496             ],
51497             "24": [
51498                 108,
51499                 432
51500             ]
51501         },
51502         "farm": {
51503             "12": [
51504                 204,
51505                 432
51506             ],
51507             "18": [
51508                 186,
51509                 432
51510             ],
51511             "24": [
51512                 162,
51513                 432
51514             ]
51515         },
51516         "bakery": {
51517             "12": [
51518                 258,
51519                 432
51520             ],
51521             "18": [
51522                 240,
51523                 432
51524             ],
51525             "24": [
51526                 216,
51527                 432
51528             ]
51529         },
51530         "dog-park": {
51531             "12": [
51532                 42,
51533                 456
51534             ],
51535             "18": [
51536                 24,
51537                 456
51538             ],
51539             "24": [
51540                 0,
51541                 456
51542             ]
51543         },
51544         "lighthouse": {
51545             "12": [
51546                 96,
51547                 456
51548             ],
51549             "18": [
51550                 78,
51551                 456
51552             ],
51553             "24": [
51554                 54,
51555                 456
51556             ]
51557         },
51558         "clothing-store": {
51559             "12": [
51560                 150,
51561                 456
51562             ],
51563             "18": [
51564                 132,
51565                 456
51566             ],
51567             "24": [
51568                 108,
51569                 456
51570             ]
51571         },
51572         "polling-place": {
51573             "12": [
51574                 204,
51575                 456
51576             ],
51577             "18": [
51578                 186,
51579                 456
51580             ],
51581             "24": [
51582                 162,
51583                 456
51584             ]
51585         },
51586         "playground": {
51587             "12": [
51588                 258,
51589                 456
51590             ],
51591             "18": [
51592                 240,
51593                 456
51594             ],
51595             "24": [
51596                 216,
51597                 456
51598             ]
51599         },
51600         "entrance": {
51601             "12": [
51602                 42,
51603                 480
51604             ],
51605             "18": [
51606                 24,
51607                 480
51608             ],
51609             "24": [
51610                 0,
51611                 480
51612             ]
51613         },
51614         "heart": {
51615             "12": [
51616                 96,
51617                 480
51618             ],
51619             "18": [
51620                 78,
51621                 480
51622             ],
51623             "24": [
51624                 54,
51625                 480
51626             ]
51627         },
51628         "london-underground": {
51629             "12": [
51630                 150,
51631                 480
51632             ],
51633             "18": [
51634                 132,
51635                 480
51636             ],
51637             "24": [
51638                 108,
51639                 480
51640             ]
51641         },
51642         "minefield": {
51643             "12": [
51644                 204,
51645                 480
51646             ],
51647             "18": [
51648                 186,
51649                 480
51650             ],
51651             "24": [
51652                 162,
51653                 480
51654             ]
51655         },
51656         "rail-underground": {
51657             "12": [
51658                 258,
51659                 480
51660             ],
51661             "18": [
51662                 240,
51663                 480
51664             ],
51665             "24": [
51666                 216,
51667                 480
51668             ]
51669         },
51670         "rail-above": {
51671             "12": [
51672                 42,
51673                 504
51674             ],
51675             "18": [
51676                 24,
51677                 504
51678             ],
51679             "24": [
51680                 0,
51681                 504
51682             ]
51683         },
51684         "camera": {
51685             "12": [
51686                 96,
51687                 504
51688             ],
51689             "18": [
51690                 78,
51691                 504
51692             ],
51693             "24": [
51694                 54,
51695                 504
51696             ]
51697         },
51698         "laundry": {
51699             "12": [
51700                 150,
51701                 504
51702             ],
51703             "18": [
51704                 132,
51705                 504
51706             ],
51707             "24": [
51708                 108,
51709                 504
51710             ]
51711         },
51712         "car": {
51713             "12": [
51714                 204,
51715                 504
51716             ],
51717             "18": [
51718                 186,
51719                 504
51720             ],
51721             "24": [
51722                 162,
51723                 504
51724             ]
51725         },
51726         "suitcase": {
51727             "12": [
51728                 258,
51729                 504
51730             ],
51731             "18": [
51732                 240,
51733                 504
51734             ],
51735             "24": [
51736                 216,
51737                 504
51738             ]
51739         },
51740         "hairdresser": {
51741             "12": [
51742                 42,
51743                 528
51744             ],
51745             "18": [
51746                 24,
51747                 528
51748             ],
51749             "24": [
51750                 0,
51751                 528
51752             ]
51753         },
51754         "chemist": {
51755             "12": [
51756                 96,
51757                 528
51758             ],
51759             "18": [
51760                 78,
51761                 528
51762             ],
51763             "24": [
51764                 54,
51765                 528
51766             ]
51767         },
51768         "mobilephone": {
51769             "12": [
51770                 150,
51771                 528
51772             ],
51773             "18": [
51774                 132,
51775                 528
51776             ],
51777             "24": [
51778                 108,
51779                 528
51780             ]
51781         },
51782         "scooter": {
51783             "12": [
51784                 204,
51785                 528
51786             ],
51787             "18": [
51788                 186,
51789                 528
51790             ],
51791             "24": [
51792                 162,
51793                 528
51794             ]
51795         },
51796         "gift": {
51797             "12": [
51798                 258,
51799                 528
51800             ],
51801             "18": [
51802                 240,
51803                 528
51804             ],
51805             "24": [
51806                 216,
51807                 528
51808             ]
51809         },
51810         "ice-cream": {
51811             "12": [
51812                 42,
51813                 552
51814             ],
51815             "18": [
51816                 24,
51817                 552
51818             ],
51819             "24": [
51820                 0,
51821                 552
51822             ]
51823         },
51824         "highway-motorway": {
51825             "line": [
51826                 20,
51827                 25
51828             ]
51829         },
51830         "highway-trunk": {
51831             "line": [
51832                 80,
51833                 25
51834             ]
51835         },
51836         "highway-primary": {
51837             "line": [
51838                 140,
51839                 25
51840             ]
51841         },
51842         "highway-secondary": {
51843             "line": [
51844                 200,
51845                 25
51846             ]
51847         },
51848         "highway-tertiary": {
51849             "line": [
51850                 260,
51851                 25
51852             ]
51853         },
51854         "highway-motorway-link": {
51855             "line": [
51856                 320,
51857                 25
51858             ]
51859         },
51860         "highway-trunk-link": {
51861             "line": [
51862                 380,
51863                 25
51864             ]
51865         },
51866         "highway-primary-link": {
51867             "line": [
51868                 440,
51869                 25
51870             ]
51871         },
51872         "highway-secondary-link": {
51873             "line": [
51874                 500,
51875                 25
51876             ]
51877         },
51878         "highway-tertiary-link": {
51879             "line": [
51880                 560,
51881                 25
51882             ]
51883         },
51884         "highway-residential": {
51885             "line": [
51886                 620,
51887                 25
51888             ]
51889         },
51890         "highway-unclassified": {
51891             "line": [
51892                 680,
51893                 25
51894             ]
51895         },
51896         "highway-service": {
51897             "line": [
51898                 740,
51899                 25
51900             ]
51901         },
51902         "highway-road": {
51903             "line": [
51904                 800,
51905                 25
51906             ]
51907         },
51908         "highway-track": {
51909             "line": [
51910                 860,
51911                 25
51912             ]
51913         },
51914         "highway-living-street": {
51915             "line": [
51916                 920,
51917                 25
51918             ]
51919         },
51920         "highway-path": {
51921             "line": [
51922                 980,
51923                 25
51924             ]
51925         },
51926         "highway-cycleway": {
51927             "line": [
51928                 1040,
51929                 25
51930             ]
51931         },
51932         "highway-footway": {
51933             "line": [
51934                 1100,
51935                 25
51936             ]
51937         },
51938         "highway-bridleway": {
51939             "line": [
51940                 1160,
51941                 25
51942             ]
51943         },
51944         "highway-steps": {
51945             "line": [
51946                 1220,
51947                 25
51948             ]
51949         },
51950         "railway-rail": {
51951             "line": [
51952                 1280,
51953                 25
51954             ]
51955         },
51956         "railway-disused": {
51957             "line": [
51958                 1340,
51959                 25
51960             ]
51961         },
51962         "railway-abandoned": {
51963             "line": [
51964                 1400,
51965                 25
51966             ]
51967         },
51968         "railway-subway": {
51969             "line": [
51970                 1460,
51971                 25
51972             ]
51973         },
51974         "railway-light-rail": {
51975             "line": [
51976                 1520,
51977                 25
51978             ]
51979         },
51980         "railway-monorail": {
51981             "line": [
51982                 1580,
51983                 25
51984             ]
51985         },
51986         "waterway-river": {
51987             "line": [
51988                 1640,
51989                 25
51990             ]
51991         },
51992         "waterway-stream": {
51993             "line": [
51994                 1700,
51995                 25
51996             ]
51997         },
51998         "waterway-canal": {
51999             "line": [
52000                 1760,
52001                 25
52002             ]
52003         },
52004         "waterway-ditch": {
52005             "line": [
52006                 1820,
52007                 25
52008             ]
52009         },
52010         "power-line": {
52011             "line": [
52012                 1880,
52013                 25
52014             ]
52015         },
52016         "other-line": {
52017             "line": [
52018                 1940,
52019                 25
52020             ]
52021         },
52022         "category-roads": {
52023             "line": [
52024                 2000,
52025                 25
52026             ]
52027         },
52028         "category-rail": {
52029             "line": [
52030                 2060,
52031                 25
52032             ]
52033         },
52034         "category-path": {
52035             "line": [
52036                 2120,
52037                 25
52038             ]
52039         },
52040         "category-water": {
52041             "line": [
52042                 2180,
52043                 25
52044             ]
52045         },
52046         "pipeline": {
52047             "line": [
52048                 2300,
52049                 25
52050             ]
52051         },
52052         "relation": {
52053             "relation": [
52054                 20,
52055                 25
52056             ]
52057         },
52058         "restriction": {
52059             "relation": [
52060                 80,
52061                 25
52062             ]
52063         },
52064         "multipolygon": {
52065             "relation": [
52066                 141,
52067                 25
52068             ]
52069         },
52070         "boundary": {
52071             "relation": [
52072                 200,
52073                 25
52074             ]
52075         },
52076         "route": {
52077             "relation": [
52078                 260,
52079                 25
52080             ]
52081         },
52082         "route-road": {
52083             "relation": [
52084                 320,
52085                 25
52086             ]
52087         },
52088         "route-bicycle": {
52089             "relation": [
52090                 380,
52091                 25
52092             ]
52093         },
52094         "route-foot": {
52095             "relation": [
52096                 440,
52097                 25
52098             ]
52099         },
52100         "route-bus": {
52101             "relation": [
52102                 500,
52103                 25
52104             ]
52105         },
52106         "route-train": {
52107             "relation": [
52108                 560,
52109                 25
52110             ]
52111         },
52112         "route-detour": {
52113             "relation": [
52114                 620,
52115                 25
52116             ]
52117         },
52118         "route-tram": {
52119             "relation": [
52120                 680,
52121                 25
52122             ]
52123         },
52124         "route-ferry": {
52125             "relation": [
52126                 740,
52127                 25
52128             ]
52129         },
52130         "route-power": {
52131             "relation": [
52132                 800,
52133                 25
52134             ]
52135         },
52136         "route-pipeline": {
52137             "relation": [
52138                 860,
52139                 25
52140             ]
52141         },
52142         "route-master": {
52143             "relation": [
52144                 920,
52145                 25
52146             ]
52147         },
52148         "restriction-no-straight-on": {
52149             "relation": [
52150                 980,
52151                 25
52152             ]
52153         },
52154         "restriction-no-u-turn": {
52155             "relation": [
52156                 1040,
52157                 25
52158             ]
52159         },
52160         "restriction-no-left-turn": {
52161             "relation": [
52162                 1100,
52163                 25
52164             ]
52165         },
52166         "restriction-no-right-turn": {
52167             "relation": [
52168                 1160,
52169                 25
52170             ]
52171         },
52172         "restriction-only-straight-on": {
52173             "relation": [
52174                 1220,
52175                 25
52176             ]
52177         },
52178         "restriction-only-left-turn": {
52179             "relation": [
52180                 1280,
52181                 25
52182             ]
52183         },
52184         "restriction-only-right-turn": {
52185             "relation": [
52186                 1340,
52187                 25
52188             ]
52189         }
52190     },
52191     "operations": {
52192         "icon-operation-delete": [
52193             0,
52194             140
52195         ],
52196         "icon-operation-circularize": [
52197             20,
52198             140
52199         ],
52200         "icon-operation-straighten": [
52201             40,
52202             140
52203         ],
52204         "icon-operation-split": [
52205             60,
52206             140
52207         ],
52208         "icon-operation-disconnect": [
52209             80,
52210             140
52211         ],
52212         "icon-operation-reverse": [
52213             100,
52214             140
52215         ],
52216         "icon-operation-move": [
52217             120,
52218             140
52219         ],
52220         "icon-operation-merge": [
52221             140,
52222             140
52223         ],
52224         "icon-operation-orthogonalize": [
52225             160,
52226             140
52227         ],
52228         "icon-operation-rotate": [
52229             180,
52230             140
52231         ],
52232         "icon-operation-simplify": [
52233             200,
52234             140
52235         ],
52236         "icon-operation-continue": [
52237             220,
52238             140
52239         ],
52240         "icon-operation-disabled-delete": [
52241             0,
52242             160
52243         ],
52244         "icon-operation-disabled-circularize": [
52245             20,
52246             160
52247         ],
52248         "icon-operation-disabled-straighten": [
52249             40,
52250             160
52251         ],
52252         "icon-operation-disabled-split": [
52253             60,
52254             160
52255         ],
52256         "icon-operation-disabled-disconnect": [
52257             80,
52258             160
52259         ],
52260         "icon-operation-disabled-reverse": [
52261             100,
52262             160
52263         ],
52264         "icon-operation-disabled-move": [
52265             120,
52266             160
52267         ],
52268         "icon-operation-disabled-merge": [
52269             140,
52270             160
52271         ],
52272         "icon-operation-disabled-orthogonalize": [
52273             160,
52274             160
52275         ],
52276         "icon-operation-disabled-rotate": [
52277             180,
52278             160
52279         ],
52280         "icon-operation-disabled-simplify": [
52281             200,
52282             160
52283         ],
52284         "icon-operation-disabled-continue": [
52285             220,
52286             160
52287         ],
52288         "icon-restriction-yes": [
52289             50,
52290             80
52291         ],
52292         "icon-restriction-no": [
52293             95,
52294             80
52295         ],
52296         "icon-restriction-only": [
52297             140,
52298             80
52299         ],
52300         "icon-restriction-yes-u": [
52301             185,
52302             80
52303         ],
52304         "icon-restriction-no-u": [
52305             230,
52306             80
52307         ],
52308         "icon-restriction-only-u": [
52309             275,
52310             80
52311         ]
52312     },
52313     "locales": [
52314         "af",
52315         "ar",
52316         "ar-AA",
52317         "hy",
52318         "ast",
52319         "bn",
52320         "bs",
52321         "bg-BG",
52322         "ca",
52323         "zh",
52324         "zh-CN",
52325         "zh-HK",
52326         "zh-TW",
52327         "yue",
52328         "hr",
52329         "cs",
52330         "da",
52331         "nl",
52332         "en-GB",
52333         "eo",
52334         "et",
52335         "fi",
52336         "fr",
52337         "gl",
52338         "de",
52339         "el",
52340         "hi-IN",
52341         "hu",
52342         "is",
52343         "id",
52344         "it",
52345         "ja",
52346         "kn",
52347         "ko",
52348         "ko-KR",
52349         "lv",
52350         "lt",
52351         "no",
52352         "fa",
52353         "pl",
52354         "pt",
52355         "pt-BR",
52356         "ro-RO",
52357         "ru",
52358         "sc",
52359         "sr",
52360         "si",
52361         "sk",
52362         "sl",
52363         "es",
52364         "sv",
52365         "tl",
52366         "ta",
52367         "te",
52368         "tr",
52369         "uk",
52370         "vi"
52371     ],
52372     "en": {
52373         "modes": {
52374             "add_area": {
52375                 "title": "Area",
52376                 "description": "Add parks, buildings, lakes or other areas to the map.",
52377                 "tail": "Click on the map to start drawing an area, like a park, lake, or building."
52378             },
52379             "add_line": {
52380                 "title": "Line",
52381                 "description": "Add highways, streets, pedestrian paths, canals or other lines to the map.",
52382                 "tail": "Click on the map to start drawing a road, path, or route."
52383             },
52384             "add_point": {
52385                 "title": "Point",
52386                 "description": "Add restaurants, monuments, postal boxes or other points to the map.",
52387                 "tail": "Click on the map to add a point."
52388             },
52389             "browse": {
52390                 "title": "Browse",
52391                 "description": "Pan and zoom the map."
52392             },
52393             "draw_area": {
52394                 "tail": "Click to add nodes to your area. Click the first node to finish the area."
52395             },
52396             "draw_line": {
52397                 "tail": "Click to add more nodes to the line. Click on other lines to connect to them, and double-click to end the line."
52398             }
52399         },
52400         "operations": {
52401             "add": {
52402                 "annotation": {
52403                     "point": "Added a point.",
52404                     "vertex": "Added a node to a way.",
52405                     "relation": "Added a relation."
52406                 }
52407             },
52408             "start": {
52409                 "annotation": {
52410                     "line": "Started a line.",
52411                     "area": "Started an area."
52412                 }
52413             },
52414             "continue": {
52415                 "key": "A",
52416                 "title": "Continue",
52417                 "description": "Continue this line.",
52418                 "not_eligible": "No line can be continued here.",
52419                 "multiple": "Several lines can be continued here. To choose a line, press the Shift key and click on it to select it.",
52420                 "annotation": {
52421                     "line": "Continued a line.",
52422                     "area": "Continued an area."
52423                 }
52424             },
52425             "cancel_draw": {
52426                 "annotation": "Canceled drawing."
52427             },
52428             "change_role": {
52429                 "annotation": "Changed the role of a relation member."
52430             },
52431             "change_tags": {
52432                 "annotation": "Changed tags."
52433             },
52434             "circularize": {
52435                 "title": "Circularize",
52436                 "description": {
52437                     "line": "Make this line circular.",
52438                     "area": "Make this area circular."
52439                 },
52440                 "key": "O",
52441                 "annotation": {
52442                     "line": "Made a line circular.",
52443                     "area": "Made an area circular."
52444                 },
52445                 "not_closed": "This can't be made circular because it's not a loop.",
52446                 "too_large": "This can't be made circular because not enough of it is currently visible.",
52447                 "connected_to_hidden": "This can't be made circular because it is connected to a hidden feature."
52448             },
52449             "orthogonalize": {
52450                 "title": "Square",
52451                 "description": {
52452                     "line": "Square the corners of this line.",
52453                     "area": "Square the corners of this area."
52454                 },
52455                 "key": "S",
52456                 "annotation": {
52457                     "line": "Squared the corners of a line.",
52458                     "area": "Squared the corners of an area."
52459                 },
52460                 "not_squarish": "This can't be made square because it is not squarish.",
52461                 "too_large": "This can't be made square because not enough of it is currently visible.",
52462                 "connected_to_hidden": "This can't be made square because it is connected to a hidden feature."
52463             },
52464             "straighten": {
52465                 "title": "Straighten",
52466                 "description": "Straighten this line.",
52467                 "key": "S",
52468                 "annotation": "Straightened a line.",
52469                 "too_bendy": "This can't be straightened because it bends too much.",
52470                 "connected_to_hidden": "This line can't be straightened because it is connected to a hidden feature."
52471             },
52472             "delete": {
52473                 "title": "Delete",
52474                 "description": "Delete object permanently.",
52475                 "annotation": {
52476                     "point": "Deleted a point.",
52477                     "vertex": "Deleted a node from a way.",
52478                     "line": "Deleted a line.",
52479                     "area": "Deleted an area.",
52480                     "relation": "Deleted a relation.",
52481                     "multiple": "Deleted {n} objects."
52482                 },
52483                 "incomplete_relation": "This feature can't be deleted because it hasn't been fully downloaded.",
52484                 "part_of_relation": "This feature can't be deleted because it's part of a larger relation. You must remove it from the relation first.",
52485                 "connected_to_hidden": "This can't be deleted because it is connected to a hidden feature."
52486             },
52487             "add_member": {
52488                 "annotation": "Added a member to a relation."
52489             },
52490             "delete_member": {
52491                 "annotation": "Removed a member from a relation."
52492             },
52493             "connect": {
52494                 "annotation": {
52495                     "point": "Connected a way to a point.",
52496                     "vertex": "Connected a way to another.",
52497                     "line": "Connected a way to a line.",
52498                     "area": "Connected a way to an area."
52499                 }
52500             },
52501             "disconnect": {
52502                 "title": "Disconnect",
52503                 "description": "Disconnect these lines/areas from each other.",
52504                 "key": "D",
52505                 "annotation": "Disconnected lines/areas.",
52506                 "not_connected": "There aren't enough lines/areas here to disconnect.",
52507                 "connected_to_hidden": "This can't be disconnected because it is connected to a hidden feature."
52508             },
52509             "merge": {
52510                 "title": "Merge",
52511                 "description": "Merge these lines.",
52512                 "key": "C",
52513                 "annotation": "Merged {n} lines.",
52514                 "not_eligible": "These features can't be merged.",
52515                 "not_adjacent": "These lines can't be merged because they aren't connected.",
52516                 "restriction": "These lines can't be merged because at least one is a member of a \"{relation}\" relation.",
52517                 "incomplete_relation": "These features can't be merged because at least one hasn't been fully downloaded."
52518             },
52519             "move": {
52520                 "title": "Move",
52521                 "description": "Move this to a different location.",
52522                 "key": "M",
52523                 "annotation": {
52524                     "point": "Moved a point.",
52525                     "vertex": "Moved a node in a way.",
52526                     "line": "Moved a line.",
52527                     "area": "Moved an area.",
52528                     "multiple": "Moved multiple objects."
52529                 },
52530                 "incomplete_relation": "This feature can't be moved because it hasn't been fully downloaded.",
52531                 "too_large": "This can't be moved because not enough of it is currently visible.",
52532                 "connected_to_hidden": "This can't be moved because it is connected to a hidden feature."
52533             },
52534             "rotate": {
52535                 "title": "Rotate",
52536                 "description": "Rotate this object around its center point.",
52537                 "key": "R",
52538                 "annotation": {
52539                     "line": "Rotated a line.",
52540                     "area": "Rotated an area."
52541                 },
52542                 "too_large": "This can't be rotated because not enough of it is currently visible.",
52543                 "connected_to_hidden": "This can't be rotated because it is connected to a hidden feature."
52544             },
52545             "reverse": {
52546                 "title": "Reverse",
52547                 "description": "Make this line go in the opposite direction.",
52548                 "key": "V",
52549                 "annotation": "Reversed a line."
52550             },
52551             "split": {
52552                 "title": "Split",
52553                 "description": {
52554                     "line": "Split this line into two at this node.",
52555                     "area": "Split the boundary of this area into two.",
52556                     "multiple": "Split the lines/area boundaries at this node into two."
52557                 },
52558                 "key": "X",
52559                 "annotation": {
52560                     "line": "Split a line.",
52561                     "area": "Split an area boundary.",
52562                     "multiple": "Split {n} lines/area boundaries."
52563                 },
52564                 "not_eligible": "Lines can't be split at their beginning or end.",
52565                 "multiple_ways": "There are too many lines here to split.",
52566                 "connected_to_hidden": "This can't be split because it is connected to a hidden feature."
52567             },
52568             "restriction": {
52569                 "help": {
52570                     "select": "Click to select a road segment.",
52571                     "toggle": "Click to toggle turn restrictions.",
52572                     "toggle_on": "Click to add a \"{restriction}\" restriction.",
52573                     "toggle_off": "Click to remove the \"{restriction}\" restriction."
52574                 },
52575                 "annotation": {
52576                     "create": "Added a turn restriction",
52577                     "delete": "Deleted a turn restriction"
52578                 }
52579             }
52580         },
52581         "undo": {
52582             "tooltip": "Undo: {action}",
52583             "nothing": "Nothing to undo."
52584         },
52585         "redo": {
52586             "tooltip": "Redo: {action}",
52587             "nothing": "Nothing to redo."
52588         },
52589         "tooltip_keyhint": "Shortcut:",
52590         "browser_notice": "This editor is supported in Firefox, Chrome, Safari, Opera, and Internet Explorer 9 and above. Please upgrade your browser or use Potlatch 2 to edit the map.",
52591         "translate": {
52592             "translate": "Translate",
52593             "localized_translation_label": "Multilingual name",
52594             "localized_translation_language": "Choose language",
52595             "localized_translation_name": "Name"
52596         },
52597         "zoom_in_edit": "Zoom in to Edit",
52598         "logout": "logout",
52599         "loading_auth": "Connecting to OpenStreetMap...",
52600         "report_a_bug": "report a bug",
52601         "feature_info": {
52602             "hidden_warning": "{count} hidden features",
52603             "hidden_details": "These features are currently hidden: {details}"
52604         },
52605         "status": {
52606             "error": "Unable to connect to API.",
52607             "offline": "The API is offline. Please try editing later.",
52608             "readonly": "The API is read-only. You will need to wait to save your changes."
52609         },
52610         "commit": {
52611             "title": "Save Changes",
52612             "description_placeholder": "Brief description of your contributions",
52613             "message_label": "Changeset comment",
52614             "upload_explanation": "The changes you upload will be visible on all maps that use OpenStreetMap data.",
52615             "upload_explanation_with_user": "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
52616             "save": "Save",
52617             "cancel": "Cancel",
52618             "changes": "{count} Changes",
52619             "warnings": "Warnings",
52620             "modified": "Modified",
52621             "deleted": "Deleted",
52622             "created": "Created"
52623         },
52624         "contributors": {
52625             "list": "Edits by {users}",
52626             "truncated_list": "Edits by {users} and {count} others"
52627         },
52628         "infobox": {
52629             "selected": "{n} selected",
52630             "geometry": "Geometry",
52631             "closed": "closed",
52632             "center": "Center",
52633             "perimeter": "Perimeter",
52634             "length": "Length",
52635             "area": "Area",
52636             "centroid": "Centroid",
52637             "location": "Location",
52638             "metric": "Metric",
52639             "imperial": "Imperial"
52640         },
52641         "geometry": {
52642             "point": "point",
52643             "vertex": "vertex",
52644             "line": "line",
52645             "area": "area",
52646             "relation": "relation"
52647         },
52648         "geocoder": {
52649             "search": "Search worldwide...",
52650             "no_results_visible": "No results in visible map area",
52651             "no_results_worldwide": "No results found"
52652         },
52653         "geolocate": {
52654             "title": "Show My Location"
52655         },
52656         "inspector": {
52657             "no_documentation_combination": "There is no documentation available for this tag combination",
52658             "no_documentation_key": "There is no documentation available for this key",
52659             "show_more": "Show More",
52660             "view_on_osm": "View on openstreetmap.org",
52661             "all_tags": "All tags",
52662             "all_members": "All members",
52663             "all_relations": "All relations",
52664             "new_relation": "New relation...",
52665             "role": "Role",
52666             "choose": "Select feature type",
52667             "results": "{n} results for {search}",
52668             "reference": "View on OpenStreetMap Wiki",
52669             "back_tooltip": "Change feature",
52670             "remove": "Remove",
52671             "search": "Search",
52672             "multiselect": "Selected items",
52673             "unknown": "Unknown",
52674             "incomplete": "<not downloaded>",
52675             "feature_list": "Search features",
52676             "edit": "Edit feature",
52677             "check": {
52678                 "yes": "Yes",
52679                 "no": "No"
52680             },
52681             "none": "None",
52682             "node": "Node",
52683             "way": "Way",
52684             "relation": "Relation",
52685             "location": "Location",
52686             "add_fields": "Add field:"
52687         },
52688         "background": {
52689             "title": "Background",
52690             "description": "Background settings",
52691             "percent_brightness": "{opacity}% brightness",
52692             "none": "None",
52693             "custom": "Custom",
52694             "custom_button": "Edit custom background",
52695             "custom_prompt": "Enter a tile URL template. Valid tokens are {z}, {x}, {y} for Z/X/Y scheme and {u} for quadtile scheme.",
52696             "fix_misalignment": "Fix alignment",
52697             "reset": "reset"
52698         },
52699         "map_data": {
52700             "title": "Map Data",
52701             "description": "Map Data",
52702             "data_layers": "Data Layers",
52703             "fill_area": "Fill Areas",
52704             "map_features": "Map Features",
52705             "autohidden": "These features have been automatically hidden because too many would be shown on the screen.  You can zoom in to edit them."
52706         },
52707         "feature": {
52708             "points": {
52709                 "description": "Points",
52710                 "tooltip": "Points of Interest"
52711             },
52712             "major_roads": {
52713                 "description": "Major Roads",
52714                 "tooltip": "Highways, Streets, etc."
52715             },
52716             "minor_roads": {
52717                 "description": "Minor Roads",
52718                 "tooltip": "Service Roads, Parking Aisles, Tracks, etc."
52719             },
52720             "paths": {
52721                 "description": "Paths",
52722                 "tooltip": "Sidewalks, Foot Paths, Cycle Paths, etc."
52723             },
52724             "buildings": {
52725                 "description": "Buildings",
52726                 "tooltip": "Buildings, Shelters, Garages, etc."
52727             },
52728             "landuse": {
52729                 "description": "Landuse Features",
52730                 "tooltip": "Forests, Farmland, Parks, Residential, Commercial, etc."
52731             },
52732             "boundaries": {
52733                 "description": "Boundaries",
52734                 "tooltip": "Administrative Boundaries"
52735             },
52736             "water": {
52737                 "description": "Water Features",
52738                 "tooltip": "Rivers, Lakes, Ponds, Basins, etc."
52739             },
52740             "rail": {
52741                 "description": "Rail Features",
52742                 "tooltip": "Railways"
52743             },
52744             "power": {
52745                 "description": "Power Features",
52746                 "tooltip": "Power Lines, Power Plants, Substations, etc."
52747             },
52748             "past_future": {
52749                 "description": "Past/Future",
52750                 "tooltip": "Proposed, Construction, Abandoned, Demolished, etc."
52751             },
52752             "others": {
52753                 "description": "Others",
52754                 "tooltip": "Everything Else"
52755             }
52756         },
52757         "area_fill": {
52758             "wireframe": {
52759                 "description": "No Fill (Wireframe)",
52760                 "tooltip": "Enabling wireframe mode makes it easy to see the background imagery."
52761             },
52762             "partial": {
52763                 "description": "Partial Fill",
52764                 "tooltip": "Areas are drawn with fill only around their inner edges. (Recommended for beginner mappers)"
52765             },
52766             "full": {
52767                 "description": "Full Fill",
52768                 "tooltip": "Areas are drawn fully filled."
52769             }
52770         },
52771         "restore": {
52772             "heading": "You have unsaved changes",
52773             "description": "Do you wish to restore unsaved changes from a previous editing session?",
52774             "restore": "Restore",
52775             "reset": "Reset"
52776         },
52777         "save": {
52778             "title": "Save",
52779             "help": "Save changes to OpenStreetMap, making them visible to other users.",
52780             "no_changes": "No changes to save.",
52781             "error": "Errors occurred while trying to save",
52782             "status_code": "Server returned status code {code}",
52783             "unknown_error_details": "Please ensure you are connected to the internet.",
52784             "uploading": "Uploading changes to OpenStreetMap.",
52785             "unsaved_changes": "You have unsaved changes",
52786             "conflict": {
52787                 "header": "Resolve conflicting edits",
52788                 "count": "Conflict {num} of {total}",
52789                 "previous": "< Previous",
52790                 "next": "Next >",
52791                 "keep_local": "Keep mine",
52792                 "keep_remote": "Use theirs",
52793                 "restore": "Restore",
52794                 "delete": "Leave Deleted",
52795                 "download_changes": "Or download your changes.",
52796                 "done": "All conflicts resolved!",
52797                 "help": "Another user changed some of the same map features you changed.\nClick on each item below for more details about the conflict, and choose whether to keep\nyour changes or the other user's changes.\n"
52798             }
52799         },
52800         "merge_remote_changes": {
52801             "conflict": {
52802                 "deleted": "This object has been deleted by {user}.",
52803                 "location": "This object was moved by both you and {user}.",
52804                 "nodelist": "Nodes were changed by both you and {user}.",
52805                 "memberlist": "Relation members were changed by both you and {user}.",
52806                 "tags": "You changed the <b>{tag}</b> tag to \"{local}\" and {user} changed it to \"{remote}\"."
52807             }
52808         },
52809         "success": {
52810             "edited_osm": "Edited OSM!",
52811             "just_edited": "You just edited OpenStreetMap!",
52812             "view_on_osm": "View on OSM",
52813             "facebook": "Share on Facebook",
52814             "twitter": "Share on Twitter",
52815             "google": "Share on Google+",
52816             "help_html": "Your changes should appear in the \"Standard\" layer in a few minutes. Other layers, and certain features, may take longer\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>details</a>).\n"
52817         },
52818         "confirm": {
52819             "okay": "Okay",
52820             "cancel": "Cancel"
52821         },
52822         "splash": {
52823             "welcome": "Welcome to the iD OpenStreetMap editor",
52824             "text": "iD is a friendly but powerful tool for contributing to the world's best free world map. This is version {version}. For more information see {website} and report bugs at {github}.",
52825             "walkthrough": "Start the Walkthrough",
52826             "start": "Edit Now"
52827         },
52828         "source_switch": {
52829             "live": "live",
52830             "lose_changes": "You have unsaved changes. Switching the map server will discard them. Are you sure you want to switch servers?",
52831             "dev": "dev"
52832         },
52833         "tag_reference": {
52834             "description": "Description",
52835             "on_wiki": "{tag} on wiki.osm.org",
52836             "used_with": "used with {type}"
52837         },
52838         "validations": {
52839             "untagged_point": "Untagged point",
52840             "untagged_line": "Untagged line",
52841             "untagged_area": "Untagged area",
52842             "many_deletions": "You're deleting {n} objects. Are you sure you want to do this? This will delete them from the map that everyone else sees on openstreetmap.org.",
52843             "tag_suggests_area": "The tag {tag} suggests line should be area, but it is not an area",
52844             "untagged_point_tooltip": "Select a feature type that describes what this point is.",
52845             "untagged_line_tooltip": "Select a feature type that describes what this line is.",
52846             "untagged_area_tooltip": "Select a feature type that describes what this area is.",
52847             "deprecated_tags": "Deprecated tags: {tags}"
52848         },
52849         "zoom": {
52850             "in": "Zoom In",
52851             "out": "Zoom Out"
52852         },
52853         "cannot_zoom": "Cannot zoom out further in current mode.",
52854         "gpx": {
52855             "local_layer": "Local GPX file",
52856             "drag_drop": "Drag and drop a .gpx file on the page, or click the button to the right to browse",
52857             "zoom": "Zoom to GPX track",
52858             "browse": "Browse for a .gpx file"
52859         },
52860         "mapillary": {
52861             "tooltip": "Street-level photos from Mapillary",
52862             "title": "Photo Overlay (Mapillary)",
52863             "view_on_mapillary": "View this image on Mapillary"
52864         },
52865         "help": {
52866             "title": "Help",
52867             "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need to\n[log in](https://www.openstreetmap.org/login).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n",
52868             "editing_saving": "# Editing & Saving\n\nThis editor is designed to work primarily online, and you're accessing\nit through a website right now.\n\n### Selecting Features\n\nTo select a map feature, like a road or point of interest, click\non it on the map. This will highlight the selected feature, open a panel with\ndetails about it, and show a menu of things you can do with the feature.\n\nTo select multiple features, hold down the 'Shift' key. Then either click\non the features you want to select, or drag on the map to draw a rectangle.\nThis will draw a box and select all the points within it.\n\n### Saving Edits\n\nWhen you make changes like editing roads, buildings, and places, these are\nstored locally until you save them to the server. Don't worry if you make\na mistake - you can undo changes by clicking the undo button, and redo\nchanges by clicking the redo button.\n\nClick 'Save' to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n\nIf everything looks good, you can enter a short comment explaining the change\nyou made, and click 'Save' again to post the changes\nto [OpenStreetMap.org](http://www.openstreetmap.org/), where they are visible\nto all other users and available for others to build and improve upon.\n\nIf you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor application will offer to restore your work.\n",
52869             "roads": "# Roads\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycleways, and more - any often-crossed\nsegment should be mappable.\n\n### Selecting\n\nClick on a road to select it. An outline should become visible, along\nwith a small tools menu on the map and a sidebar showing more information\nabout the road.\n\n### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them\nor to a GPS track. You can adjust these roads so they are in the correct\nplace.\n\nFirst click on the road you want to change. This will highlight it and show\ncontrol points along it that you can drag to better locations. If\nyou want to add new control points for more detail, double-click a part\nof the road without a node, and one will be added.\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its control points onto the other road in\norder to join them. Having roads connect is important for the map\nand essential for providing driving directions.\n\nYou can also click the 'Move' tool or press the `M` shortcut key to move the entire road at\none time, and then click again to save that movement.\n\n### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then clicking the\ntrash can icon or pressing the 'Delete' key.\n\n### Creating\n\nFound somewhere there should be a road but there isn't? Click the 'Line'\nicon in the top-left of the editor or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n",
52870             "gps": "# GPS\n\nGPS data is the most trusted source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the 'Map Data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](http://www.openstreetmap.org/trace/create)\nfor other users to use.\n",
52871             "imagery": "# Imagery\n\nAerial imagery is an important resource for mapping. A combination of\nairplane flyovers, satellite views, and freely-compiled sources are available\nin the editor under the 'Background Settings' menu on the right.\n\nBy default a [Bing Maps](http://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources will become available. Some countries, like the United\nStates, France, and Denmark have very high-quality imagery available for some areas.\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings UI.\n",
52872             "addresses": "# Addresses\n\nAddresses are some of the most useful information for the map.\n\nAlthough addresses are often represented as parts of streets, in OpenStreetMap\nthey're recorded as attributes of buildings and places along streets.\n\nYou can add address information to places mapped as building outlines\nas well as those mapped as single points. The optimal source of address\ndata is from an on-the-ground survey or personal knowledge - as with any\nother feature, copying from commercial sources like Google Maps is strictly\nforbidden.\n",
52873             "inspector": "# Using the Inspector\n\nThe inspector is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n\n### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe inspector will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the bottom-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n\n### Using Forms and Editing Tags\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the inspector will display fields with details about\nthe feature like its name and address.\n\nBelow the fields you see, you can click icons to add other details,\nlike [Wikipedia](http://www.wikipedia.org/) information, wheelchair\naccess, and more.\n\nAt the bottom of the inspector, click 'Additional tags' to add arbitrary\nother tags to the element. [Taginfo](http://taginfo.openstreetmap.org/) is a\ngreat resource for learn more about popular tag combinations.\n\nChanges you make in the inspector are automatically applied to the map.\nYou can undo them at any time by clicking the 'Undo' button.\n",
52874             "buildings": "# Buildings\n\nOpenStreetMap is the world's largest database of buildings. You can create\nand improve this database.\n\n### Selecting\n\nYou can select a building by clicking on its border. This will highlight the\nbuilding and open a small tools menu and a sidebar showing more information\nabout the building.\n\n### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\n\nTo move an entire building, select it, then click the 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n\n### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the 'Area' button in the top\nleft of the interface, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn to close the shape.\n\n### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then clicking the\ntrash can icon or pressing the 'Delete' key.\n",
52875             "relations": "# Relations\n\nA relation is a special type of feature in OpenStreetMap that groups together\nother features. For example, two common types of relations are *route relations*,\nwhich group together sections of road that belong to a specific freeway or\nhighway, and *multipolygons*, which group together several lines that define\na complex area (one with several pieces or holes in it like a donut).\n\nThe group of features in a relation are called *members*. In the sidebar, you can\nsee which relations a feature is a member of, and click on a relation there\nto select the it. When the relation is selected, you can see all of its\nmembers listed in the sidebar and highlighted on the map.\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n\n## Editing Relations\n\nIf you want to edit relations, here are the basics.\n\nTo add a feature to a relation, select the feature, click the \"+\" button in the\n\"All relations\" section of the sidebar, and select or type the name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the \"+\" button in the \"All relations\" section, and select \"New relation...\".\n\nTo remove a feature from a relation, select the feature and click the trash\nbutton next to the relation you want to remove it from.\n\nYou can create multipolygons with holes using the \"Merge\" tool. Draw two areas (inner\nand outer), hold the Shift key and click on each of them to select them both, and then\nclick the \"Merge\" (+) button.\n"
52876         },
52877         "intro": {
52878             "navigation": {
52879                 "title": "Navigation",
52880                 "drag": "The main map area shows OpenStreetMap data on top of a background. You can navigate by dragging and scrolling, just like any web map. **Drag the map!**",
52881                 "select": "Map features are represented three ways: using points, lines or areas. All features can be selected by clicking on them. **Click on the point to select it.**",
52882                 "header": "The header shows us the feature type.",
52883                 "pane": "When a feature is selected, the feature editor is displayed. The header shows us the feature type and the main pane shows the feature's attributes, such as its name and address. **Close the feature editor with the close button in the top right.**"
52884             },
52885             "points": {
52886                 "title": "Points",
52887                 "add": "Points can be used to represent features such as shops, restaurants and monuments. They mark a specific location, and describe what's there. **Click the Point button to add a new point.**",
52888                 "place": "The point can be placed by clicking on the map. **Place the point on top of the building.**",
52889                 "search": "There are many different features that can be represented by points. The point you just added is a Cafe. **Search for '{name}'**",
52890                 "choose": "**Choose Cafe from the list.**",
52891                 "describe": "The point is now marked as a cafe. Using the feature editor, we can add more information about the feature. **Add a name**",
52892                 "close": "The feature editor can be closed by clicking on the close button. **Close the feature editor**",
52893                 "reselect": "Often points will already exist, but have mistakes or be incomplete. We can edit existing points. **Select the point you just created.**",
52894                 "fixname": "**Change the name and close the feature editor.**",
52895                 "reselect_delete": "All features on the map can be deleted. **Click on the point you created.**",
52896                 "delete": "The menu around the point contains operations that can be performed on it, including delete. **Delete the point.**"
52897             },
52898             "areas": {
52899                 "title": "Areas",
52900                 "add": "Areas are used to show the boundaries of features like lakes, buildings, and residential areas. They can be also be used for more detailed mapping of many features you might normally map as points. **Click the Area button to add a new area.**",
52901                 "corner": "Areas are drawn by placing nodes that mark the boundary of the area. **Place the starting node on one of the corners of the playground.**",
52902                 "place": "Draw the area by placing more nodes. Finish the area by clicking on the starting node. **Draw an area for the playground.**",
52903                 "search": "**Search for '{name}'.**",
52904                 "choose": "**Choose Playground from the list.**",
52905                 "describe": "**Add a name, and close the feature editor**"
52906             },
52907             "lines": {
52908                 "title": "Lines",
52909                 "add": "Lines are used to represent features such as roads, railroads and rivers. **Click the Line button to add a new line.**",
52910                 "start": "**Start the line by clicking on the end of the road.**",
52911                 "intersect": "Click to add more nodes to the line. You can drag the map while drawing if necessary. Roads, and many other types of lines, are part of a larger network. It is important for these lines to be connected properly in order for routing applications to work. **Click on Flower Street, to create an intersection connecting the two lines.**",
52912                 "finish": "Lines can be finished by clicking on the last node again. **Finish drawing the road.**",
52913                 "road": "**Select Road from the list**",
52914                 "residential": "There are different types of roads, the most common of which is Residential. **Choose the Residential road type**",
52915                 "describe": "**Name the road and close the feature editor.**",
52916                 "restart": "The road needs to intersect Flower Street.",
52917                 "wrong_preset": "You didn't select the Residential road type. **Click here to choose again**"
52918             },
52919             "startediting": {
52920                 "title": "Start Editing",
52921                 "help": "More documentation and this walkthrough are available here.",
52922                 "save": "Don't forget to regularly save your changes!",
52923                 "start": "Start mapping!"
52924             }
52925         },
52926         "presets": {
52927             "categories": {
52928                 "category-building": {
52929                     "name": "Building"
52930                 },
52931                 "category-golf": {
52932                     "name": "Golf"
52933                 },
52934                 "category-landuse": {
52935                     "name": "Land Use"
52936                 },
52937                 "category-path": {
52938                     "name": "Path"
52939                 },
52940                 "category-rail": {
52941                     "name": "Rail"
52942                 },
52943                 "category-restriction": {
52944                     "name": "Restriction"
52945                 },
52946                 "category-road": {
52947                     "name": "Road"
52948                 },
52949                 "category-route": {
52950                     "name": "Route"
52951                 },
52952                 "category-water-area": {
52953                     "name": "Water"
52954                 },
52955                 "category-water-line": {
52956                     "name": "Water"
52957                 }
52958             },
52959             "fields": {
52960                 "access": {
52961                     "label": "Access",
52962                     "placeholder": "Unknown",
52963                     "types": {
52964                         "access": "General",
52965                         "foot": "Foot",
52966                         "motor_vehicle": "Motor Vehicles",
52967                         "bicycle": "Bicycles",
52968                         "horse": "Horses"
52969                     },
52970                     "options": {
52971                         "yes": {
52972                             "title": "Allowed",
52973                             "description": "Access permitted by law; a right of way"
52974                         },
52975                         "no": {
52976                             "title": "Prohibited",
52977                             "description": "Access not permitted to the general public"
52978                         },
52979                         "permissive": {
52980                             "title": "Permissive",
52981                             "description": "Access permitted until such time as the owner revokes the permission"
52982                         },
52983                         "private": {
52984                             "title": "Private",
52985                             "description": "Access permitted only with permission of the owner on an individual basis"
52986                         },
52987                         "designated": {
52988                             "title": "Designated",
52989                             "description": "Access permitted according to signs or specific local laws"
52990                         },
52991                         "destination": {
52992                             "title": "Destination",
52993                             "description": "Access permitted only to reach a destination"
52994                         }
52995                     }
52996                 },
52997                 "access_simple": {
52998                     "label": "Access",
52999                     "placeholder": "yes"
53000                 },
53001                 "access_toilets": {
53002                     "label": "Access"
53003                 },
53004                 "address": {
53005                     "label": "Address",
53006                     "placeholders": {
53007                         "housename": "Housename",
53008                         "housenumber": "123",
53009                         "street": "Street",
53010                         "city": "City",
53011                         "postcode": "Postcode",
53012                         "place": "Place",
53013                         "hamlet": "Hamlet",
53014                         "suburb": "Suburb",
53015                         "subdistrict": "Subdistrict",
53016                         "district": "District",
53017                         "province": "Province",
53018                         "state": "State",
53019                         "country": "Country"
53020                     }
53021                 },
53022                 "admin_level": {
53023                     "label": "Admin Level"
53024                 },
53025                 "aerialway": {
53026                     "label": "Type"
53027                 },
53028                 "aerialway/access": {
53029                     "label": "Access",
53030                     "options": {
53031                         "entry": "Entry",
53032                         "exit": "Exit",
53033                         "both": "Both"
53034                     }
53035                 },
53036                 "aerialway/bubble": {
53037                     "label": "Bubble"
53038                 },
53039                 "aerialway/capacity": {
53040                     "label": "Capacity (per hour)",
53041                     "placeholder": "500, 2500, 5000..."
53042                 },
53043                 "aerialway/duration": {
53044                     "label": "Duration (minutes)",
53045                     "placeholder": "1, 2, 3..."
53046                 },
53047                 "aerialway/heating": {
53048                     "label": "Heated"
53049                 },
53050                 "aerialway/occupancy": {
53051                     "label": "Occupancy",
53052                     "placeholder": "2, 4, 8..."
53053                 },
53054                 "aerialway/summer/access": {
53055                     "label": "Access (summer)",
53056                     "options": {
53057                         "entry": "Entry",
53058                         "exit": "Exit",
53059                         "both": "Both"
53060                     }
53061                 },
53062                 "aeroway": {
53063                     "label": "Type"
53064                 },
53065                 "amenity": {
53066                     "label": "Type"
53067                 },
53068                 "artist": {
53069                     "label": "Artist"
53070                 },
53071                 "artwork_type": {
53072                     "label": "Type"
53073                 },
53074                 "atm": {
53075                     "label": "ATM"
53076                 },
53077                 "backrest": {
53078                     "label": "Backrest"
53079                 },
53080                 "barrier": {
53081                     "label": "Type"
53082                 },
53083                 "bench": {
53084                     "label": "Bench"
53085                 },
53086                 "bicycle_parking": {
53087                     "label": "Type"
53088                 },
53089                 "boundary": {
53090                     "label": "Type"
53091                 },
53092                 "brand": {
53093                     "label": "Brand"
53094                 },
53095                 "building": {
53096                     "label": "Building"
53097                 },
53098                 "building_area": {
53099                     "label": "Building"
53100                 },
53101                 "capacity": {
53102                     "label": "Capacity",
53103                     "placeholder": "50, 100, 200..."
53104                 },
53105                 "cardinal_direction": {
53106                     "label": "Direction",
53107                     "options": {
53108                         "N": "North",
53109                         "E": "East",
53110                         "S": "South",
53111                         "W": "West",
53112                         "NE": "Northeast",
53113                         "SE": "Southeast",
53114                         "SW": "Southwest",
53115                         "NW": "Northwest",
53116                         "NNE": "North-northeast",
53117                         "ENE": "East-northeast",
53118                         "ESE": "East-southeast",
53119                         "SSE": "South-southeast",
53120                         "SSW": "South-southwest",
53121                         "WSW": "West-southwest",
53122                         "WNW": "West-northwest",
53123                         "NNW": "North-northwest"
53124                     }
53125                 },
53126                 "clock_direction": {
53127                     "label": "Direction",
53128                     "options": {
53129                         "clockwise": "Clockwise",
53130                         "anticlockwise": "Counterclockwise"
53131                     }
53132                 },
53133                 "collection_times": {
53134                     "label": "Collection Times"
53135                 },
53136                 "construction": {
53137                     "label": "Type"
53138                 },
53139                 "content": {
53140                     "label": "Contents"
53141                 },
53142                 "country": {
53143                     "label": "Country"
53144                 },
53145                 "covered": {
53146                     "label": "Covered"
53147                 },
53148                 "craft": {
53149                     "label": "Type"
53150                 },
53151                 "crop": {
53152                     "label": "Crop"
53153                 },
53154                 "crossing": {
53155                     "label": "Type"
53156                 },
53157                 "cuisine": {
53158                     "label": "Cuisine"
53159                 },
53160                 "delivery": {
53161                     "label": "Delivery"
53162                 },
53163                 "denomination": {
53164                     "label": "Denomination"
53165                 },
53166                 "denotation": {
53167                     "label": "Denotation"
53168                 },
53169                 "description": {
53170                     "label": "Description"
53171                 },
53172                 "drive_through": {
53173                     "label": "Drive-Through"
53174                 },
53175                 "electrified": {
53176                     "label": "Electrification",
53177                     "placeholder": "Contact Line, Electrified Rail...",
53178                     "options": {
53179                         "contact_line": "Contact Line",
53180                         "rail": "Electrified Rail",
53181                         "yes": "Yes (unspecified)",
53182                         "no": "No"
53183                     }
53184                 },
53185                 "elevation": {
53186                     "label": "Elevation"
53187                 },
53188                 "emergency": {
53189                     "label": "Emergency"
53190                 },
53191                 "entrance": {
53192                     "label": "Type"
53193                 },
53194                 "except": {
53195                     "label": "Exceptions"
53196                 },
53197                 "fax": {
53198                     "label": "Fax",
53199                     "placeholder": "+31 42 123 4567"
53200                 },
53201                 "fee": {
53202                     "label": "Fee"
53203                 },
53204                 "fire_hydrant/type": {
53205                     "label": "Type",
53206                     "options": {
53207                         "pillar": "Pillar/Aboveground",
53208                         "underground": "Underground",
53209                         "wall": "Wall",
53210                         "pond": "Pond"
53211                     }
53212                 },
53213                 "fixme": {
53214                     "label": "Fix Me"
53215                 },
53216                 "fuel": {
53217                     "label": "Fuel"
53218                 },
53219                 "fuel/biodiesel": {
53220                     "label": "Sells Biodiesel"
53221                 },
53222                 "fuel/diesel": {
53223                     "label": "Sells Diesel"
53224                 },
53225                 "fuel/e10": {
53226                     "label": "Sells E10"
53227                 },
53228                 "fuel/e85": {
53229                     "label": "Sells E85"
53230                 },
53231                 "fuel/lpg": {
53232                     "label": "Sells Propane"
53233                 },
53234                 "fuel/octane_100": {
53235                     "label": "Sells Racing Gasoline"
53236                 },
53237                 "fuel/octane_91": {
53238                     "label": "Sells Regular Gasoline"
53239                 },
53240                 "fuel/octane_95": {
53241                     "label": "Sells Midgrade Gasoline"
53242                 },
53243                 "fuel/octane_98": {
53244                     "label": "Sells Premium Gasoline"
53245                 },
53246                 "gauge": {
53247                     "label": "Gauge"
53248                 },
53249                 "gender": {
53250                     "label": "Gender",
53251                     "placeholder": "Unknown",
53252                     "options": {
53253                         "male": "Male",
53254                         "female": "Female",
53255                         "unisex": "Unisex"
53256                     }
53257                 },
53258                 "generator/method": {
53259                     "label": "Method"
53260                 },
53261                 "generator/source": {
53262                     "label": "Source"
53263                 },
53264                 "generator/type": {
53265                     "label": "Type"
53266                 },
53267                 "golf_hole": {
53268                     "label": "Reference",
53269                     "placeholder": "Hole number (1-18)"
53270                 },
53271                 "handicap": {
53272                     "label": "Handicap",
53273                     "placeholder": "1-18"
53274                 },
53275                 "highway": {
53276                     "label": "Type"
53277                 },
53278                 "historic": {
53279                     "label": "Type"
53280                 },
53281                 "hoops": {
53282                     "label": "Hoops",
53283                     "placeholder": "1, 2, 4..."
53284                 },
53285                 "iata": {
53286                     "label": "IATA"
53287                 },
53288                 "icao": {
53289                     "label": "ICAO"
53290                 },
53291                 "incline": {
53292                     "label": "Incline"
53293                 },
53294                 "incline_steps": {
53295                     "label": "Incline",
53296                     "options": {
53297                         "up": "Up",
53298                         "down": "Down"
53299                     }
53300                 },
53301                 "information": {
53302                     "label": "Type"
53303                 },
53304                 "internet_access": {
53305                     "label": "Internet Access",
53306                     "options": {
53307                         "yes": "Yes",
53308                         "no": "No",
53309                         "wlan": "Wifi",
53310                         "wired": "Wired",
53311                         "terminal": "Terminal"
53312                     }
53313                 },
53314                 "lamp_type": {
53315                     "label": "Type"
53316                 },
53317                 "landuse": {
53318                     "label": "Type"
53319                 },
53320                 "lanes": {
53321                     "label": "Lanes",
53322                     "placeholder": "1, 2, 3..."
53323                 },
53324                 "layer": {
53325                     "label": "Layer"
53326                 },
53327                 "leaf_cycle": {
53328                     "label": "Leaf Cycle",
53329                     "options": {
53330                         "evergreen": "Evergreen",
53331                         "deciduous": "Deciduous",
53332                         "semi_evergreen": "Semi-Evergreen",
53333                         "semi_deciduous": "Semi-Deciduous",
53334                         "mixed": "Mixed"
53335                     }
53336                 },
53337                 "leaf_type": {
53338                     "label": "Leaf Type",
53339                     "options": {
53340                         "broadleaved": "Broadleaved",
53341                         "needleleaved": "Needleleaved",
53342                         "mixed": "Mixed",
53343                         "leafless": "Leafless"
53344                     }
53345                 },
53346                 "leisure": {
53347                     "label": "Type"
53348                 },
53349                 "length": {
53350                     "label": "Length (Meters)"
53351                 },
53352                 "levels": {
53353                     "label": "Levels",
53354                     "placeholder": "2, 4, 6..."
53355                 },
53356                 "lit": {
53357                     "label": "Lit"
53358                 },
53359                 "location": {
53360                     "label": "Location"
53361                 },
53362                 "man_made": {
53363                     "label": "Type"
53364                 },
53365                 "maxspeed": {
53366                     "label": "Speed Limit",
53367                     "placeholder": "40, 50, 60..."
53368                 },
53369                 "mtb/scale": {
53370                     "label": "Mountain Biking Difficulty",
53371                     "placeholder": "0, 1, 2, 3...",
53372                     "options": {
53373                         "0": "0: Solid gravel/packed earth, no obstacles, wide curves",
53374                         "1": "1: Some loose surface, small obstacles, wide curves",
53375                         "2": "2: Much loose surface, large obstacles, easy hairpins",
53376                         "3": "3: Slippery surface, large obstacles, tight hairpins",
53377                         "4": "4: Loose surface or boulders, dangerous hairpins",
53378                         "5": "5: Maximum difficulty, boulder fields, landslides",
53379                         "6": "6: Not rideable except by the very best mountain bikers"
53380                     }
53381                 },
53382                 "mtb/scale/imba": {
53383                     "label": "IMBA Trail Difficulty",
53384                     "placeholder": "Easy, Medium, Difficult...",
53385                     "options": {
53386                         "0": "Easiest (white circle)",
53387                         "1": "Easy (green circle)",
53388                         "2": "Medium (blue square)",
53389                         "3": "Difficult (black diamond)",
53390                         "4": "Extremely Difficult (double black diamond)"
53391                     }
53392                 },
53393                 "mtb/scale/uphill": {
53394                     "label": "Mountain Biking Uphill Difficulty",
53395                     "placeholder": "0, 1, 2, 3...",
53396                     "options": {
53397                         "0": "0: Avg. incline <10%, gravel/packed earth, no obstacles",
53398                         "1": "1: Avg. incline <15%, gravel/packed earth, few small objects",
53399                         "2": "2: Avg. incline <20%, stable surface, fistsize rocks/roots",
53400                         "3": "3: Avg. incline <25%, variable surface, fistsize rocks/branches",
53401                         "4": "4: Avg. incline <30%, poor condition, big rocks/branches",
53402                         "5": "5: Very steep, bike generally needs to be pushed or carried"
53403                     }
53404                 },
53405                 "name": {
53406                     "label": "Name",
53407                     "placeholder": "Common name (if any)"
53408                 },
53409                 "natural": {
53410                     "label": "Natural"
53411                 },
53412                 "network": {
53413                     "label": "Network"
53414                 },
53415                 "note": {
53416                     "label": "Note"
53417                 },
53418                 "office": {
53419                     "label": "Type"
53420                 },
53421                 "oneway": {
53422                     "label": "One Way",
53423                     "options": {
53424                         "undefined": "Assumed to be No",
53425                         "yes": "Yes",
53426                         "no": "No"
53427                     }
53428                 },
53429                 "oneway_yes": {
53430                     "label": "One Way",
53431                     "options": {
53432                         "undefined": "Assumed to be Yes",
53433                         "yes": "Yes",
53434                         "no": "No"
53435                     }
53436                 },
53437                 "opening_hours": {
53438                     "label": "Hours"
53439                 },
53440                 "operator": {
53441                     "label": "Operator"
53442                 },
53443                 "par": {
53444                     "label": "Par",
53445                     "placeholder": "3, 4, 5..."
53446                 },
53447                 "park_ride": {
53448                     "label": "Park and Ride"
53449                 },
53450                 "parking": {
53451                     "label": "Type",
53452                     "options": {
53453                         "surface": "Surface",
53454                         "multi-storey": "Multilevel",
53455                         "underground": "Underground",
53456                         "sheds": "Sheds",
53457                         "carports": "Carports",
53458                         "garage_boxes": "Garage Boxes",
53459                         "lane": "Roadside Lane"
53460                     }
53461                 },
53462                 "phone": {
53463                     "label": "Phone",
53464                     "placeholder": "+31 42 123 4567"
53465                 },
53466                 "piste/difficulty": {
53467                     "label": "Difficulty",
53468                     "placeholder": "Easy, Intermediate, Advanced...",
53469                     "options": {
53470                         "novice": "Novice (instructional)",
53471                         "easy": "Easy (green circle)",
53472                         "intermediate": "Intermediate (blue square)",
53473                         "advanced": "Advanced (black diamond)",
53474                         "expert": "Expert (double black diamond)",
53475                         "freeride": "Freeride (off-piste)",
53476                         "extreme": "Extreme (climbing equipment required)"
53477                     }
53478                 },
53479                 "piste/grooming": {
53480                     "label": "Grooming",
53481                     "options": {
53482                         "classic": "Classic",
53483                         "mogul": "Mogul",
53484                         "backcountry": "Backcountry",
53485                         "classic+skating": "Classic and Skating",
53486                         "scooter": "Scooter/Snowmobile",
53487                         "skating": "Skating"
53488                     }
53489                 },
53490                 "piste/type": {
53491                     "label": "Type",
53492                     "options": {
53493                         "downhill": "Downhill",
53494                         "nordic": "Nordic",
53495                         "skitour": "Skitour",
53496                         "sled": "Sled",
53497                         "hike": "Hike",
53498                         "sleigh": "Sleigh",
53499                         "ice_skate": "Ice Skate",
53500                         "snow_park": "Snow Park",
53501                         "playground": "Playground"
53502                     }
53503                 },
53504                 "place": {
53505                     "label": "Type"
53506                 },
53507                 "population": {
53508                     "label": "Population"
53509                 },
53510                 "power": {
53511                     "label": "Type"
53512                 },
53513                 "power_supply": {
53514                     "label": "Power Supply"
53515                 },
53516                 "railway": {
53517                     "label": "Type"
53518                 },
53519                 "recycling/cans": {
53520                     "label": "Accepts Cans"
53521                 },
53522                 "recycling/clothes": {
53523                     "label": "Accepts Clothes"
53524                 },
53525                 "recycling/glass": {
53526                     "label": "Accepts Glass"
53527                 },
53528                 "recycling/paper": {
53529                     "label": "Accepts Paper"
53530                 },
53531                 "ref": {
53532                     "label": "Reference"
53533                 },
53534                 "relation": {
53535                     "label": "Type"
53536                 },
53537                 "religion": {
53538                     "label": "Religion"
53539                 },
53540                 "restriction": {
53541                     "label": "Type"
53542                 },
53543                 "restrictions": {
53544                     "label": "Turn Restrictions"
53545                 },
53546                 "route": {
53547                     "label": "Type"
53548                 },
53549                 "route_master": {
53550                     "label": "Type"
53551                 },
53552                 "sac_scale": {
53553                     "label": "Hiking Difficulty",
53554                     "placeholder": "Mountain Hiking, Alpine Hiking...",
53555                     "options": {
53556                         "hiking": "T1: Hiking",
53557                         "mountain_hiking": "T2: Mountain Hiking",
53558                         "demanding_mountain_hiking": "T3: Demanding Mountain Hiking",
53559                         "alpine_hiking": "T4: Alpine Hiking",
53560                         "demanding_alpine_hiking": "T5: Demanding Alpine Hiking",
53561                         "difficult_alpine_hiking": "T6: Difficult Alpine Hiking"
53562                     }
53563                 },
53564                 "sanitary_dump_station": {
53565                     "label": "Toilet Disposal"
53566                 },
53567                 "seasonal": {
53568                     "label": "Seasonal"
53569                 },
53570                 "service": {
53571                     "label": "Type"
53572                 },
53573                 "service/bicycle/chain_tool": {
53574                     "label": "Chain Tool",
53575                     "options": {
53576                         "undefined": "Assumed to be No",
53577                         "yes": "Yes",
53578                         "no": "No"
53579                     }
53580                 },
53581                 "service/bicycle/pump": {
53582                     "label": "Air Pump",
53583                     "options": {
53584                         "undefined": "Assumed to be No",
53585                         "yes": "Yes",
53586                         "no": "No"
53587                     }
53588                 },
53589                 "service_rail": {
53590                     "label": "Service Type",
53591                     "options": {
53592                         "spur": "Spur",
53593                         "yard": "Yard",
53594                         "siding": "Siding",
53595                         "crossover": "Crossover"
53596                     }
53597                 },
53598                 "shelter": {
53599                     "label": "Shelter"
53600                 },
53601                 "shelter_type": {
53602                     "label": "Type"
53603                 },
53604                 "shop": {
53605                     "label": "Type"
53606                 },
53607                 "sloped_curb": {
53608                     "label": "Sloped Curb"
53609                 },
53610                 "smoking": {
53611                     "label": "Smoking",
53612                     "placeholder": "No, Separated, Yes...",
53613                     "options": {
53614                         "no": "No smoking anywhere",
53615                         "separated": "In smoking areas, not physically isolated",
53616                         "isolated": "In smoking areas, physically isolated",
53617                         "outside": "Allowed outside",
53618                         "yes": "Allowed everywhere",
53619                         "dedicated": "Dedicated to smokers (e.g. smokers' club)"
53620                     }
53621                 },
53622                 "smoothness": {
53623                     "label": "Smoothness",
53624                     "placeholder": "Thin Rollers, Wheels, Off-Road...",
53625                     "options": {
53626                         "excellent": "Thin Rollers: rollerblade, skateboard",
53627                         "good": "Thin Wheels: racing bike",
53628                         "intermediate": "Wheels: city bike, wheelchair, scooter",
53629                         "bad": "Robust Wheels: trekking bike, car, rickshaw",
53630                         "very_bad": "High Clearance: light duty off-road vehicle",
53631                         "horrible": "Off-Road: heavy duty off-road vehicle",
53632                         "very_horrible": "Specialized off-road: tractor, ATV",
53633                         "impassable": "Impassable / No wheeled vehicle"
53634                     }
53635                 },
53636                 "social_facility_for": {
53637                     "label": "People served",
53638                     "placeholder": "Homeless, Disabled, Child, etc"
53639                 },
53640                 "source": {
53641                     "label": "Source"
53642                 },
53643                 "sport": {
53644                     "label": "Sport"
53645                 },
53646                 "sport_ice": {
53647                     "label": "Sport"
53648                 },
53649                 "sport_racing": {
53650                     "label": "Sport"
53651                 },
53652                 "structure": {
53653                     "label": "Structure",
53654                     "placeholder": "Unknown",
53655                     "options": {
53656                         "bridge": "Bridge",
53657                         "tunnel": "Tunnel",
53658                         "embankment": "Embankment",
53659                         "cutting": "Cutting",
53660                         "ford": "Ford"
53661                     }
53662                 },
53663                 "studio_type": {
53664                     "label": "Type"
53665                 },
53666                 "substation": {
53667                     "label": "Type"
53668                 },
53669                 "supervised": {
53670                     "label": "Supervised"
53671                 },
53672                 "surface": {
53673                     "label": "Surface"
53674                 },
53675                 "tactile_paving": {
53676                     "label": "Tactile Paving"
53677                 },
53678                 "takeaway": {
53679                     "label": "Takeaway",
53680                     "placeholder": "Yes, No, Takeaway Only...",
53681                     "options": {
53682                         "yes": "Yes",
53683                         "no": "No",
53684                         "only": "Takeaway Only"
53685                     }
53686                 },
53687                 "toilets/disposal": {
53688                     "label": "Disposal",
53689                     "options": {
53690                         "flush": "Flush",
53691                         "pitlatrine": "Pit/Latrine",
53692                         "chemical": "Chemical",
53693                         "bucket": "Bucket"
53694                     }
53695                 },
53696                 "tourism": {
53697                     "label": "Type"
53698                 },
53699                 "towertype": {
53700                     "label": "Tower type"
53701                 },
53702                 "tracktype": {
53703                     "label": "Track Type",
53704                     "placeholder": "Solid, Mostly Solid, Soft...",
53705                     "options": {
53706                         "grade1": "Solid: paved or heavily compacted hardcore surface",
53707                         "grade2": "Mostly Solid: gravel/rock with some soft material mixed in",
53708                         "grade3": "Even mixture of hard and soft materials",
53709                         "grade4": "Mostly Soft: soil/sand/grass with some hard material mixed in",
53710                         "grade5": "Soft: soil/sand/grass"
53711                     }
53712                 },
53713                 "trail_visibility": {
53714                     "label": "Trail Visibility",
53715                     "placeholder": "Excellent, Good, Bad...",
53716                     "options": {
53717                         "excellent": "Excellent: unambiguous path or markers everywhere",
53718                         "good": "Good: markers visible, sometimes require searching",
53719                         "intermediate": "Intermediate: few markers, path mostly visible",
53720                         "bad": "Bad: no markers, path sometimes invisible/pathless",
53721                         "horrible": "Horrible: often pathless, some orientation skills required",
53722                         "no": "No: pathless, excellent orientation skills required"
53723                     }
53724                 },
53725                 "trees": {
53726                     "label": "Trees"
53727                 },
53728                 "tunnel": {
53729                     "label": "Tunnel"
53730                 },
53731                 "vending": {
53732                     "label": "Type of Goods"
53733                 },
53734                 "water": {
53735                     "label": "Type"
53736                 },
53737                 "water_point": {
53738                     "label": "Water Point"
53739                 },
53740                 "waterway": {
53741                     "label": "Type"
53742                 },
53743                 "website": {
53744                     "label": "Website",
53745                     "placeholder": "http://example.com/"
53746                 },
53747                 "wetland": {
53748                     "label": "Type"
53749                 },
53750                 "wheelchair": {
53751                     "label": "Wheelchair Access"
53752                 },
53753                 "width": {
53754                     "label": "Width (Meters)"
53755                 },
53756                 "wikipedia": {
53757                     "label": "Wikipedia"
53758                 }
53759             },
53760             "presets": {
53761                 "address": {
53762                     "name": "Address",
53763                     "terms": ""
53764                 },
53765                 "aerialway": {
53766                     "name": "Aerialway",
53767                     "terms": "ski lift,funifor,funitel"
53768                 },
53769                 "aerialway/cable_car": {
53770                     "name": "Cable Car",
53771                     "terms": "tramway,ropeway"
53772                 },
53773                 "aerialway/chair_lift": {
53774                     "name": "Chair Lift",
53775                     "terms": ""
53776                 },
53777                 "aerialway/gondola": {
53778                     "name": "Gondola",
53779                     "terms": ""
53780                 },
53781                 "aerialway/magic_carpet": {
53782                     "name": "Magic Carpet Lift",
53783                     "terms": ""
53784                 },
53785                 "aerialway/platter": {
53786                     "name": "Platter Lift",
53787                     "terms": "button lift,poma lift"
53788                 },
53789                 "aerialway/pylon": {
53790                     "name": "Aerialway Pylon",
53791                     "terms": ""
53792                 },
53793                 "aerialway/rope_tow": {
53794                     "name": "Rope Tow Lift",
53795                     "terms": "handle tow,bugel lift"
53796                 },
53797                 "aerialway/station": {
53798                     "name": "Aerialway Station",
53799                     "terms": ""
53800                 },
53801                 "aerialway/t-bar": {
53802                     "name": "T-bar Lift",
53803                     "terms": ""
53804                 },
53805                 "aeroway": {
53806                     "name": "Aeroway",
53807                     "terms": ""
53808                 },
53809                 "aeroway/aerodrome": {
53810                     "name": "Airport",
53811                     "terms": "airplane,airport,aerodrome"
53812                 },
53813                 "aeroway/apron": {
53814                     "name": "Apron",
53815                     "terms": "ramp"
53816                 },
53817                 "aeroway/gate": {
53818                     "name": "Airport gate",
53819                     "terms": ""
53820                 },
53821                 "aeroway/hangar": {
53822                     "name": "Hangar",
53823                     "terms": ""
53824                 },
53825                 "aeroway/helipad": {
53826                     "name": "Helipad",
53827                     "terms": "helicopter,helipad,heliport"
53828                 },
53829                 "aeroway/runway": {
53830                     "name": "Runway",
53831                     "terms": "landing strip"
53832                 },
53833                 "aeroway/taxiway": {
53834                     "name": "Taxiway",
53835                     "terms": ""
53836                 },
53837                 "aeroway/terminal": {
53838                     "name": "Airport terminal",
53839                     "terms": "airport,aerodrome"
53840                 },
53841                 "amenity": {
53842                     "name": "Amenity",
53843                     "terms": ""
53844                 },
53845                 "amenity/arts_centre": {
53846                     "name": "Arts Center",
53847                     "terms": ""
53848                 },
53849                 "amenity/atm": {
53850                     "name": "ATM",
53851                     "terms": "money,cash,machine"
53852                 },
53853                 "amenity/bank": {
53854                     "name": "Bank",
53855                     "terms": "credit union,check,deposit,fund,investment,repository,reserve,safe,savings,stock,treasury,trust,vault"
53856                 },
53857                 "amenity/bar": {
53858                     "name": "Bar",
53859                     "terms": "dive,beer,bier,booze"
53860                 },
53861                 "amenity/bbq": {
53862                     "name": "Barbecue/Grill",
53863                     "terms": "bbq"
53864                 },
53865                 "amenity/bench": {
53866                     "name": "Bench",
53867                     "terms": ""
53868                 },
53869                 "amenity/bicycle_parking": {
53870                     "name": "Bicycle Parking",
53871                     "terms": "bike"
53872                 },
53873                 "amenity/bicycle_rental": {
53874                     "name": "Bicycle Rental",
53875                     "terms": "bike"
53876                 },
53877                 "amenity/bicycle_repair_station": {
53878                     "name": "Bicycle Repair Station",
53879                     "terms": "bike"
53880                 },
53881                 "amenity/biergarten": {
53882                     "name": "Beer Garden",
53883                     "terms": "beer,bier,booze"
53884                 },
53885                 "amenity/boat_rental": {
53886                     "name": "Boat Rental",
53887                     "terms": ""
53888                 },
53889                 "amenity/bureau_de_change": {
53890                     "name": "Currency Exchange",
53891                     "terms": "bureau de change,money changer"
53892                 },
53893                 "amenity/bus_station": {
53894                     "name": "Bus Station",
53895                     "terms": ""
53896                 },
53897                 "amenity/cafe": {
53898                     "name": "Cafe",
53899                     "terms": "coffee,tea"
53900                 },
53901                 "amenity/car_rental": {
53902                     "name": "Car Rental",
53903                     "terms": ""
53904                 },
53905                 "amenity/car_sharing": {
53906                     "name": "Car Sharing",
53907                     "terms": ""
53908                 },
53909                 "amenity/car_wash": {
53910                     "name": "Car Wash",
53911                     "terms": ""
53912                 },
53913                 "amenity/charging_station": {
53914                     "name": "Charging Station",
53915                     "terms": "EV,Electric Vehicle,Supercharger"
53916                 },
53917                 "amenity/childcare": {
53918                     "name": "Nursery/Childcare",
53919                     "terms": "daycare,orphanage,playgroup"
53920                 },
53921                 "amenity/cinema": {
53922                     "name": "Cinema",
53923                     "terms": "drive-in,film,flick,movie,theater,picture,show,screen"
53924                 },
53925                 "amenity/clinic": {
53926                     "name": "Clinic",
53927                     "terms": "medical,urgentcare"
53928                 },
53929                 "amenity/clock": {
53930                     "name": "Clock",
53931                     "terms": ""
53932                 },
53933                 "amenity/college": {
53934                     "name": "College Grounds",
53935                     "terms": "university"
53936                 },
53937                 "amenity/community_centre": {
53938                     "name": "Community Center",
53939                     "terms": "event,hall"
53940                 },
53941                 "amenity/compressed_air": {
53942                     "name": "Compressed Air",
53943                     "terms": ""
53944                 },
53945                 "amenity/courthouse": {
53946                     "name": "Courthouse",
53947                     "terms": ""
53948                 },
53949                 "amenity/dentist": {
53950                     "name": "Dentist",
53951                     "terms": "tooth,teeth"
53952                 },
53953                 "amenity/doctor": {
53954                     "name": "Doctor",
53955                     "terms": "medic*"
53956                 },
53957                 "amenity/dojo": {
53958                     "name": "Dojo / Martial Arts Academy",
53959                     "terms": "martial arts,dojang"
53960                 },
53961                 "amenity/drinking_water": {
53962                     "name": "Drinking Water",
53963                     "terms": "fountain,potable"
53964                 },
53965                 "amenity/embassy": {
53966                     "name": "Embassy",
53967                     "terms": ""
53968                 },
53969                 "amenity/fast_food": {
53970                     "name": "Fast Food",
53971                     "terms": "restaurant"
53972                 },
53973                 "amenity/fire_station": {
53974                     "name": "Fire Station",
53975                     "terms": ""
53976                 },
53977                 "amenity/fountain": {
53978                     "name": "Fountain",
53979                     "terms": ""
53980                 },
53981                 "amenity/fuel": {
53982                     "name": "Gas Station",
53983                     "terms": "petrol,fuel,propane,diesel,lng,cng,biodiesel"
53984                 },
53985                 "amenity/grave_yard": {
53986                     "name": "Graveyard",
53987                     "terms": ""
53988                 },
53989                 "amenity/grit_bin": {
53990                     "name": "Grit Bin",
53991                     "terms": "salt,sand"
53992                 },
53993                 "amenity/hospital": {
53994                     "name": "Hospital Grounds",
53995                     "terms": "clinic,doctor,emergency room,health service,hospice,infirmary,institution,nursing home,sanatorium,sanitarium,sick,surgery,ward"
53996                 },
53997                 "amenity/kindergarten": {
53998                     "name": "Preschool/Kindergarten Grounds",
53999                     "terms": "kindergarden,pre-school"
54000                 },
54001                 "amenity/library": {
54002                     "name": "Library",
54003                     "terms": "book"
54004                 },
54005                 "amenity/marketplace": {
54006                     "name": "Marketplace",
54007                     "terms": ""
54008                 },
54009                 "amenity/nightclub": {
54010                     "name": "Nightclub",
54011                     "terms": "disco*,night club,dancing,dance club"
54012                 },
54013                 "amenity/parking": {
54014                     "name": "Car Parking",
54015                     "terms": ""
54016                 },
54017                 "amenity/parking_entrance": {
54018                     "name": "Parking Garage Entrance/Exit",
54019                     "terms": ""
54020                 },
54021                 "amenity/pharmacy": {
54022                     "name": "Pharmacy",
54023                     "terms": "drug,medicine"
54024                 },
54025                 "amenity/place_of_worship": {
54026                     "name": "Place of Worship",
54027                     "terms": "abbey,basilica,bethel,cathedral,chancel,chantry,chapel,church,fold,house of God,house of prayer,house of worship,minster,mission,mosque,oratory,parish,sacellum,sanctuary,shrine,synagogue,tabernacle,temple"
54028                 },
54029                 "amenity/place_of_worship/buddhist": {
54030                     "name": "Buddhist Temple",
54031                     "terms": "stupa,vihara,monastery,temple,pagoda,zendo,dojo"
54032                 },
54033                 "amenity/place_of_worship/christian": {
54034                     "name": "Church",
54035                     "terms": "christian,abbey,basilica,bethel,cathedral,chancel,chantry,chapel,fold,house of God,house of prayer,house of worship,minster,mission,oratory,parish,sacellum,sanctuary,shrine,tabernacle,temple"
54036                 },
54037                 "amenity/place_of_worship/jewish": {
54038                     "name": "Synagogue",
54039                     "terms": "jewish"
54040                 },
54041                 "amenity/place_of_worship/muslim": {
54042                     "name": "Mosque",
54043                     "terms": "muslim"
54044                 },
54045                 "amenity/police": {
54046                     "name": "Police",
54047                     "terms": "badge,constable,constabulary,cop,detective,fed,law,enforcement,officer,patrol"
54048                 },
54049                 "amenity/post_box": {
54050                     "name": "Mailbox",
54051                     "terms": "letter,post"
54052                 },
54053                 "amenity/post_office": {
54054                     "name": "Post Office",
54055                     "terms": "letter,mail"
54056                 },
54057                 "amenity/pub": {
54058                     "name": "Pub",
54059                     "terms": "dive,beer,bier,booze"
54060                 },
54061                 "amenity/public_bookcase": {
54062                     "name": "Public Bookcase",
54063                     "terms": "library,bookcrossing"
54064                 },
54065                 "amenity/ranger_station": {
54066                     "name": "Ranger Station",
54067                     "terms": "visitor center,visitor centre,permit center,permit centre,backcountry office,warden office,warden center"
54068                 },
54069                 "amenity/recycling": {
54070                     "name": "Recycling",
54071                     "terms": "can,bottle,garbage,scrap,trash"
54072                 },
54073                 "amenity/register_office": {
54074                     "name": "Register Office",
54075                     "terms": ""
54076                 },
54077                 "amenity/restaurant": {
54078                     "name": "Restaurant",
54079                     "terms": "bar,breakfast,cafe,café,canteen,coffee,dine,dining,dinner,drive-in,eat,grill,lunch,table"
54080                 },
54081                 "amenity/sanitary_dump_station": {
54082                     "name": "RV Toilet Disposal",
54083                     "terms": "Motor Home,Camper,Sanitary,Dump Station,Elsan,CDP,CTDP,Chemical Toilet"
54084                 },
54085                 "amenity/school": {
54086                     "name": "School Grounds",
54087                     "terms": "academy,elementary school,middle school,high school"
54088                 },
54089                 "amenity/shelter": {
54090                     "name": "Shelter",
54091                     "terms": "lean-to,gazebo,picnic"
54092                 },
54093                 "amenity/social_facility": {
54094                     "name": "Social Facility",
54095                     "terms": ""
54096                 },
54097                 "amenity/social_facility/food_bank": {
54098                     "name": "Food Bank",
54099                     "terms": ""
54100                 },
54101                 "amenity/social_facility/group_home": {
54102                     "name": "Elderly Group Home",
54103                     "terms": "old,senior,living"
54104                 },
54105                 "amenity/social_facility/homeless_shelter": {
54106                     "name": "Homeless Shelter",
54107                     "terms": "houseless,unhoused,displaced"
54108                 },
54109                 "amenity/studio": {
54110                     "name": "Studio",
54111                     "terms": "recording,radio,television"
54112                 },
54113                 "amenity/swimming_pool": {
54114                     "name": "Swimming Pool",
54115                     "terms": ""
54116                 },
54117                 "amenity/taxi": {
54118                     "name": "Taxi Stand",
54119                     "terms": "cab"
54120                 },
54121                 "amenity/telephone": {
54122                     "name": "Telephone",
54123                     "terms": "phone"
54124                 },
54125                 "amenity/theatre": {
54126                     "name": "Theater",
54127                     "terms": "theatre,performance,play,musical"
54128                 },
54129                 "amenity/toilets": {
54130                     "name": "Toilets",
54131                     "terms": "bathroom,restroom,outhouse,privy,head,lavatory,latrine,water closet,WC,W.C."
54132                 },
54133                 "amenity/townhall": {
54134                     "name": "Town Hall",
54135                     "terms": "village,city,government,courthouse,municipal"
54136                 },
54137                 "amenity/university": {
54138                     "name": "University Grounds",
54139                     "terms": "college"
54140                 },
54141                 "amenity/vending_machine": {
54142                     "name": "Vending Machine",
54143                     "terms": "snack,soda,ticket"
54144                 },
54145                 "amenity/veterinary": {
54146                     "name": "Veterinary",
54147                     "terms": "pet clinic,veterinarian,animal hospital,pet doctor"
54148                 },
54149                 "amenity/waste_basket": {
54150                     "name": "Waste Basket",
54151                     "terms": "rubbish,litter,trash,garbage"
54152                 },
54153                 "area": {
54154                     "name": "Area",
54155                     "terms": ""
54156                 },
54157                 "barrier": {
54158                     "name": "Barrier",
54159                     "terms": ""
54160                 },
54161                 "barrier/block": {
54162                     "name": "Block",
54163                     "terms": ""
54164                 },
54165                 "barrier/bollard": {
54166                     "name": "Bollard",
54167                     "terms": ""
54168                 },
54169                 "barrier/cattle_grid": {
54170                     "name": "Cattle Grid",
54171                     "terms": ""
54172                 },
54173                 "barrier/city_wall": {
54174                     "name": "City Wall",
54175                     "terms": ""
54176                 },
54177                 "barrier/cycle_barrier": {
54178                     "name": "Cycle Barrier",
54179                     "terms": ""
54180                 },
54181                 "barrier/ditch": {
54182                     "name": "Ditch",
54183                     "terms": ""
54184                 },
54185                 "barrier/entrance": {
54186                     "name": "Entrance",
54187                     "terms": ""
54188                 },
54189                 "barrier/fence": {
54190                     "name": "Fence",
54191                     "terms": ""
54192                 },
54193                 "barrier/gate": {
54194                     "name": "Gate",
54195                     "terms": ""
54196                 },
54197                 "barrier/hedge": {
54198                     "name": "Hedge",
54199                     "terms": ""
54200                 },
54201                 "barrier/kissing_gate": {
54202                     "name": "Kissing Gate",
54203                     "terms": ""
54204                 },
54205                 "barrier/lift_gate": {
54206                     "name": "Lift Gate",
54207                     "terms": ""
54208                 },
54209                 "barrier/retaining_wall": {
54210                     "name": "Retaining Wall",
54211                     "terms": ""
54212                 },
54213                 "barrier/stile": {
54214                     "name": "Stile",
54215                     "terms": ""
54216                 },
54217                 "barrier/toll_booth": {
54218                     "name": "Toll Booth",
54219                     "terms": ""
54220                 },
54221                 "barrier/wall": {
54222                     "name": "Wall",
54223                     "terms": ""
54224                 },
54225                 "boundary/administrative": {
54226                     "name": "Administrative Boundary",
54227                     "terms": ""
54228                 },
54229                 "building": {
54230                     "name": "Building",
54231                     "terms": ""
54232                 },
54233                 "building/apartments": {
54234                     "name": "Apartments",
54235                     "terms": ""
54236                 },
54237                 "building/barn": {
54238                     "name": "Barn",
54239                     "terms": ""
54240                 },
54241                 "building/bunker": {
54242                     "name": "Bunker",
54243                     "terms": ""
54244                 },
54245                 "building/cabin": {
54246                     "name": "Cabin",
54247                     "terms": ""
54248                 },
54249                 "building/cathedral": {
54250                     "name": "Cathedral",
54251                     "terms": ""
54252                 },
54253                 "building/chapel": {
54254                     "name": "Chapel",
54255                     "terms": ""
54256                 },
54257                 "building/church": {
54258                     "name": "Church",
54259                     "terms": ""
54260                 },
54261                 "building/college": {
54262                     "name": "College Building",
54263                     "terms": "university"
54264                 },
54265                 "building/commercial": {
54266                     "name": "Commercial Building",
54267                     "terms": ""
54268                 },
54269                 "building/construction": {
54270                     "name": "Building Under Construction",
54271                     "terms": ""
54272                 },
54273                 "building/detached": {
54274                     "name": "Detached Home",
54275                     "terms": ""
54276                 },
54277                 "building/dormitory": {
54278                     "name": "Dormitory",
54279                     "terms": ""
54280                 },
54281                 "building/entrance": {
54282                     "name": "Entrance/Exit",
54283                     "terms": ""
54284                 },
54285                 "building/garage": {
54286                     "name": "Garage",
54287                     "terms": ""
54288                 },
54289                 "building/garages": {
54290                     "name": "Garages",
54291                     "terms": ""
54292                 },
54293                 "building/greenhouse": {
54294                     "name": "Greenhouse",
54295                     "terms": ""
54296                 },
54297                 "building/hospital": {
54298                     "name": "Hospital Building",
54299                     "terms": ""
54300                 },
54301                 "building/hotel": {
54302                     "name": "Hotel Building",
54303                     "terms": ""
54304                 },
54305                 "building/house": {
54306                     "name": "House",
54307                     "terms": ""
54308                 },
54309                 "building/hut": {
54310                     "name": "Hut",
54311                     "terms": ""
54312                 },
54313                 "building/industrial": {
54314                     "name": "Industrial Building",
54315                     "terms": ""
54316                 },
54317                 "building/kindergarten": {
54318                     "name": "Preschool/Kindergarten Building",
54319                     "terms": "kindergarden,pre-school"
54320                 },
54321                 "building/public": {
54322                     "name": "Public Building",
54323                     "terms": ""
54324                 },
54325                 "building/residential": {
54326                     "name": "Residential Building",
54327                     "terms": ""
54328                 },
54329                 "building/retail": {
54330                     "name": "Retail Building",
54331                     "terms": ""
54332                 },
54333                 "building/roof": {
54334                     "name": "Roof",
54335                     "terms": ""
54336                 },
54337                 "building/school": {
54338                     "name": "School Building",
54339                     "terms": "academy,elementary school,middle school,high school"
54340                 },
54341                 "building/shed": {
54342                     "name": "Shed",
54343                     "terms": ""
54344                 },
54345                 "building/stable": {
54346                     "name": "Stable",
54347                     "terms": ""
54348                 },
54349                 "building/static_caravan": {
54350                     "name": "Static Mobile Home",
54351                     "terms": ""
54352                 },
54353                 "building/terrace": {
54354                     "name": "Row Houses",
54355                     "terms": ""
54356                 },
54357                 "building/train_station": {
54358                     "name": "Train Station",
54359                     "terms": ""
54360                 },
54361                 "building/university": {
54362                     "name": "University Building",
54363                     "terms": "college"
54364                 },
54365                 "building/warehouse": {
54366                     "name": "Warehouse",
54367                     "terms": ""
54368                 },
54369                 "craft": {
54370                     "name": "Craft",
54371                     "terms": ""
54372                 },
54373                 "craft/basket_maker": {
54374                     "name": "Basket Maker",
54375                     "terms": ""
54376                 },
54377                 "craft/beekeeper": {
54378                     "name": "Beekeeper",
54379                     "terms": ""
54380                 },
54381                 "craft/blacksmith": {
54382                     "name": "Blacksmith",
54383                     "terms": ""
54384                 },
54385                 "craft/boatbuilder": {
54386                     "name": "Boat Builder",
54387                     "terms": ""
54388                 },
54389                 "craft/bookbinder": {
54390                     "name": "Bookbinder",
54391                     "terms": "book repair"
54392                 },
54393                 "craft/brewery": {
54394                     "name": "Brewery",
54395                     "terms": "beer,bier"
54396                 },
54397                 "craft/carpenter": {
54398                     "name": "Carpenter",
54399                     "terms": "woodworker"
54400                 },
54401                 "craft/carpet_layer": {
54402                     "name": "Carpet Layer",
54403                     "terms": ""
54404                 },
54405                 "craft/caterer": {
54406                     "name": "Caterer",
54407                     "terms": ""
54408                 },
54409                 "craft/clockmaker": {
54410                     "name": "Clockmaker",
54411                     "terms": ""
54412                 },
54413                 "craft/confectionery": {
54414                     "name": "Confectionery",
54415                     "terms": "sweets,candy"
54416                 },
54417                 "craft/dressmaker": {
54418                     "name": "Dressmaker",
54419                     "terms": "seamstress"
54420                 },
54421                 "craft/electrician": {
54422                     "name": "Electrician",
54423                     "terms": "power,wire"
54424                 },
54425                 "craft/gardener": {
54426                     "name": "Gardener",
54427                     "terms": "landscaper,grounds keeper"
54428                 },
54429                 "craft/glaziery": {
54430                     "name": "Glaziery",
54431                     "terms": "glass,stained-glass,window"
54432                 },
54433                 "craft/handicraft": {
54434                     "name": "Handicraft",
54435                     "terms": ""
54436                 },
54437                 "craft/hvac": {
54438                     "name": "HVAC",
54439                     "terms": "heat*,vent*,air conditioning"
54440                 },
54441                 "craft/insulator": {
54442                     "name": "Insulator",
54443                     "terms": ""
54444                 },
54445                 "craft/jeweler": {
54446                     "name": "Jeweler",
54447                     "terms": ""
54448                 },
54449                 "craft/key_cutter": {
54450                     "name": "Key Cutter",
54451                     "terms": ""
54452                 },
54453                 "craft/locksmith": {
54454                     "name": "Locksmith",
54455                     "terms": ""
54456                 },
54457                 "craft/metal_construction": {
54458                     "name": "Metal Construction",
54459                     "terms": ""
54460                 },
54461                 "craft/optician": {
54462                     "name": "Optician",
54463                     "terms": ""
54464                 },
54465                 "craft/painter": {
54466                     "name": "Painter",
54467                     "terms": ""
54468                 },
54469                 "craft/photographer": {
54470                     "name": "Photographer",
54471                     "terms": ""
54472                 },
54473                 "craft/photographic_laboratory": {
54474                     "name": "Photographic Laboratory",
54475                     "terms": "film"
54476                 },
54477                 "craft/plasterer": {
54478                     "name": "Plasterer",
54479                     "terms": ""
54480                 },
54481                 "craft/plumber": {
54482                     "name": "Plumber",
54483                     "terms": "pipe"
54484                 },
54485                 "craft/pottery": {
54486                     "name": "Pottery",
54487                     "terms": "ceramic"
54488                 },
54489                 "craft/rigger": {
54490                     "name": "Rigger",
54491                     "terms": ""
54492                 },
54493                 "craft/roofer": {
54494                     "name": "Roofer",
54495                     "terms": ""
54496                 },
54497                 "craft/saddler": {
54498                     "name": "Saddler",
54499                     "terms": ""
54500                 },
54501                 "craft/sailmaker": {
54502                     "name": "Sailmaker",
54503                     "terms": ""
54504                 },
54505                 "craft/sawmill": {
54506                     "name": "Sawmill",
54507                     "terms": "lumber"
54508                 },
54509                 "craft/scaffolder": {
54510                     "name": "Scaffolder",
54511                     "terms": ""
54512                 },
54513                 "craft/sculpter": {
54514                     "name": "Sculpter",
54515                     "terms": ""
54516                 },
54517                 "craft/shoemaker": {
54518                     "name": "Shoemaker",
54519                     "terms": "cobbler"
54520                 },
54521                 "craft/stonemason": {
54522                     "name": "Stonemason",
54523                     "terms": "masonry"
54524                 },
54525                 "craft/sweep": {
54526                     "name": "Chimney Sweep",
54527                     "terms": ""
54528                 },
54529                 "craft/tailor": {
54530                     "name": "Tailor",
54531                     "terms": "clothes,suit"
54532                 },
54533                 "craft/tiler": {
54534                     "name": "Tiler",
54535                     "terms": ""
54536                 },
54537                 "craft/tinsmith": {
54538                     "name": "Tinsmith",
54539                     "terms": ""
54540                 },
54541                 "craft/upholsterer": {
54542                     "name": "Upholsterer",
54543                     "terms": ""
54544                 },
54545                 "craft/watchmaker": {
54546                     "name": "Watchmaker",
54547                     "terms": ""
54548                 },
54549                 "craft/window_construction": {
54550                     "name": "Window Construction",
54551                     "terms": "glass"
54552                 },
54553                 "craft/winery": {
54554                     "name": "Winery",
54555                     "terms": ""
54556                 },
54557                 "embankment": {
54558                     "name": "Embankment",
54559                     "terms": ""
54560                 },
54561                 "emergency/ambulance_station": {
54562                     "name": "Ambulance Station",
54563                     "terms": "EMS,EMT,rescue"
54564                 },
54565                 "emergency/fire_hydrant": {
54566                     "name": "Fire Hydrant",
54567                     "terms": ""
54568                 },
54569                 "emergency/phone": {
54570                     "name": "Emergency Phone",
54571                     "terms": ""
54572                 },
54573                 "entrance": {
54574                     "name": "Entrance/Exit",
54575                     "terms": ""
54576                 },
54577                 "footway/crossing": {
54578                     "name": "Crossing",
54579                     "terms": ""
54580                 },
54581                 "footway/crosswalk": {
54582                     "name": "Crosswalk",
54583                     "terms": "zebra crossing"
54584                 },
54585                 "footway/sidewalk": {
54586                     "name": "Sidewalk",
54587                     "terms": ""
54588                 },
54589                 "ford": {
54590                     "name": "Ford",
54591                     "terms": ""
54592                 },
54593                 "golf/bunker": {
54594                     "name": "Sand Trap",
54595                     "terms": "hazard,bunker"
54596                 },
54597                 "golf/fairway": {
54598                     "name": "Fairway",
54599                     "terms": ""
54600                 },
54601                 "golf/green": {
54602                     "name": "Putting Green",
54603                     "terms": ""
54604                 },
54605                 "golf/hole": {
54606                     "name": "Golf Hole",
54607                     "terms": ""
54608                 },
54609                 "golf/lateral_water_hazard": {
54610                     "name": "Lateral Water Hazard",
54611                     "terms": ""
54612                 },
54613                 "golf/rough": {
54614                     "name": "Rough",
54615                     "terms": ""
54616                 },
54617                 "golf/tee": {
54618                     "name": "Tee Box",
54619                     "terms": "teeing ground"
54620                 },
54621                 "golf/water_hazard": {
54622                     "name": "Water Hazard",
54623                     "terms": ""
54624                 },
54625                 "highway": {
54626                     "name": "Highway",
54627                     "terms": ""
54628                 },
54629                 "highway/bridleway": {
54630                     "name": "Bridle Path",
54631                     "terms": "bridleway,equestrian,horse"
54632                 },
54633                 "highway/bus_stop": {
54634                     "name": "Bus Stop",
54635                     "terms": ""
54636                 },
54637                 "highway/crossing": {
54638                     "name": "Crossing",
54639                     "terms": ""
54640                 },
54641                 "highway/crosswalk": {
54642                     "name": "Crosswalk",
54643                     "terms": "zebra crossing"
54644                 },
54645                 "highway/cycleway": {
54646                     "name": "Cycle Path",
54647                     "terms": "bike"
54648                 },
54649                 "highway/footway": {
54650                     "name": "Foot Path",
54651                     "terms": "hike,hiking,trackway,trail,walk"
54652                 },
54653                 "highway/living_street": {
54654                     "name": "Living Street",
54655                     "terms": ""
54656                 },
54657                 "highway/mini_roundabout": {
54658                     "name": "Mini-Roundabout",
54659                     "terms": ""
54660                 },
54661                 "highway/motorway": {
54662                     "name": "Motorway",
54663                     "terms": ""
54664                 },
54665                 "highway/motorway_junction": {
54666                     "name": "Motorway Junction / Exit",
54667                     "terms": ""
54668                 },
54669                 "highway/motorway_link": {
54670                     "name": "Motorway Link",
54671                     "terms": "ramp,on ramp,off ramp"
54672                 },
54673                 "highway/path": {
54674                     "name": "Path",
54675                     "terms": "hike,hiking,trackway,trail,walk"
54676                 },
54677                 "highway/pedestrian": {
54678                     "name": "Pedestrian",
54679                     "terms": ""
54680                 },
54681                 "highway/primary": {
54682                     "name": "Primary Road",
54683                     "terms": ""
54684                 },
54685                 "highway/primary_link": {
54686                     "name": "Primary Link",
54687                     "terms": "ramp,on ramp,off ramp"
54688                 },
54689                 "highway/raceway": {
54690                     "name": "Motor Raceway",
54691                     "terms": "auto*,race*,nascar"
54692                 },
54693                 "highway/residential": {
54694                     "name": "Residential Road",
54695                     "terms": ""
54696                 },
54697                 "highway/rest_area": {
54698                     "name": "Rest Area",
54699                     "terms": "rest stop"
54700                 },
54701                 "highway/road": {
54702                     "name": "Unknown Road",
54703                     "terms": ""
54704                 },
54705                 "highway/secondary": {
54706                     "name": "Secondary Road",
54707                     "terms": ""
54708                 },
54709                 "highway/secondary_link": {
54710                     "name": "Secondary Link",
54711                     "terms": "ramp,on ramp,off ramp"
54712                 },
54713                 "highway/service": {
54714                     "name": "Service Road",
54715                     "terms": ""
54716                 },
54717                 "highway/service/alley": {
54718                     "name": "Alley",
54719                     "terms": ""
54720                 },
54721                 "highway/service/drive-through": {
54722                     "name": "Drive-Through",
54723                     "terms": ""
54724                 },
54725                 "highway/service/driveway": {
54726                     "name": "Driveway",
54727                     "terms": ""
54728                 },
54729                 "highway/service/emergency_access": {
54730                     "name": "Emergency Access",
54731                     "terms": ""
54732                 },
54733                 "highway/service/parking_aisle": {
54734                     "name": "Parking Aisle",
54735                     "terms": ""
54736                 },
54737                 "highway/services": {
54738                     "name": "Service Area",
54739                     "terms": "services,travel plaza,service station"
54740                 },
54741                 "highway/steps": {
54742                     "name": "Steps",
54743                     "terms": "stairs,staircase"
54744                 },
54745                 "highway/stop": {
54746                     "name": "Stop Sign",
54747                     "terms": "stop sign"
54748                 },
54749                 "highway/street_lamp": {
54750                     "name": "Street Lamp",
54751                     "terms": "streetlight,street light,lamp,light,gaslight"
54752                 },
54753                 "highway/tertiary": {
54754                     "name": "Tertiary Road",
54755                     "terms": ""
54756                 },
54757                 "highway/tertiary_link": {
54758                     "name": "Tertiary Link",
54759                     "terms": "ramp,on ramp,off ramp"
54760                 },
54761                 "highway/track": {
54762                     "name": "Track",
54763                     "terms": "woods road,fire road"
54764                 },
54765                 "highway/traffic_signals": {
54766                     "name": "Traffic Signals",
54767                     "terms": "light,stoplight,traffic light"
54768                 },
54769                 "highway/trunk": {
54770                     "name": "Trunk Road",
54771                     "terms": ""
54772                 },
54773                 "highway/trunk_link": {
54774                     "name": "Trunk Link",
54775                     "terms": "ramp,on ramp,off ramp"
54776                 },
54777                 "highway/turning_circle": {
54778                     "name": "Turning Circle",
54779                     "terms": "cul-de-sac"
54780                 },
54781                 "highway/unclassified": {
54782                     "name": "Unclassified Road",
54783                     "terms": ""
54784                 },
54785                 "historic": {
54786                     "name": "Historic Site",
54787                     "terms": ""
54788                 },
54789                 "historic/archaeological_site": {
54790                     "name": "Archaeological Site",
54791                     "terms": ""
54792                 },
54793                 "historic/boundary_stone": {
54794                     "name": "Boundary Stone",
54795                     "terms": ""
54796                 },
54797                 "historic/castle": {
54798                     "name": "Castle",
54799                     "terms": ""
54800                 },
54801                 "historic/memorial": {
54802                     "name": "Memorial",
54803                     "terms": ""
54804                 },
54805                 "historic/monument": {
54806                     "name": "Monument",
54807                     "terms": ""
54808                 },
54809                 "historic/ruins": {
54810                     "name": "Ruins",
54811                     "terms": ""
54812                 },
54813                 "historic/wayside_cross": {
54814                     "name": "Wayside Cross",
54815                     "terms": ""
54816                 },
54817                 "historic/wayside_shrine": {
54818                     "name": "Wayside Shrine",
54819                     "terms": ""
54820                 },
54821                 "junction": {
54822                     "name": "Junction",
54823                     "terms": ""
54824                 },
54825                 "landuse": {
54826                     "name": "Landuse",
54827                     "terms": ""
54828                 },
54829                 "landuse/allotments": {
54830                     "name": "Allotments",
54831                     "terms": ""
54832                 },
54833                 "landuse/basin": {
54834                     "name": "Basin",
54835                     "terms": ""
54836                 },
54837                 "landuse/cemetery": {
54838                     "name": "Cemetery",
54839                     "terms": ""
54840                 },
54841                 "landuse/churchyard": {
54842                     "name": "Churchyard",
54843                     "terms": ""
54844                 },
54845                 "landuse/commercial": {
54846                     "name": "Commercial Area",
54847                     "terms": ""
54848                 },
54849                 "landuse/construction": {
54850                     "name": "Construction",
54851                     "terms": ""
54852                 },
54853                 "landuse/farm": {
54854                     "name": "Farmland",
54855                     "terms": ""
54856                 },
54857                 "landuse/farmland": {
54858                     "name": "Farmland",
54859                     "terms": ""
54860                 },
54861                 "landuse/farmyard": {
54862                     "name": "Farmyard",
54863                     "terms": ""
54864                 },
54865                 "landuse/forest": {
54866                     "name": "Forest",
54867                     "terms": "tree"
54868                 },
54869                 "landuse/garages": {
54870                     "name": "Garages",
54871                     "terms": ""
54872                 },
54873                 "landuse/grass": {
54874                     "name": "Grass",
54875                     "terms": ""
54876                 },
54877                 "landuse/industrial": {
54878                     "name": "Industrial Area",
54879                     "terms": ""
54880                 },
54881                 "landuse/landfill": {
54882                     "name": "Landfill",
54883                     "terms": "dump"
54884                 },
54885                 "landuse/meadow": {
54886                     "name": "Meadow",
54887                     "terms": ""
54888                 },
54889                 "landuse/military": {
54890                     "name": "Military Area",
54891                     "terms": ""
54892                 },
54893                 "landuse/orchard": {
54894                     "name": "Orchard",
54895                     "terms": ""
54896                 },
54897                 "landuse/quarry": {
54898                     "name": "Quarry",
54899                     "terms": ""
54900                 },
54901                 "landuse/residential": {
54902                     "name": "Residential Area",
54903                     "terms": ""
54904                 },
54905                 "landuse/retail": {
54906                     "name": "Retail Area",
54907                     "terms": ""
54908                 },
54909                 "landuse/vineyard": {
54910                     "name": "Vineyard",
54911                     "terms": ""
54912                 },
54913                 "leisure": {
54914                     "name": "Leisure",
54915                     "terms": ""
54916                 },
54917                 "leisure/common": {
54918                     "name": "Common",
54919                     "terms": "open space"
54920                 },
54921                 "leisure/dog_park": {
54922                     "name": "Dog Park",
54923                     "terms": ""
54924                 },
54925                 "leisure/firepit": {
54926                     "name": "Firepit",
54927                     "terms": "fireplace,campfire"
54928                 },
54929                 "leisure/garden": {
54930                     "name": "Garden",
54931                     "terms": ""
54932                 },
54933                 "leisure/golf_course": {
54934                     "name": "Golf Course",
54935                     "terms": "links"
54936                 },
54937                 "leisure/ice_rink": {
54938                     "name": "Ice Rink",
54939                     "terms": "hockey,skating,curling"
54940                 },
54941                 "leisure/marina": {
54942                     "name": "Marina",
54943                     "terms": "boat"
54944                 },
54945                 "leisure/nature_reserve": {
54946                     "name": "Nature Reserve",
54947                     "terms": "protected,wildlife"
54948                 },
54949                 "leisure/park": {
54950                     "name": "Park",
54951                     "terms": "esplanade,estate,forest,garden,grass,green,grounds,lawn,lot,meadow,parkland,place,playground,plaza,pleasure garden,recreation area,square,tract,village green,woodland"
54952                 },
54953                 "leisure/picnic_table": {
54954                     "name": "Picnic Table",
54955                     "terms": "bench"
54956                 },
54957                 "leisure/pitch": {
54958                     "name": "Sport Pitch",
54959                     "terms": "field"
54960                 },
54961                 "leisure/pitch/american_football": {
54962                     "name": "American Football Field",
54963                     "terms": ""
54964                 },
54965                 "leisure/pitch/baseball": {
54966                     "name": "Baseball Diamond",
54967                     "terms": ""
54968                 },
54969                 "leisure/pitch/basketball": {
54970                     "name": "Basketball Court",
54971                     "terms": ""
54972                 },
54973                 "leisure/pitch/skateboard": {
54974                     "name": "Skate Park",
54975                     "terms": ""
54976                 },
54977                 "leisure/pitch/soccer": {
54978                     "name": "Soccer Field",
54979                     "terms": ""
54980                 },
54981                 "leisure/pitch/tennis": {
54982                     "name": "Tennis Court",
54983                     "terms": ""
54984                 },
54985                 "leisure/pitch/volleyball": {
54986                     "name": "Volleyball Court",
54987                     "terms": ""
54988                 },
54989                 "leisure/playground": {
54990                     "name": "Playground",
54991                     "terms": "jungle gym,play area"
54992                 },
54993                 "leisure/running_track": {
54994                     "name": "Running Track",
54995                     "terms": ""
54996                 },
54997                 "leisure/slipway": {
54998                     "name": "Slipway",
54999                     "terms": "boat launch,boat ramp"
55000                 },
55001                 "leisure/sports_center": {
55002                     "name": "Sports Center / Gym",
55003                     "terms": "gym"
55004                 },
55005                 "leisure/stadium": {
55006                     "name": "Stadium",
55007                     "terms": ""
55008                 },
55009                 "leisure/swimming_pool": {
55010                     "name": "Swimming Pool",
55011                     "terms": ""
55012                 },
55013                 "leisure/track": {
55014                     "name": "Racetrack (non-Motorsport)",
55015                     "terms": ""
55016                 },
55017                 "line": {
55018                     "name": "Line",
55019                     "terms": ""
55020                 },
55021                 "man_made": {
55022                     "name": "Man Made",
55023                     "terms": ""
55024                 },
55025                 "man_made/breakwater": {
55026                     "name": "Breakwater",
55027                     "terms": ""
55028                 },
55029                 "man_made/cutline": {
55030                     "name": "Cut line",
55031                     "terms": ""
55032                 },
55033                 "man_made/embankment": {
55034                     "name": "Embankment",
55035                     "terms": ""
55036                 },
55037                 "man_made/flagpole": {
55038                     "name": "Flagpole",
55039                     "terms": ""
55040                 },
55041                 "man_made/lighthouse": {
55042                     "name": "Lighthouse",
55043                     "terms": ""
55044                 },
55045                 "man_made/mast": {
55046                     "name": "Radio Mast",
55047                     "terms": "broadcast tower,cell phone tower,cell tower,guyed tower,mobile phone tower,radio tower,television tower,transmission mast,transmission tower,tv tower"
55048                 },
55049                 "man_made/observation": {
55050                     "name": "Observation Tower",
55051                     "terms": "lookout tower,fire tower"
55052                 },
55053                 "man_made/petroleum_well": {
55054                     "name": "Oil Well",
55055                     "terms": "drilling rig,oil derrick,oil drill,oil horse,oil rig,oil pump,petroleum well,pumpjack"
55056                 },
55057                 "man_made/pier": {
55058                     "name": "Pier",
55059                     "terms": ""
55060                 },
55061                 "man_made/pipeline": {
55062                     "name": "Pipeline",
55063                     "terms": ""
55064                 },
55065                 "man_made/silo": {
55066                     "name": "Silo",
55067                     "terms": "grain,corn,wheat"
55068                 },
55069                 "man_made/storage_tank": {
55070                     "name": "Storage Tank",
55071                     "terms": "water,oil,gas,petrol"
55072                 },
55073                 "man_made/survey_point": {
55074                     "name": "Survey Point",
55075                     "terms": ""
55076                 },
55077                 "man_made/tower": {
55078                     "name": "Tower",
55079                     "terms": ""
55080                 },
55081                 "man_made/wastewater_plant": {
55082                     "name": "Wastewater Plant",
55083                     "terms": "sewage*,water treatment plant,reclamation plant"
55084                 },
55085                 "man_made/water_tower": {
55086                     "name": "Water Tower",
55087                     "terms": ""
55088                 },
55089                 "man_made/water_well": {
55090                     "name": "Water Well",
55091                     "terms": ""
55092                 },
55093                 "man_made/water_works": {
55094                     "name": "Water Works",
55095                     "terms": ""
55096                 },
55097                 "military/airfield": {
55098                     "name": "Airfield",
55099                     "terms": ""
55100                 },
55101                 "military/barracks": {
55102                     "name": "Barracks",
55103                     "terms": ""
55104                 },
55105                 "military/bunker": {
55106                     "name": "Bunker",
55107                     "terms": ""
55108                 },
55109                 "military/range": {
55110                     "name": "Military Range",
55111                     "terms": ""
55112                 },
55113                 "natural": {
55114                     "name": "Natural",
55115                     "terms": ""
55116                 },
55117                 "natural/bay": {
55118                     "name": "Bay",
55119                     "terms": ""
55120                 },
55121                 "natural/beach": {
55122                     "name": "Beach",
55123                     "terms": ""
55124                 },
55125                 "natural/cave_entrance": {
55126                     "name": "Cave Entrance",
55127                     "terms": ""
55128                 },
55129                 "natural/cliff": {
55130                     "name": "Cliff",
55131                     "terms": ""
55132                 },
55133                 "natural/coastline": {
55134                     "name": "Coastline",
55135                     "terms": "shore"
55136                 },
55137                 "natural/fell": {
55138                     "name": "Fell",
55139                     "terms": ""
55140                 },
55141                 "natural/glacier": {
55142                     "name": "Glacier",
55143                     "terms": ""
55144                 },
55145                 "natural/grassland": {
55146                     "name": "Grassland",
55147                     "terms": ""
55148                 },
55149                 "natural/heath": {
55150                     "name": "Heath",
55151                     "terms": ""
55152                 },
55153                 "natural/peak": {
55154                     "name": "Peak",
55155                     "terms": "acme,aiguille,alp,climax,crest,crown,hill,mount,mountain,pinnacle,summit,tip,top"
55156                 },
55157                 "natural/scree": {
55158                     "name": "Scree",
55159                     "terms": "loose rocks"
55160                 },
55161                 "natural/scrub": {
55162                     "name": "Scrub",
55163                     "terms": ""
55164                 },
55165                 "natural/spring": {
55166                     "name": "Spring",
55167                     "terms": ""
55168                 },
55169                 "natural/tree": {
55170                     "name": "Tree",
55171                     "terms": ""
55172                 },
55173                 "natural/water": {
55174                     "name": "Water",
55175                     "terms": ""
55176                 },
55177                 "natural/water/lake": {
55178                     "name": "Lake",
55179                     "terms": "lakelet,loch,mere"
55180                 },
55181                 "natural/water/pond": {
55182                     "name": "Pond",
55183                     "terms": "lakelet,millpond,tarn,pool,mere"
55184                 },
55185                 "natural/water/reservoir": {
55186                     "name": "Reservoir",
55187                     "terms": ""
55188                 },
55189                 "natural/wetland": {
55190                     "name": "Wetland",
55191                     "terms": ""
55192                 },
55193                 "natural/wood": {
55194                     "name": "Wood",
55195                     "terms": "tree"
55196                 },
55197                 "office": {
55198                     "name": "Office",
55199                     "terms": ""
55200                 },
55201                 "office/accountant": {
55202                     "name": "Accountant",
55203                     "terms": ""
55204                 },
55205                 "office/administrative": {
55206                     "name": "Administrative Office",
55207                     "terms": ""
55208                 },
55209                 "office/architect": {
55210                     "name": "Architect",
55211                     "terms": ""
55212                 },
55213                 "office/company": {
55214                     "name": "Company Office",
55215                     "terms": ""
55216                 },
55217                 "office/educational_institution": {
55218                     "name": "Educational Institution",
55219                     "terms": ""
55220                 },
55221                 "office/employment_agency": {
55222                     "name": "Employment Agency",
55223                     "terms": "job"
55224                 },
55225                 "office/estate_agent": {
55226                     "name": "Real Estate Office",
55227                     "terms": ""
55228                 },
55229                 "office/financial": {
55230                     "name": "Financial Office",
55231                     "terms": ""
55232                 },
55233                 "office/government": {
55234                     "name": "Government Office",
55235                     "terms": ""
55236                 },
55237                 "office/insurance": {
55238                     "name": "Insurance Office",
55239                     "terms": ""
55240                 },
55241                 "office/it": {
55242                     "name": "IT Office",
55243                     "terms": ""
55244                 },
55245                 "office/lawyer": {
55246                     "name": "Law Office",
55247                     "terms": ""
55248                 },
55249                 "office/newspaper": {
55250                     "name": "Newspaper",
55251                     "terms": ""
55252                 },
55253                 "office/ngo": {
55254                     "name": "NGO Office",
55255                     "terms": ""
55256                 },
55257                 "office/physician": {
55258                     "name": "Physician",
55259                     "terms": ""
55260                 },
55261                 "office/political_party": {
55262                     "name": "Political Party",
55263                     "terms": ""
55264                 },
55265                 "office/research": {
55266                     "name": "Research Office",
55267                     "terms": ""
55268                 },
55269                 "office/telecommunication": {
55270                     "name": "Telecom Office",
55271                     "terms": ""
55272                 },
55273                 "office/therapist": {
55274                     "name": "Therapist",
55275                     "terms": ""
55276                 },
55277                 "office/travel_agent": {
55278                     "name": "Travel Agency",
55279                     "terms": ""
55280                 },
55281                 "piste": {
55282                     "name": "Piste/Ski Trail",
55283                     "terms": "ski,sled,sleigh,snowboard,nordic,downhill,snowmobile"
55284                 },
55285                 "place": {
55286                     "name": "Place",
55287                     "terms": ""
55288                 },
55289                 "place/city": {
55290                     "name": "City",
55291                     "terms": ""
55292                 },
55293                 "place/farm": {
55294                     "name": "Farm",
55295                     "terms": ""
55296                 },
55297                 "place/hamlet": {
55298                     "name": "Hamlet",
55299                     "terms": ""
55300                 },
55301                 "place/island": {
55302                     "name": "Island",
55303                     "terms": "archipelago,atoll,bar,cay,isle,islet,key,reef"
55304                 },
55305                 "place/isolated_dwelling": {
55306                     "name": "Isolated Dwelling",
55307                     "terms": ""
55308                 },
55309                 "place/locality": {
55310                     "name": "Locality",
55311                     "terms": ""
55312                 },
55313                 "place/neighbourhood": {
55314                     "name": "Neighborhood",
55315                     "terms": "neighbourhood"
55316                 },
55317                 "place/suburb": {
55318                     "name": "Borough",
55319                     "terms": "Boro,Quarter"
55320                 },
55321                 "place/town": {
55322                     "name": "Town",
55323                     "terms": ""
55324                 },
55325                 "place/village": {
55326                     "name": "Village",
55327                     "terms": ""
55328                 },
55329                 "point": {
55330                     "name": "Point",
55331                     "terms": ""
55332                 },
55333                 "power": {
55334                     "name": "Power",
55335                     "terms": ""
55336                 },
55337                 "power/generator": {
55338                     "name": "Power Generator",
55339                     "terms": ""
55340                 },
55341                 "power/line": {
55342                     "name": "Power Line",
55343                     "terms": ""
55344                 },
55345                 "power/minor_line": {
55346                     "name": "Minor Power Line",
55347                     "terms": ""
55348                 },
55349                 "power/pole": {
55350                     "name": "Power Pole",
55351                     "terms": ""
55352                 },
55353                 "power/sub_station": {
55354                     "name": "Substation",
55355                     "terms": ""
55356                 },
55357                 "power/substation": {
55358                     "name": "Substation",
55359                     "terms": ""
55360                 },
55361                 "power/tower": {
55362                     "name": "High-Voltage Tower",
55363                     "terms": ""
55364                 },
55365                 "power/transformer": {
55366                     "name": "Transformer",
55367                     "terms": ""
55368                 },
55369                 "public_transport/platform": {
55370                     "name": "Platform",
55371                     "terms": ""
55372                 },
55373                 "public_transport/stop_position": {
55374                     "name": "Stop Position",
55375                     "terms": ""
55376                 },
55377                 "railway": {
55378                     "name": "Railway",
55379                     "terms": ""
55380                 },
55381                 "railway/abandoned": {
55382                     "name": "Abandoned Railway",
55383                     "terms": ""
55384                 },
55385                 "railway/disused": {
55386                     "name": "Disused Railway",
55387                     "terms": ""
55388                 },
55389                 "railway/funicular": {
55390                     "name": "Funicular",
55391                     "terms": "venicular,cliff railway,cable car,cable railway,funicular railway"
55392                 },
55393                 "railway/halt": {
55394                     "name": "Railway Halt",
55395                     "terms": "break,interrupt,rest,wait,interruption"
55396                 },
55397                 "railway/level_crossing": {
55398                     "name": "Level Crossing",
55399                     "terms": "crossing,railroad crossing,railway crossing,grade crossing,road through railroad,train crossing"
55400                 },
55401                 "railway/monorail": {
55402                     "name": "Monorail",
55403                     "terms": ""
55404                 },
55405                 "railway/narrow_gauge": {
55406                     "name": "Narrow Gauge Rail",
55407                     "terms": "narrow gauge railway,narrow gauge railroad"
55408                 },
55409                 "railway/platform": {
55410                     "name": "Railway Platform",
55411                     "terms": ""
55412                 },
55413                 "railway/rail": {
55414                     "name": "Rail",
55415                     "terms": ""
55416                 },
55417                 "railway/station": {
55418                     "name": "Railway Station",
55419                     "terms": "train station,station"
55420                 },
55421                 "railway/subway": {
55422                     "name": "Subway",
55423                     "terms": ""
55424                 },
55425                 "railway/subway_entrance": {
55426                     "name": "Subway Entrance",
55427                     "terms": ""
55428                 },
55429                 "railway/tram": {
55430                     "name": "Tram",
55431                     "terms": "streetcar"
55432                 },
55433                 "relation": {
55434                     "name": "Relation",
55435                     "terms": ""
55436                 },
55437                 "roundabout": {
55438                     "name": "Roundabout",
55439                     "terms": ""
55440                 },
55441                 "route/ferry": {
55442                     "name": "Ferry Route",
55443                     "terms": ""
55444                 },
55445                 "shop": {
55446                     "name": "Shop",
55447                     "terms": ""
55448                 },
55449                 "shop/alcohol": {
55450                     "name": "Liquor Store",
55451                     "terms": "alcohol,beer,booze,wine"
55452                 },
55453                 "shop/anime": {
55454                     "name": "Anime Shop",
55455                     "terms": ""
55456                 },
55457                 "shop/antiques": {
55458                     "name": "Antiques Shop",
55459                     "terms": ""
55460                 },
55461                 "shop/art": {
55462                     "name": "Art Gallery",
55463                     "terms": ""
55464                 },
55465                 "shop/baby_goods": {
55466                     "name": "Baby Goods Store",
55467                     "terms": ""
55468                 },
55469                 "shop/bag": {
55470                     "name": "Bag/Luggage Store",
55471                     "terms": "handbag,purse"
55472                 },
55473                 "shop/bakery": {
55474                     "name": "Bakery",
55475                     "terms": ""
55476                 },
55477                 "shop/bathroom_furnishing": {
55478                     "name": "Bathroom Furnishing Store",
55479                     "terms": ""
55480                 },
55481                 "shop/beauty": {
55482                     "name": "Beauty Shop",
55483                     "terms": "nail spa,spa,salon,tanning"
55484                 },
55485                 "shop/bed": {
55486                     "name": "Bedding/Mattress Store",
55487                     "terms": ""
55488                 },
55489                 "shop/beverages": {
55490                     "name": "Beverage Store",
55491                     "terms": ""
55492                 },
55493                 "shop/bicycle": {
55494                     "name": "Bicycle Shop",
55495                     "terms": ""
55496                 },
55497                 "shop/bookmaker": {
55498                     "name": "Bookmaker",
55499                     "terms": ""
55500                 },
55501                 "shop/books": {
55502                     "name": "Book Store",
55503                     "terms": ""
55504                 },
55505                 "shop/boutique": {
55506                     "name": "Boutique",
55507                     "terms": ""
55508                 },
55509                 "shop/butcher": {
55510                     "name": "Butcher",
55511                     "terms": "meat"
55512                 },
55513                 "shop/candles": {
55514                     "name": "Candle Shop",
55515                     "terms": ""
55516                 },
55517                 "shop/car": {
55518                     "name": "Car Dealership",
55519                     "terms": "auto"
55520                 },
55521                 "shop/car_parts": {
55522                     "name": "Car Parts Store",
55523                     "terms": "auto"
55524                 },
55525                 "shop/car_repair": {
55526                     "name": "Car Repair Shop",
55527                     "terms": "auto"
55528                 },
55529                 "shop/carpet": {
55530                     "name": "Carpet Store",
55531                     "terms": "rug"
55532                 },
55533                 "shop/cheese": {
55534                     "name": "Cheese Store",
55535                     "terms": ""
55536                 },
55537                 "shop/chemist": {
55538                     "name": "Chemist",
55539                     "terms": ""
55540                 },
55541                 "shop/chocolate": {
55542                     "name": "Chocolate Store",
55543                     "terms": ""
55544                 },
55545                 "shop/clothes": {
55546                     "name": "Clothing Store",
55547                     "terms": ""
55548                 },
55549                 "shop/computer": {
55550                     "name": "Computer Store",
55551                     "terms": ""
55552                 },
55553                 "shop/confectionery": {
55554                     "name": "Candy Store",
55555                     "terms": ""
55556                 },
55557                 "shop/convenience": {
55558                     "name": "Convenience Store",
55559                     "terms": ""
55560                 },
55561                 "shop/copyshop": {
55562                     "name": "Copy Store",
55563                     "terms": ""
55564                 },
55565                 "shop/cosmetics": {
55566                     "name": "Cosmetics Store",
55567                     "terms": ""
55568                 },
55569                 "shop/craft": {
55570                     "name": "Arts and Crafts Store",
55571                     "terms": ""
55572                 },
55573                 "shop/curtain": {
55574                     "name": "Curtain Store",
55575                     "terms": "drape*,window"
55576                 },
55577                 "shop/dairy": {
55578                     "name": "Dairy Store",
55579                     "terms": "milk,egg,cheese"
55580                 },
55581                 "shop/deli": {
55582                     "name": "Deli",
55583                     "terms": "lunch,meat,sandwich"
55584                 },
55585                 "shop/department_store": {
55586                     "name": "Department Store",
55587                     "terms": ""
55588                 },
55589                 "shop/doityourself": {
55590                     "name": "DIY Store",
55591                     "terms": ""
55592                 },
55593                 "shop/dry_cleaning": {
55594                     "name": "Dry Cleaner",
55595                     "terms": ""
55596                 },
55597                 "shop/electronics": {
55598                     "name": "Electronics Store",
55599                     "terms": "appliance,audio,computer,tv"
55600                 },
55601                 "shop/erotic": {
55602                     "name": "Erotic Store",
55603                     "terms": "sex,porn"
55604                 },
55605                 "shop/fabric": {
55606                     "name": "Fabric Store",
55607                     "terms": "sew"
55608                 },
55609                 "shop/farm": {
55610                     "name": "Produce Stand",
55611                     "terms": "farm shop,farm stand"
55612                 },
55613                 "shop/fashion": {
55614                     "name": "Fashion Store",
55615                     "terms": ""
55616                 },
55617                 "shop/fishmonger": {
55618                     "name": "Fishmonger",
55619                     "terms": ""
55620                 },
55621                 "shop/florist": {
55622                     "name": "Florist",
55623                     "terms": "flower"
55624                 },
55625                 "shop/frame": {
55626                     "name": "Framing Shop",
55627                     "terms": ""
55628                 },
55629                 "shop/funeral_directors": {
55630                     "name": "Funeral Home",
55631                     "terms": "undertaker,memorial home"
55632                 },
55633                 "shop/furnace": {
55634                     "name": "Furnace Store",
55635                     "terms": "oven,stove"
55636                 },
55637                 "shop/furniture": {
55638                     "name": "Furniture Store",
55639                     "terms": "chair,sofa,table"
55640                 },
55641                 "shop/garden_centre": {
55642                     "name": "Garden Center",
55643                     "terms": "landscape,mulch,shrub,tree"
55644                 },
55645                 "shop/gift": {
55646                     "name": "Gift Shop",
55647                     "terms": ""
55648                 },
55649                 "shop/greengrocer": {
55650                     "name": "Greengrocer",
55651                     "terms": "fruit,vegetable"
55652                 },
55653                 "shop/hairdresser": {
55654                     "name": "Hairdresser",
55655                     "terms": ""
55656                 },
55657                 "shop/hardware": {
55658                     "name": "Hardware Store",
55659                     "terms": ""
55660                 },
55661                 "shop/hearing_aids": {
55662                     "name": "Hearing Aids Store",
55663                     "terms": ""
55664                 },
55665                 "shop/herbalist": {
55666                     "name": "Herbalist",
55667                     "terms": ""
55668                 },
55669                 "shop/hifi": {
55670                     "name": "Hifi Store",
55671                     "terms": "stereo,video"
55672                 },
55673                 "shop/houseware": {
55674                     "name": "Houseware Store",
55675                     "terms": "home,household"
55676                 },
55677                 "shop/interior_decoration": {
55678                     "name": "Interior Decoration Store",
55679                     "terms": ""
55680                 },
55681                 "shop/jewelry": {
55682                     "name": "Jeweler",
55683                     "terms": "diamond,gem,ring"
55684                 },
55685                 "shop/kiosk": {
55686                     "name": "News Kiosk",
55687                     "terms": ""
55688                 },
55689                 "shop/kitchen": {
55690                     "name": "Kitchen Design Store",
55691                     "terms": ""
55692                 },
55693                 "shop/laundry": {
55694                     "name": "Laundry",
55695                     "terms": ""
55696                 },
55697                 "shop/leather": {
55698                     "name": "Leather Store",
55699                     "terms": ""
55700                 },
55701                 "shop/locksmith": {
55702                     "name": "Locksmith",
55703                     "terms": "key,lockpick"
55704                 },
55705                 "shop/lottery": {
55706                     "name": "Lottery Shop",
55707                     "terms": ""
55708                 },
55709                 "shop/mall": {
55710                     "name": "Mall",
55711                     "terms": ""
55712                 },
55713                 "shop/massage": {
55714                     "name": "Massage Shop",
55715                     "terms": ""
55716                 },
55717                 "shop/medical_supply": {
55718                     "name": "Medical Supply Store",
55719                     "terms": ""
55720                 },
55721                 "shop/mobile_phone": {
55722                     "name": "Mobile Phone Store",
55723                     "terms": ""
55724                 },
55725                 "shop/money_lender": {
55726                     "name": "Money Lender",
55727                     "terms": ""
55728                 },
55729                 "shop/motorcycle": {
55730                     "name": "Motorcycle Dealership",
55731                     "terms": ""
55732                 },
55733                 "shop/music": {
55734                     "name": "Music Store",
55735                     "terms": "CD,vinyl"
55736                 },
55737                 "shop/musical_instrument": {
55738                     "name": "Musical Instrument Store",
55739                     "terms": ""
55740                 },
55741                 "shop/newsagent": {
55742                     "name": "Newspaper/Magazine Shop",
55743                     "terms": ""
55744                 },
55745                 "shop/optician": {
55746                     "name": "Optician",
55747                     "terms": "eye,glasses"
55748                 },
55749                 "shop/organic": {
55750                     "name": "Organic Goods Store",
55751                     "terms": ""
55752                 },
55753                 "shop/outdoor": {
55754                     "name": "Outdoors Store",
55755                     "terms": "camping,climbing,hiking"
55756                 },
55757                 "shop/paint": {
55758                     "name": "Paint Store",
55759                     "terms": ""
55760                 },
55761                 "shop/pawnbroker": {
55762                     "name": "Pawn Shop",
55763                     "terms": ""
55764                 },
55765                 "shop/pet": {
55766                     "name": "Pet Store",
55767                     "terms": "cat,dog,fish"
55768                 },
55769                 "shop/photo": {
55770                     "name": "Photography Store",
55771                     "terms": "camera,film"
55772                 },
55773                 "shop/pyrotechnics": {
55774                     "name": "Fireworks Store",
55775                     "terms": ""
55776                 },
55777                 "shop/radiotechnics": {
55778                     "name": "Radio/Electronic Component Store",
55779                     "terms": ""
55780                 },
55781                 "shop/religion": {
55782                     "name": "Religious Store",
55783                     "terms": ""
55784                 },
55785                 "shop/scuba_diving": {
55786                     "name": "Scuba Diving Shop",
55787                     "terms": ""
55788                 },
55789                 "shop/seafood": {
55790                     "name": "Seafood Shop",
55791                     "terms": "fishmonger"
55792                 },
55793                 "shop/second_hand": {
55794                     "name": "Consignment/Thrift Store",
55795                     "terms": "secondhand,second hand,resale,thrift,used"
55796                 },
55797                 "shop/shoes": {
55798                     "name": "Shoe Store",
55799                     "terms": ""
55800                 },
55801                 "shop/sports": {
55802                     "name": "Sporting Goods Store",
55803                     "terms": ""
55804                 },
55805                 "shop/stationery": {
55806                     "name": "Stationery Store",
55807                     "terms": "card,paper"
55808                 },
55809                 "shop/supermarket": {
55810                     "name": "Supermarket",
55811                     "terms": "grocery,store,shop"
55812                 },
55813                 "shop/tailor": {
55814                     "name": "Tailor",
55815                     "terms": "clothes,suit"
55816                 },
55817                 "shop/tattoo": {
55818                     "name": "Tattoo Parlor",
55819                     "terms": ""
55820                 },
55821                 "shop/tea": {
55822                     "name": "Tea Store",
55823                     "terms": ""
55824                 },
55825                 "shop/ticket": {
55826                     "name": "Ticket Seller",
55827                     "terms": ""
55828                 },
55829                 "shop/tobacco": {
55830                     "name": "Tobacco Shop",
55831                     "terms": ""
55832                 },
55833                 "shop/toys": {
55834                     "name": "Toy Store",
55835                     "terms": ""
55836                 },
55837                 "shop/travel_agency": {
55838                     "name": "Travel Agency",
55839                     "terms": ""
55840                 },
55841                 "shop/tyres": {
55842                     "name": "Tire Store",
55843                     "terms": ""
55844                 },
55845                 "shop/vacant": {
55846                     "name": "Vacant Shop",
55847                     "terms": ""
55848                 },
55849                 "shop/vacuum_cleaner": {
55850                     "name": "Vacuum Cleaner Store",
55851                     "terms": ""
55852                 },
55853                 "shop/variety_store": {
55854                     "name": "Variety Store",
55855                     "terms": ""
55856                 },
55857                 "shop/video": {
55858                     "name": "Video Store",
55859                     "terms": "DVD"
55860                 },
55861                 "shop/video_games": {
55862                     "name": "Video Game Store",
55863                     "terms": ""
55864                 },
55865                 "shop/water_sports": {
55866                     "name": "Watersport/Swim Shop",
55867                     "terms": ""
55868                 },
55869                 "shop/weapons": {
55870                     "name": "Weapon Shop",
55871                     "terms": "ammo,gun,knife,knives"
55872                 },
55873                 "shop/window_blind": {
55874                     "name": "Window Blind Store",
55875                     "terms": ""
55876                 },
55877                 "shop/wine": {
55878                     "name": "Wine Shop",
55879                     "terms": ""
55880                 },
55881                 "tourism": {
55882                     "name": "Tourism",
55883                     "terms": ""
55884                 },
55885                 "tourism/alpine_hut": {
55886                     "name": "Alpine Hut",
55887                     "terms": ""
55888                 },
55889                 "tourism/artwork": {
55890                     "name": "Artwork",
55891                     "terms": "mural,sculpture,statue"
55892                 },
55893                 "tourism/attraction": {
55894                     "name": "Tourist Attraction",
55895                     "terms": ""
55896                 },
55897                 "tourism/camp_site": {
55898                     "name": "Camp Site",
55899                     "terms": "Tent"
55900                 },
55901                 "tourism/caravan_site": {
55902                     "name": "RV Park",
55903                     "terms": "Motor Home,Camper"
55904                 },
55905                 "tourism/chalet": {
55906                     "name": "Chalet",
55907                     "terms": ""
55908                 },
55909                 "tourism/guest_house": {
55910                     "name": "Guest House",
55911                     "terms": "B&B,Bed and Breakfast"
55912                 },
55913                 "tourism/hostel": {
55914                     "name": "Hostel",
55915                     "terms": ""
55916                 },
55917                 "tourism/hotel": {
55918                     "name": "Hotel",
55919                     "terms": ""
55920                 },
55921                 "tourism/information": {
55922                     "name": "Information",
55923                     "terms": ""
55924                 },
55925                 "tourism/motel": {
55926                     "name": "Motel",
55927                     "terms": ""
55928                 },
55929                 "tourism/museum": {
55930                     "name": "Museum",
55931                     "terms": "exhibition,foundation,gallery,hall,institution"
55932                 },
55933                 "tourism/picnic_site": {
55934                     "name": "Picnic Site",
55935                     "terms": "camp"
55936                 },
55937                 "tourism/theme_park": {
55938                     "name": "Theme Park",
55939                     "terms": ""
55940                 },
55941                 "tourism/viewpoint": {
55942                     "name": "Viewpoint",
55943                     "terms": ""
55944                 },
55945                 "tourism/zoo": {
55946                     "name": "Zoo",
55947                     "terms": ""
55948                 },
55949                 "traffic_calming/bump": {
55950                     "name": "Speed Bump",
55951                     "terms": "speed hump"
55952                 },
55953                 "traffic_calming/hump": {
55954                     "name": "Speed Hump",
55955                     "terms": "speed bump"
55956                 },
55957                 "traffic_calming/rumble_strip": {
55958                     "name": "Rumble Strip",
55959                     "terms": "sleeper lines,audible lines,growlers"
55960                 },
55961                 "traffic_calming/table": {
55962                     "name": "Raised Pedestrian Crossing",
55963                     "terms": "speed table,flat top hump"
55964                 },
55965                 "type/boundary": {
55966                     "name": "Boundary",
55967                     "terms": ""
55968                 },
55969                 "type/boundary/administrative": {
55970                     "name": "Administrative Boundary",
55971                     "terms": ""
55972                 },
55973                 "type/multipolygon": {
55974                     "name": "Multipolygon",
55975                     "terms": ""
55976                 },
55977                 "type/restriction": {
55978                     "name": "Restriction",
55979                     "terms": ""
55980                 },
55981                 "type/restriction/no_left_turn": {
55982                     "name": "No Left Turn",
55983                     "terms": ""
55984                 },
55985                 "type/restriction/no_right_turn": {
55986                     "name": "No Right Turn",
55987                     "terms": ""
55988                 },
55989                 "type/restriction/no_straight_on": {
55990                     "name": "No Straight On",
55991                     "terms": ""
55992                 },
55993                 "type/restriction/no_u_turn": {
55994                     "name": "No U-turn",
55995                     "terms": ""
55996                 },
55997                 "type/restriction/only_left_turn": {
55998                     "name": "Left Turn Only",
55999                     "terms": ""
56000                 },
56001                 "type/restriction/only_right_turn": {
56002                     "name": "Right Turn Only",
56003                     "terms": ""
56004                 },
56005                 "type/restriction/only_straight_on": {
56006                     "name": "No Turns",
56007                     "terms": ""
56008                 },
56009                 "type/route": {
56010                     "name": "Route",
56011                     "terms": ""
56012                 },
56013                 "type/route/bicycle": {
56014                     "name": "Cycle Route",
56015                     "terms": ""
56016                 },
56017                 "type/route/bus": {
56018                     "name": "Bus Route",
56019                     "terms": ""
56020                 },
56021                 "type/route/detour": {
56022                     "name": "Detour Route",
56023                     "terms": ""
56024                 },
56025                 "type/route/ferry": {
56026                     "name": "Ferry Route",
56027                     "terms": ""
56028                 },
56029                 "type/route/foot": {
56030                     "name": "Foot Route",
56031                     "terms": ""
56032                 },
56033                 "type/route/hiking": {
56034                     "name": "Hiking Route",
56035                     "terms": ""
56036                 },
56037                 "type/route/pipeline": {
56038                     "name": "Pipeline Route",
56039                     "terms": ""
56040                 },
56041                 "type/route/power": {
56042                     "name": "Power Route",
56043                     "terms": ""
56044                 },
56045                 "type/route/road": {
56046                     "name": "Road Route",
56047                     "terms": ""
56048                 },
56049                 "type/route/train": {
56050                     "name": "Train Route",
56051                     "terms": ""
56052                 },
56053                 "type/route/tram": {
56054                     "name": "Tram Route",
56055                     "terms": ""
56056                 },
56057                 "type/route_master": {
56058                     "name": "Route Master",
56059                     "terms": ""
56060                 },
56061                 "vertex": {
56062                     "name": "Other",
56063                     "terms": ""
56064                 },
56065                 "waterway": {
56066                     "name": "Waterway",
56067                     "terms": ""
56068                 },
56069                 "waterway/canal": {
56070                     "name": "Canal",
56071                     "terms": ""
56072                 },
56073                 "waterway/dam": {
56074                     "name": "Dam",
56075                     "terms": ""
56076                 },
56077                 "waterway/ditch": {
56078                     "name": "Ditch",
56079                     "terms": ""
56080                 },
56081                 "waterway/drain": {
56082                     "name": "Drain",
56083                     "terms": ""
56084                 },
56085                 "waterway/fuel": {
56086                     "name": "Marine Fuel Station",
56087                     "terms": "petrol,gas,diesel,boat"
56088                 },
56089                 "waterway/river": {
56090                     "name": "River",
56091                     "terms": "beck,branch,brook,course,creek,estuary,rill,rivulet,run,runnel,stream,tributary,watercourse"
56092                 },
56093                 "waterway/riverbank": {
56094                     "name": "Riverbank",
56095                     "terms": ""
56096                 },
56097                 "waterway/sanitary_dump_station": {
56098                     "name": "Marine Toilet Disposal",
56099                     "terms": "Boat,Watercraft,Sanitary,Dump Station,Pumpout,Pump out,Elsan,CDP,CTDP,Chemical Toilet"
56100                 },
56101                 "waterway/stream": {
56102                     "name": "Stream",
56103                     "terms": "beck,branch,brook,burn,course,creek,current,drift,flood,flow,freshet,race,rill,rindle,rivulet,run,runnel,rush,spate,spritz,surge,tide,torrent,tributary,watercourse"
56104                 },
56105                 "waterway/weir": {
56106                     "name": "Weir",
56107                     "terms": ""
56108                 }
56109             }
56110         }
56111     },
56112     "suggestions": {
56113         "amenity": {
56114             "fuel": {
56115                 "76": {
56116                     "count": 314
56117                 },
56118                 "Neste": {
56119                     "count": 189
56120                 },
56121                 "BP": {
56122                     "count": 2511
56123                 },
56124                 "Shell": {
56125                     "count": 8380
56126                 },
56127                 "Agip": {
56128                     "count": 2651
56129                 },
56130                 "Migrol": {
56131                     "count": 65
56132                 },
56133                 "Avia": {
56134                     "count": 897
56135                 },
56136                 "Texaco": {
56137                     "count": 680
56138                 },
56139                 "Total": {
56140                     "count": 2607
56141                 },
56142                 "Statoil": {
56143                     "count": 596
56144                 },
56145                 "Esso": {
56146                     "count": 3652
56147                 },
56148                 "Jet": {
56149                     "count": 441
56150                 },
56151                 "Avanti": {
56152                     "count": 90
56153                 },
56154                 "Sainsbury's": {
56155                     "count": 58
56156                 },
56157                 "OMV": {
56158                     "count": 701
56159                 },
56160                 "Aral": {
56161                     "count": 1339
56162                 },
56163                 "Tesco": {
56164                     "count": 197
56165                 },
56166                 "JET": {
56167                     "count": 180
56168                 },
56169                 "Morrisons": {
56170                     "count": 111
56171                 },
56172                 "United": {
56173                     "count": 91
56174                 },
56175                 "Canadian Tire": {
56176                     "count": 66
56177                 },
56178                 "Mobil": {
56179                     "count": 613
56180                 },
56181                 "Caltex": {
56182                     "count": 1001
56183                 },
56184                 "Sunoco": {
56185                     "count": 355
56186                 },
56187                 "Q8": {
56188                     "count": 1161
56189                 },
56190                 "ABC": {
56191                     "count": 79
56192                 },
56193                 "ARAL": {
56194                     "count": 375
56195                 },
56196                 "CEPSA": {
56197                     "count": 1018
56198                 },
56199                 "BFT": {
56200                     "count": 89
56201                 },
56202                 "Petron": {
56203                     "count": 878
56204                 },
56205                 "Intermarché": {
56206                     "count": 434
56207                 },
56208                 "Total Access": {
56209                     "count": 51
56210                 },
56211                 "Super U": {
56212                     "count": 124
56213                 },
56214                 "Auchan": {
56215                     "count": 53
56216                 },
56217                 "Elf": {
56218                     "count": 129
56219                 },
56220                 "Carrefour": {
56221                     "count": 205
56222                 },
56223                 "Station Service E. Leclerc": {
56224                     "count": 530
56225                 },
56226                 "Shell Express": {
56227                     "count": 131
56228                 },
56229                 "Hess": {
56230                     "count": 127
56231                 },
56232                 "Flying V": {
56233                     "count": 129
56234                 },
56235                 "bft": {
56236                     "count": 168
56237                 },
56238                 "Gulf": {
56239                     "count": 199
56240                 },
56241                 "PTT": {
56242                     "count": 191
56243                 },
56244                 "St1": {
56245                     "count": 100
56246                 },
56247                 "Teboil": {
56248                     "count": 115
56249                 },
56250                 "HEM": {
56251                     "count": 212
56252                 },
56253                 "GALP": {
56254                     "count": 626
56255                 },
56256                 "OK": {
56257                     "count": 163
56258                 },
56259                 "ÖMV": {
56260                     "count": 101
56261                 },
56262                 "Tinq": {
56263                     "count": 215
56264                 },
56265                 "OKQ8": {
56266                     "count": 186
56267                 },
56268                 "Repsol": {
56269                     "count": 424
56270                 },
56271                 "Westfalen": {
56272                     "count": 96
56273                 },
56274                 "Esso Express": {
56275                     "count": 98
56276                 },
56277                 "Raiffeisenbank": {
56278                     "count": 117
56279                 },
56280                 "Tamoil": {
56281                     "count": 866
56282                 },
56283                 "Engen": {
56284                     "count": 241
56285                 },
56286                 "Sasol": {
56287                     "count": 59
56288                 },
56289                 "Topaz": {
56290                     "count": 78
56291                 },
56292                 "LPG": {
56293                     "count": 174
56294                 },
56295                 "Coop": {
56296                     "count": 62
56297                 },
56298                 "Orlen": {
56299                     "count": 598
56300                 },
56301                 "Oilibya": {
56302                     "count": 68
56303                 },
56304                 "Tango": {
56305                     "count": 122
56306                 },
56307                 "Star": {
56308                     "count": 319
56309                 },
56310                 "Петрол": {
56311                     "count": 84
56312                 },
56313                 "Cepsa": {
56314                     "count": 96
56315                 },
56316                 "OIL!": {
56317                     "count": 63
56318                 },
56319                 "Ultramar": {
56320                     "count": 125
56321                 },
56322                 "Irving": {
56323                     "count": 87
56324                 },
56325                 "Lukoil": {
56326                     "count": 701
56327                 },
56328                 "Petro-Canada": {
56329                     "count": 489
56330                 },
56331                 "7-Eleven": {
56332                     "count": 488
56333                 },
56334                 "Agrola": {
56335                     "count": 69
56336                 },
56337                 "Husky": {
56338                     "count": 126
56339                 },
56340                 "Slovnaft": {
56341                     "count": 219
56342                 },
56343                 "Sheetz": {
56344                     "count": 134
56345                 },
56346                 "Mol": {
56347                     "count": 61
56348                 },
56349                 "Petronas": {
56350                     "count": 159
56351                 },
56352                 "Газпромнефть": {
56353                     "count": 748
56354                 },
56355                 "Лукойл": {
56356                     "count": 1477
56357                 },
56358                 "Elan": {
56359                     "count": 112
56360                 },
56361                 "Роснефть": {
56362                     "count": 638
56363                 },
56364                 "Turmöl": {
56365                     "count": 57
56366                 },
56367                 "Neste A24": {
56368                     "count": 55
56369                 },
56370                 "Marathon": {
56371                     "count": 189
56372                 },
56373                 "Valero": {
56374                     "count": 366
56375                 },
56376                 "Eni": {
56377                     "count": 236
56378                 },
56379                 "Chevron": {
56380                     "count": 954
56381                 },
56382                 "ТНК": {
56383                     "count": 520
56384                 },
56385                 "REPSOL": {
56386                     "count": 1603
56387                 },
56388                 "MOL": {
56389                     "count": 228
56390                 },
56391                 "Bliska": {
56392                     "count": 150
56393                 },
56394                 "Api": {
56395                     "count": 302
56396                 },
56397                 "Arco": {
56398                     "count": 179
56399                 },
56400                 "Pemex": {
56401                     "count": 423
56402                 },
56403                 "Exxon": {
56404                     "count": 506
56405                 },
56406                 "Coles Express": {
56407                     "count": 115
56408                 },
56409                 "Petrom": {
56410                     "count": 259
56411                 },
56412                 "PETRONOR": {
56413                     "count": 207
56414                 },
56415                 "Rompetrol": {
56416                     "count": 174
56417                 },
56418                 "Lotos": {
56419                     "count": 178
56420                 },
56421                 "ОМВ": {
56422                     "count": 60
56423                 },
56424                 "BR": {
56425                     "count": 129
56426                 },
56427                 "Copec": {
56428                     "count": 505
56429                 },
56430                 "Petrobras": {
56431                     "count": 270
56432                 },
56433                 "Liberty": {
56434                     "count": 55
56435                 },
56436                 "IP": {
56437                     "count": 871
56438                 },
56439                 "Erg": {
56440                     "count": 596
56441                 },
56442                 "Eneos": {
56443                     "count": 97
56444                 },
56445                 "Citgo": {
56446                     "count": 279
56447                 },
56448                 "Metano": {
56449                     "count": 208
56450                 },
56451                 "Сургутнефтегаз": {
56452                     "count": 61
56453                 },
56454                 "EKO": {
56455                     "count": 59
56456                 },
56457                 "Eko": {
56458                     "count": 58
56459                 },
56460                 "Indipend.": {
56461                     "count": 172
56462                 },
56463                 "IES": {
56464                     "count": 63
56465                 },
56466                 "TotalErg": {
56467                     "count": 89
56468                 },
56469                 "Cenex": {
56470                     "count": 115
56471                 },
56472                 "ПТК": {
56473                     "count": 82
56474                 },
56475                 "HP": {
56476                     "count": 79
56477                 },
56478                 "Phillips 66": {
56479                     "count": 216
56480                 },
56481                 "CARREFOUR": {
56482                     "count": 74
56483                 },
56484                 "ERG": {
56485                     "count": 76
56486                 },
56487                 "Speedway": {
56488                     "count": 148
56489                 },
56490                 "Benzina": {
56491                     "count": 96
56492                 },
56493                 "Татнефть": {
56494                     "count": 264
56495                 },
56496                 "Terpel": {
56497                     "count": 259
56498                 },
56499                 "WOG": {
56500                     "count": 189
56501                 },
56502                 "Seaoil": {
56503                     "count": 54
56504                 },
56505                 "АЗС": {
56506                     "count": 1077
56507                 },
56508                 "Kwik Trip": {
56509                     "count": 108
56510                 },
56511                 "Wawa": {
56512                     "count": 89
56513                 },
56514                 "Pertamina": {
56515                     "count": 186
56516                 },
56517                 "COSMO": {
56518                     "count": 64
56519                 },
56520                 "Z": {
56521                     "count": 76
56522                 },
56523                 "Indian Oil": {
56524                     "count": 183
56525                 },
56526                 "АГЗС": {
56527                     "count": 494
56528                 },
56529                 "INA": {
56530                     "count": 121
56531                 },
56532                 "JOMO": {
56533                     "count": 62
56534                 },
56535                 "Holiday": {
56536                     "count": 97
56537                 },
56538                 "YPF": {
56539                     "count": 70
56540                 },
56541                 "IDEMITSU": {
56542                     "count": 87
56543                 },
56544                 "ENEOS": {
56545                     "count": 736
56546                 },
56547                 "Bharat Petroleum": {
56548                     "count": 64
56549                 },
56550                 "CAMPSA": {
56551                     "count": 615
56552                 },
56553                 "Casey's General Store": {
56554                     "count": 190
56555                 },
56556                 "Башнефть": {
56557                     "count": 60
56558                 },
56559                 "Kangaroo": {
56560                     "count": 60
56561                 },
56562                 "コスモ石油 (COSMO)": {
56563                     "count": 136
56564                 },
56565                 "MEROIL": {
56566                     "count": 77
56567                 },
56568                 "1-2-3": {
56569                     "count": 71
56570                 },
56571                 "出光": {
56572                     "count": 228,
56573                     "tags": {
56574                         "name:en": "IDEMITSU"
56575                     }
56576                 },
56577                 "НК Альянс": {
56578                     "count": 88
56579                 },
56580                 "Sinclair": {
56581                     "count": 100
56582                 },
56583                 "Conoco": {
56584                     "count": 189
56585                 },
56586                 "SPBU": {
56587                     "count": 54
56588                 },
56589                 "Макпетрол": {
56590                     "count": 109
56591                 },
56592                 "Circle K": {
56593                     "count": 166
56594                 },
56595                 "Posto Ipiranga": {
56596                     "count": 70
56597                 },
56598                 "Posto Shell": {
56599                     "count": 54
56600                 },
56601                 "Phoenix": {
56602                     "count": 144
56603                 },
56604                 "Ipiranga": {
56605                     "count": 119
56606                 },
56607                 "OKKO": {
56608                     "count": 85
56609                 },
56610                 "ОККО": {
56611                     "count": 119
56612                 },
56613                 "บางจาก": {
56614                     "count": 60
56615                 },
56616                 "QuikTrip": {
56617                     "count": 105
56618                 },
56619                 "Stewart's": {
56620                     "count": 63
56621                 },
56622                 "Posto BR": {
56623                     "count": 68
56624                 },
56625                 "ป ต ท": {
56626                     "count": 152
56627                 },
56628                 "ปตท": {
56629                     "count": 88
56630                 },
56631                 "ANP": {
56632                     "count": 80
56633                 },
56634                 "Kum & Go": {
56635                     "count": 80
56636                 },
56637                 "Petrolimex": {
56638                     "count": 55
56639                 },
56640                 "Sokimex": {
56641                     "count": 66
56642                 },
56643                 "Tela": {
56644                     "count": 154
56645                 },
56646                 "Posto": {
56647                     "count": 71
56648                 },
56649                 "H-E-B": {
56650                     "count": 182
56651                 },
56652                 "Укрнафта": {
56653                     "count": 58
56654                 },
56655                 "Татнефтепродукт": {
56656                     "count": 54
56657                 },
56658                 "Afriquia": {
56659                     "count": 88
56660                 },
56661                 "Murphy USA": {
56662                     "count": 67
56663                 },
56664                 "昭和シェル (Showa-shell)": {
56665                     "count": 94
56666                 },
56667                 "エネオス": {
56668                     "count": 53
56669                 },
56670                 "CNG": {
56671                     "count": 94
56672                 }
56673             },
56674             "pub": {
56675                 "Kings Arms": {
56676                     "count": 67
56677                 },
56678                 "The Ship": {
56679                     "count": 89
56680                 },
56681                 "The White Horse": {
56682                     "count": 204
56683                 },
56684                 "The White Hart": {
56685                     "count": 226
56686                 },
56687                 "Royal Oak": {
56688                     "count": 150
56689                 },
56690                 "The Red Lion": {
56691                     "count": 233
56692                 },
56693                 "The Kings Arms": {
56694                     "count": 58
56695                 },
56696                 "The Star": {
56697                     "count": 73
56698                 },
56699                 "The Anchor": {
56700                     "count": 64
56701                 },
56702                 "The Cross Keys": {
56703                     "count": 55
56704                 },
56705                 "The Wheatsheaf": {
56706                     "count": 117
56707                 },
56708                 "The Crown Inn": {
56709                     "count": 67
56710                 },
56711                 "The Kings Head": {
56712                     "count": 53
56713                 },
56714                 "The Castle": {
56715                     "count": 62
56716                 },
56717                 "The Railway": {
56718                     "count": 102
56719                 },
56720                 "The White Lion": {
56721                     "count": 118
56722                 },
56723                 "The Bell": {
56724                     "count": 121
56725                 },
56726                 "The Bull": {
56727                     "count": 68
56728                 },
56729                 "The Plough": {
56730                     "count": 179
56731                 },
56732                 "The George": {
56733                     "count": 110
56734                 },
56735                 "The Royal Oak": {
56736                     "count": 209
56737                 },
56738                 "The Fox": {
56739                     "count": 74
56740                 },
56741                 "Prince of Wales": {
56742                     "count": 77
56743                 },
56744                 "The Rising Sun": {
56745                     "count": 71
56746                 },
56747                 "The Prince of Wales": {
56748                     "count": 51
56749                 },
56750                 "The Crown": {
56751                     "count": 244
56752                 },
56753                 "The Chequers": {
56754                     "count": 66
56755                 },
56756                 "The Swan": {
56757                     "count": 152
56758                 },
56759                 "Rose and Crown": {
56760                     "count": 79
56761                 },
56762                 "The Victoria": {
56763                     "count": 67
56764                 },
56765                 "New Inn": {
56766                     "count": 90
56767                 },
56768                 "Royal Hotel": {
56769                     "count": 57
56770                 },
56771                 "Red Lion": {
56772                     "count": 207
56773                 },
56774                 "Cross Keys": {
56775                     "count": 61
56776                 },
56777                 "The Greyhound": {
56778                     "count": 96
56779                 },
56780                 "The Black Horse": {
56781                     "count": 94
56782                 },
56783                 "The New Inn": {
56784                     "count": 105
56785                 },
56786                 "Kings Head": {
56787                     "count": 59
56788                 },
56789                 "The Albion": {
56790                     "count": 51
56791                 },
56792                 "The Angel": {
56793                     "count": 52
56794                 },
56795                 "The Queens Head": {
56796                     "count": 52
56797                 },
56798                 "The Ship Inn": {
56799                     "count": 83
56800                 },
56801                 "Rose & Crown": {
56802                     "count": 51
56803                 },
56804                 "Queens Head": {
56805                     "count": 52
56806                 },
56807                 "Irish Pub": {
56808                     "count": 76
56809                 }
56810             },
56811             "fast_food": {
56812                 "Quick": {
56813                     "count": 484
56814                 },
56815                 "McDonald's": {
56816                     "count": 12376,
56817                     "tags": {
56818                         "cuisine": "burger"
56819                     }
56820                 },
56821                 "Subway": {
56822                     "count": 5576,
56823                     "tags": {
56824                         "cuisine": "sandwich"
56825                     }
56826                 },
56827                 "Burger King": {
56828                     "count": 3734,
56829                     "tags": {
56830                         "cuisine": "burger"
56831                     }
56832                 },
56833                 "Ali Baba": {
56834                     "count": 61
56835                 },
56836                 "Hungry Jacks": {
56837                     "count": 173,
56838                     "tags": {
56839                         "cuisine": "burger"
56840                     }
56841                 },
56842                 "Red Rooster": {
56843                     "count": 148
56844                 },
56845                 "KFC": {
56846                     "count": 3198,
56847                     "tags": {
56848                         "cuisine": "chicken"
56849                     }
56850                 },
56851                 "Domino's Pizza": {
56852                     "count": 985,
56853                     "tags": {
56854                         "cuisine": "pizza"
56855                     }
56856                 },
56857                 "Chowking": {
56858                     "count": 142
56859                 },
56860                 "Jollibee": {
56861                     "count": 396
56862                 },
56863                 "Hesburger": {
56864                     "count": 102
56865                 },
56866                 "肯德基": {
56867                     "count": 86
56868                 },
56869                 "Wendy's": {
56870                     "count": 1621,
56871                     "tags": {
56872                         "cuisine": "burger"
56873                     }
56874                 },
56875                 "Tim Hortons": {
56876                     "count": 323
56877                 },
56878                 "Steers": {
56879                     "count": 151
56880                 },
56881                 "Hardee's": {
56882                     "count": 268,
56883                     "tags": {
56884                         "cuisine": "burger"
56885                     }
56886                 },
56887                 "Arby's": {
56888                     "count": 782
56889                 },
56890                 "A&W": {
56891                     "count": 283
56892                 },
56893                 "Dairy Queen": {
56894                     "count": 791
56895                 },
56896                 "Hallo Pizza": {
56897                     "count": 76
56898                 },
56899                 "Fish & Chips": {
56900                     "count": 93
56901                 },
56902                 "Harvey's": {
56903                     "count": 90
56904                 },
56905                 "麥當勞": {
56906                     "count": 65
56907                 },
56908                 "Pizza Pizza": {
56909                     "count": 215
56910                 },
56911                 "Kotipizza": {
56912                     "count": 74
56913                 },
56914                 "Jack in the Box": {
56915                     "count": 546,
56916                     "tags": {
56917                         "cuisine": "burger"
56918                     }
56919                 },
56920                 "Istanbul": {
56921                     "count": 56
56922                 },
56923                 "Kochlöffel": {
56924                     "count": 68
56925                 },
56926                 "Döner": {
56927                     "count": 228
56928                 },
56929                 "Telepizza": {
56930                     "count": 201
56931                 },
56932                 "Sibylla": {
56933                     "count": 61
56934                 },
56935                 "Carl's Jr.": {
56936                     "count": 298,
56937                     "tags": {
56938                         "cuisine": "burger"
56939                     }
56940                 },
56941                 "Quiznos": {
56942                     "count": 266,
56943                     "tags": {
56944                         "cuisine": "sandwich"
56945                     }
56946                 },
56947                 "Wimpy": {
56948                     "count": 141
56949                 },
56950                 "Sonic": {
56951                     "count": 566,
56952                     "tags": {
56953                         "cuisine": "burger"
56954                     }
56955                 },
56956                 "Taco Bell": {
56957                     "count": 1423,
56958                     "tags": {
56959                         "cuisine": "mexican"
56960                     }
56961                 },
56962                 "Pizza Nova": {
56963                     "count": 63
56964                 },
56965                 "Papa John's": {
56966                     "count": 304,
56967                     "tags": {
56968                         "cuisine": "pizza"
56969                     }
56970                 },
56971                 "Nordsee": {
56972                     "count": 159
56973                 },
56974                 "Mr. Sub": {
56975                     "count": 103
56976                 },
56977                 "Макдоналдс": {
56978                     "count": 324,
56979                     "tags": {
56980                         "name:en": "McDonald's"
56981                     }
56982                 },
56983                 "Asia Imbiss": {
56984                     "count": 111
56985                 },
56986                 "Chipotle": {
56987                     "count": 290,
56988                     "tags": {
56989                         "cuisine": "mexican"
56990                     }
56991                 },
56992                 "マクドナルド": {
56993                     "count": 692,
56994                     "tags": {
56995                         "name:en": "McDonald's",
56996                         "cuisine": "burger"
56997                     }
56998                 },
56999                 "In-N-Out Burger": {
57000                     "count": 65
57001                 },
57002                 "Jimmy John's": {
57003                     "count": 141
57004                 },
57005                 "Jamba Juice": {
57006                     "count": 68
57007                 },
57008                 "Робин Сдобин": {
57009                     "count": 82
57010                 },
57011                 "Baskin Robbins": {
57012                     "count": 74
57013                 },
57014                 "ケンタッキーフライドチキン": {
57015                     "count": 164,
57016                     "tags": {
57017                         "name:en": "KFC",
57018                         "cuisine": "chicken"
57019                     }
57020                 },
57021                 "吉野家": {
57022                     "count": 191
57023                 },
57024                 "Taco Time": {
57025                     "count": 88
57026                 },
57027                 "松屋": {
57028                     "count": 281,
57029                     "tags": {
57030                         "name:en": "Matsuya"
57031                     }
57032                 },
57033                 "Little Caesars": {
57034                     "count": 81
57035                 },
57036                 "El Pollo Loco": {
57037                     "count": 63
57038                 },
57039                 "Del Taco": {
57040                     "count": 141
57041                 },
57042                 "White Castle": {
57043                     "count": 80
57044                 },
57045                 "Boston Market": {
57046                     "count": 66
57047                 },
57048                 "Chick-fil-A": {
57049                     "count": 257,
57050                     "tags": {
57051                         "cuisine": "chicken"
57052                     }
57053                 },
57054                 "Panda Express": {
57055                     "count": 238,
57056                     "tags": {
57057                         "cuisine": "chinese"
57058                     }
57059                 },
57060                 "Whataburger": {
57061                     "count": 364
57062                 },
57063                 "Taco John's": {
57064                     "count": 78
57065                 },
57066                 "Теремок": {
57067                     "count": 68
57068                 },
57069                 "Culver's": {
57070                     "count": 425
57071                 },
57072                 "Five Guys": {
57073                     "count": 141
57074                 },
57075                 "Church's Chicken": {
57076                     "count": 95
57077                 },
57078                 "Popeye's": {
57079                     "count": 167,
57080                     "tags": {
57081                         "cuisine": "chicken"
57082                     }
57083                 },
57084                 "Long John Silver's": {
57085                     "count": 93
57086                 },
57087                 "Pollo Campero": {
57088                     "count": 62
57089                 },
57090                 "Zaxby's": {
57091                     "count": 51
57092                 },
57093                 "すき家": {
57094                     "count": 276,
57095                     "tags": {
57096                         "name:en": "SUKIYA"
57097                     }
57098                 },
57099                 "モスバーガー": {
57100                     "count": 257,
57101                     "tags": {
57102                         "name:en": "MOS BURGER"
57103                     }
57104                 },
57105                 "Русский Аппетит": {
57106                     "count": 69
57107                 },
57108                 "なか卯": {
57109                     "count": 63
57110                 }
57111             },
57112             "restaurant": {
57113                 "Pizza Hut": {
57114                     "count": 1180,
57115                     "tags": {
57116                         "cuisine": "pizza"
57117                     }
57118                 },
57119                 "Little Chef": {
57120                     "count": 64
57121                 },
57122                 "Adler": {
57123                     "count": 158
57124                 },
57125                 "Zur Krone": {
57126                     "count": 90
57127                 },
57128                 "Deutsches Haus": {
57129                     "count": 90
57130                 },
57131                 "Krone": {
57132                     "count": 171
57133                 },
57134                 "Akropolis": {
57135                     "count": 152
57136                 },
57137                 "Schützenhaus": {
57138                     "count": 124
57139                 },
57140                 "Kreuz": {
57141                     "count": 74
57142                 },
57143                 "Waldschänke": {
57144                     "count": 55
57145                 },
57146                 "La Piazza": {
57147                     "count": 69
57148                 },
57149                 "Lamm": {
57150                     "count": 66
57151                 },
57152                 "Zur Sonne": {
57153                     "count": 73
57154                 },
57155                 "Zur Linde": {
57156                     "count": 204
57157                 },
57158                 "Poseidon": {
57159                     "count": 110
57160                 },
57161                 "Shanghai": {
57162                     "count": 82
57163                 },
57164                 "Red Lobster": {
57165                     "count": 235
57166                 },
57167                 "Zum Löwen": {
57168                     "count": 84
57169                 },
57170                 "Swiss Chalet": {
57171                     "count": 107
57172                 },
57173                 "Olympia": {
57174                     "count": 74
57175                 },
57176                 "Wagamama": {
57177                     "count": 64
57178                 },
57179                 "Frankie & Benny's": {
57180                     "count": 66
57181                 },
57182                 "Hooters": {
57183                     "count": 103
57184                 },
57185                 "Sternen": {
57186                     "count": 78
57187                 },
57188                 "Hirschen": {
57189                     "count": 79
57190                 },
57191                 "Denny's": {
57192                     "count": 450
57193                 },
57194                 "Athen": {
57195                     "count": 68
57196                 },
57197                 "Sonne": {
57198                     "count": 126
57199                 },
57200                 "Hirsch": {
57201                     "count": 79
57202                 },
57203                 "Ratskeller": {
57204                     "count": 150
57205                 },
57206                 "La Cantina": {
57207                     "count": 56
57208                 },
57209                 "Gasthaus Krone": {
57210                     "count": 56
57211                 },
57212                 "El Greco": {
57213                     "count": 86
57214                 },
57215                 "Gasthof zur Post": {
57216                     "count": 79
57217                 },
57218                 "Nando's": {
57219                     "count": 246
57220                 },
57221                 "Löwen": {
57222                     "count": 112
57223                 },
57224                 "La Pataterie": {
57225                     "count": 51
57226                 },
57227                 "Bella Napoli": {
57228                     "count": 53
57229                 },
57230                 "Pizza Express": {
57231                     "count": 262
57232                 },
57233                 "Mandarin": {
57234                     "count": 65
57235                 },
57236                 "Hong Kong": {
57237                     "count": 83
57238                 },
57239                 "Zizzi": {
57240                     "count": 68
57241                 },
57242                 "Cracker Barrel": {
57243                     "count": 183
57244                 },
57245                 "Rhodos": {
57246                     "count": 81
57247                 },
57248                 "Lindenhof": {
57249                     "count": 79
57250                 },
57251                 "Milano": {
57252                     "count": 54
57253                 },
57254                 "Dolce Vita": {
57255                     "count": 77
57256                 },
57257                 "Kirchenwirt": {
57258                     "count": 81
57259                 },
57260                 "Kantine": {
57261                     "count": 52
57262                 },
57263                 "Ochsen": {
57264                     "count": 95
57265                 },
57266                 "Spur": {
57267                     "count": 62
57268                 },
57269                 "Mykonos": {
57270                     "count": 59
57271                 },
57272                 "Lotus": {
57273                     "count": 66
57274                 },
57275                 "Applebee's": {
57276                     "count": 531
57277                 },
57278                 "Flunch": {
57279                     "count": 72
57280                 },
57281                 "Zur Post": {
57282                     "count": 116
57283                 },
57284                 "China Town": {
57285                     "count": 76
57286                 },
57287                 "La Dolce Vita": {
57288                     "count": 73
57289                 },
57290                 "Waffle House": {
57291                     "count": 207
57292                 },
57293                 "Delphi": {
57294                     "count": 88
57295                 },
57296                 "Linde": {
57297                     "count": 103
57298                 },
57299                 "Outback Steakhouse": {
57300                     "count": 218
57301                 },
57302                 "Dionysos": {
57303                     "count": 69
57304                 },
57305                 "Kelsey's": {
57306                     "count": 57
57307                 },
57308                 "Boston Pizza": {
57309                     "count": 165
57310                 },
57311                 "Bella Italia": {
57312                     "count": 132
57313                 },
57314                 "Sizzler": {
57315                     "count": 53
57316                 },
57317                 "Grüner Baum": {
57318                     "count": 116
57319                 },
57320                 "Taj Mahal": {
57321                     "count": 104
57322                 },
57323                 "Rössli": {
57324                     "count": 68
57325                 },
57326                 "Wimpy": {
57327                     "count": 51
57328                 },
57329                 "Traube": {
57330                     "count": 65
57331                 },
57332                 "Adria": {
57333                     "count": 52
57334                 },
57335                 "Red Robin": {
57336                     "count": 185
57337                 },
57338                 "Roma": {
57339                     "count": 61
57340                 },
57341                 "San Marco": {
57342                     "count": 67
57343                 },
57344                 "Hellas": {
57345                     "count": 55
57346                 },
57347                 "La Perla": {
57348                     "count": 67
57349                 },
57350                 "Vips": {
57351                     "count": 53
57352                 },
57353                 "Panera Bread": {
57354                     "count": 218
57355                 },
57356                 "Da Vinci": {
57357                     "count": 54
57358                 },
57359                 "Hippopotamus": {
57360                     "count": 96
57361                 },
57362                 "Prezzo": {
57363                     "count": 75
57364                 },
57365                 "Courtepaille": {
57366                     "count": 106
57367                 },
57368                 "Hard Rock Cafe": {
57369                     "count": 70
57370                 },
57371                 "Panorama": {
57372                     "count": 61
57373                 },
57374                 "デニーズ": {
57375                     "count": 82
57376                 },
57377                 "Sportheim": {
57378                     "count": 65
57379                 },
57380                 "餃子の王将": {
57381                     "count": 57
57382                 },
57383                 "Bären": {
57384                     "count": 60
57385                 },
57386                 "Alte Post": {
57387                     "count": 60
57388                 },
57389                 "Pizzeria Roma": {
57390                     "count": 51
57391                 },
57392                 "China Garden": {
57393                     "count": 66
57394                 },
57395                 "Vapiano": {
57396                     "count": 82
57397                 },
57398                 "Mamma Mia": {
57399                     "count": 64
57400                 },
57401                 "Schwarzer Adler": {
57402                     "count": 57
57403                 },
57404                 "IHOP": {
57405                     "count": 317
57406                 },
57407                 "Chili's": {
57408                     "count": 328
57409                 },
57410                 "Asia": {
57411                     "count": 51
57412                 },
57413                 "Olive Garden": {
57414                     "count": 279
57415                 },
57416                 "TGI Friday's": {
57417                     "count": 159
57418                 },
57419                 "Friendly's": {
57420                     "count": 78
57421                 },
57422                 "Buffalo Grill": {
57423                     "count": 202
57424                 },
57425                 "Texas Roadhouse": {
57426                     "count": 110
57427                 },
57428                 "ガスト": {
57429                     "count": 230,
57430                     "tags": {
57431                         "name:en": "Gusto"
57432                     }
57433                 },
57434                 "Sakura": {
57435                     "count": 75
57436                 },
57437                 "Mensa": {
57438                     "count": 99
57439                 },
57440                 "The Keg": {
57441                     "count": 53
57442                 },
57443                 "サイゼリヤ": {
57444                     "count": 93
57445                 },
57446                 "La Strada": {
57447                     "count": 52
57448                 },
57449                 "Village Inn": {
57450                     "count": 92
57451                 },
57452                 "Buffalo Wild Wings": {
57453                     "count": 176
57454                 },
57455                 "Peking": {
57456                     "count": 59
57457                 },
57458                 "Boston Market": {
57459                     "count": 61
57460                 },
57461                 "Round Table Pizza": {
57462                     "count": 53
57463                 },
57464                 "Jimmy John's": {
57465                     "count": 69
57466                 },
57467                 "California Pizza Kitchen": {
57468                     "count": 61
57469                 },
57470                 "Якитория": {
57471                     "count": 77
57472                 },
57473                 "Golden Corral": {
57474                     "count": 101
57475                 },
57476                 "Perkins": {
57477                     "count": 105
57478                 },
57479                 "Ruby Tuesday": {
57480                     "count": 162
57481                 },
57482                 "Shari's": {
57483                     "count": 65
57484                 },
57485                 "Bob Evans": {
57486                     "count": 129
57487                 },
57488                 "바다횟집 (Bada Fish Restaurant)": {
57489                     "count": 55
57490                 },
57491                 "Mang Inasal": {
57492                     "count": 84
57493                 },
57494                 "Евразия": {
57495                     "count": 102
57496                 },
57497                 "ジョナサン": {
57498                     "count": 59
57499                 },
57500                 "Longhorn Steakhouse": {
57501                     "count": 66
57502                 }
57503             },
57504             "bank": {
57505                 "Chase": {
57506                     "count": 721
57507                 },
57508                 "Commonwealth Bank": {
57509                     "count": 232
57510                 },
57511                 "Citibank": {
57512                     "count": 277
57513                 },
57514                 "HSBC": {
57515                     "count": 1102
57516                 },
57517                 "Barclays": {
57518                     "count": 965
57519                 },
57520                 "Westpac": {
57521                     "count": 208
57522                 },
57523                 "NAB": {
57524                     "count": 131
57525                 },
57526                 "ANZ": {
57527                     "count": 218
57528                 },
57529                 "Lloyds Bank": {
57530                     "count": 547
57531                 },
57532                 "Landbank": {
57533                     "count": 81
57534                 },
57535                 "Sparkasse": {
57536                     "count": 4555
57537                 },
57538                 "UCPB": {
57539                     "count": 92
57540                 },
57541                 "PNB": {
57542                     "count": 244
57543                 },
57544                 "Metrobank": {
57545                     "count": 269
57546                 },
57547                 "BDO": {
57548                     "count": 290
57549                 },
57550                 "Volksbank": {
57551                     "count": 2591
57552                 },
57553                 "BPI": {
57554                     "count": 415
57555                 },
57556                 "Postbank": {
57557                     "count": 443
57558                 },
57559                 "NatWest": {
57560                     "count": 628
57561                 },
57562                 "Raiffeisenbank": {
57563                     "count": 2119
57564                 },
57565                 "Yorkshire Bank": {
57566                     "count": 63
57567                 },
57568                 "ABSA": {
57569                     "count": 95
57570                 },
57571                 "Standard Bank": {
57572                     "count": 109
57573                 },
57574                 "FNB": {
57575                     "count": 97
57576                 },
57577                 "Deutsche Bank": {
57578                     "count": 855
57579                 },
57580                 "SEB": {
57581                     "count": 133
57582                 },
57583                 "Commerzbank": {
57584                     "count": 806
57585                 },
57586                 "Targobank": {
57587                     "count": 166
57588                 },
57589                 "ABN AMRO": {
57590                     "count": 130
57591                 },
57592                 "Handelsbanken": {
57593                     "count": 184
57594                 },
57595                 "Swedbank": {
57596                     "count": 223
57597                 },
57598                 "Kreissparkasse": {
57599                     "count": 600
57600                 },
57601                 "UniCredit Bank": {
57602                     "count": 408
57603                 },
57604                 "Monte dei Paschi di Siena": {
57605                     "count": 132
57606                 },
57607                 "Caja Rural": {
57608                     "count": 99
57609                 },
57610                 "Dresdner Bank": {
57611                     "count": 66
57612                 },
57613                 "Sparda-Bank": {
57614                     "count": 320
57615                 },
57616                 "VÚB": {
57617                     "count": 107
57618                 },
57619                 "Slovenská sporiteľňa": {
57620                     "count": 134
57621                 },
57622                 "Bank of Montreal": {
57623                     "count": 118
57624                 },
57625                 "KBC": {
57626                     "count": 203
57627                 },
57628                 "Royal Bank of Scotland": {
57629                     "count": 111
57630                 },
57631                 "TSB": {
57632                     "count": 80
57633                 },
57634                 "US Bank": {
57635                     "count": 256
57636                 },
57637                 "HypoVereinsbank": {
57638                     "count": 561
57639                 },
57640                 "Bank Austria": {
57641                     "count": 176
57642                 },
57643                 "ING": {
57644                     "count": 496
57645                 },
57646                 "Erste Bank": {
57647                     "count": 180
57648                 },
57649                 "CIBC": {
57650                     "count": 326
57651                 },
57652                 "Scotiabank": {
57653                     "count": 413
57654                 },
57655                 "Caisse d'Épargne": {
57656                     "count": 882
57657                 },
57658                 "Santander": {
57659                     "count": 1323
57660                 },
57661                 "Bank of Scotland": {
57662                     "count": 89
57663                 },
57664                 "TD Canada Trust": {
57665                     "count": 450
57666                 },
57667                 "BMO": {
57668                     "count": 169
57669                 },
57670                 "Danske Bank": {
57671                     "count": 131
57672                 },
57673                 "OTP": {
57674                     "count": 192
57675                 },
57676                 "Crédit Agricole": {
57677                     "count": 1239
57678                 },
57679                 "LCL": {
57680                     "count": 553
57681                 },
57682                 "VR-Bank": {
57683                     "count": 430
57684                 },
57685                 "ČSOB": {
57686                     "count": 160
57687                 },
57688                 "Česká spořitelna": {
57689                     "count": 212
57690                 },
57691                 "BNP": {
57692                     "count": 112
57693                 },
57694                 "Royal Bank": {
57695                     "count": 65
57696                 },
57697                 "Nationwide": {
57698                     "count": 209
57699                 },
57700                 "Halifax": {
57701                     "count": 225
57702                 },
57703                 "BAWAG PSK": {
57704                     "count": 102
57705                 },
57706                 "National Bank": {
57707                     "count": 84
57708                 },
57709                 "Nedbank": {
57710                     "count": 80
57711                 },
57712                 "First National Bank": {
57713                     "count": 85
57714                 },
57715                 "Nordea": {
57716                     "count": 319
57717                 },
57718                 "Rabobank": {
57719                     "count": 609
57720                 },
57721                 "Sparkasse KölnBonn": {
57722                     "count": 69
57723                 },
57724                 "Tatra banka": {
57725                     "count": 67
57726                 },
57727                 "Berliner Sparkasse": {
57728                     "count": 62
57729                 },
57730                 "Berliner Volksbank": {
57731                     "count": 77
57732                 },
57733                 "Wells Fargo": {
57734                     "count": 874
57735                 },
57736                 "Credit Suisse": {
57737                     "count": 71
57738                 },
57739                 "Société Générale": {
57740                     "count": 634
57741                 },
57742                 "Osuuspankki": {
57743                     "count": 75
57744                 },
57745                 "Sparkasse Aachen": {
57746                     "count": 56
57747                 },
57748                 "Hamburger Sparkasse": {
57749                     "count": 156
57750                 },
57751                 "Cassa di Risparmio del Veneto": {
57752                     "count": 68
57753                 },
57754                 "BNP Paribas": {
57755                     "count": 617
57756                 },
57757                 "Banque Populaire": {
57758                     "count": 433
57759                 },
57760                 "BNP Paribas Fortis": {
57761                     "count": 209
57762                 },
57763                 "Banco Popular": {
57764                     "count": 291
57765                 },
57766                 "Bancaja": {
57767                     "count": 55
57768                 },
57769                 "Banesto": {
57770                     "count": 208
57771                 },
57772                 "La Caixa": {
57773                     "count": 583
57774                 },
57775                 "Santander Consumer Bank": {
57776                     "count": 88
57777                 },
57778                 "BRD": {
57779                     "count": 191
57780                 },
57781                 "BCR": {
57782                     "count": 143
57783                 },
57784                 "Banca Transilvania": {
57785                     "count": 141
57786                 },
57787                 "BW-Bank": {
57788                     "count": 97
57789                 },
57790                 "Komerční banka": {
57791                     "count": 132
57792                 },
57793                 "Banco Pastor": {
57794                     "count": 64
57795                 },
57796                 "Stadtsparkasse": {
57797                     "count": 86
57798                 },
57799                 "Ulster Bank": {
57800                     "count": 86
57801                 },
57802                 "Sberbank": {
57803                     "count": 58
57804                 },
57805                 "CIC": {
57806                     "count": 427
57807                 },
57808                 "Bancpost": {
57809                     "count": 56
57810                 },
57811                 "Caja Madrid": {
57812                     "count": 115
57813                 },
57814                 "Maybank": {
57815                     "count": 94
57816                 },
57817                 "中国银行": {
57818                     "count": 85
57819                 },
57820                 "Unicredit Banca": {
57821                     "count": 243
57822                 },
57823                 "Crédit Mutuel": {
57824                     "count": 690
57825                 },
57826                 "BBVA": {
57827                     "count": 647
57828                 },
57829                 "Intesa San Paolo": {
57830                     "count": 69
57831                 },
57832                 "TD Bank": {
57833                     "count": 206
57834                 },
57835                 "Belfius": {
57836                     "count": 231
57837                 },
57838                 "Bank of America": {
57839                     "count": 924
57840                 },
57841                 "RBC": {
57842                     "count": 230
57843                 },
57844                 "Alpha Bank": {
57845                     "count": 123
57846                 },
57847                 "Сбербанк": {
57848                     "count": 4794
57849                 },
57850                 "Россельхозбанк": {
57851                     "count": 201
57852                 },
57853                 "Crédit du Nord": {
57854                     "count": 96
57855                 },
57856                 "BancoEstado": {
57857                     "count": 80
57858                 },
57859                 "Millennium Bank": {
57860                     "count": 414
57861                 },
57862                 "State Bank of India": {
57863                     "count": 151
57864                 },
57865                 "Беларусбанк": {
57866                     "count": 242
57867                 },
57868                 "ING Bank Śląski": {
57869                     "count": 67
57870                 },
57871                 "Caixa Geral de Depósitos": {
57872                     "count": 129
57873                 },
57874                 "Kreissparkasse Köln": {
57875                     "count": 65
57876                 },
57877                 "Banco BCI": {
57878                     "count": 51
57879                 },
57880                 "Banco de Chile": {
57881                     "count": 98
57882                 },
57883                 "ВТБ24": {
57884                     "count": 326
57885                 },
57886                 "UBS": {
57887                     "count": 134
57888                 },
57889                 "PKO BP": {
57890                     "count": 265
57891                 },
57892                 "Chinabank": {
57893                     "count": 55
57894                 },
57895                 "PSBank": {
57896                     "count": 59
57897                 },
57898                 "Union Bank": {
57899                     "count": 124
57900                 },
57901                 "China Bank": {
57902                     "count": 66
57903                 },
57904                 "RCBC": {
57905                     "count": 122
57906                 },
57907                 "Unicaja": {
57908                     "count": 83
57909                 },
57910                 "BBK": {
57911                     "count": 79
57912                 },
57913                 "Ibercaja": {
57914                     "count": 69
57915                 },
57916                 "RBS": {
57917                     "count": 143
57918                 },
57919                 "Commercial Bank of Ceylon PLC": {
57920                     "count": 79
57921                 },
57922                 "Bank of Ireland": {
57923                     "count": 109
57924                 },
57925                 "BNL": {
57926                     "count": 87
57927                 },
57928                 "Banco Santander": {
57929                     "count": 138
57930                 },
57931                 "Banco Itaú": {
57932                     "count": 111
57933                 },
57934                 "AIB": {
57935                     "count": 72
57936                 },
57937                 "BZ WBK": {
57938                     "count": 77
57939                 },
57940                 "Banco do Brasil": {
57941                     "count": 557
57942                 },
57943                 "Caixa Econômica Federal": {
57944                     "count": 184
57945                 },
57946                 "Fifth Third Bank": {
57947                     "count": 84
57948                 },
57949                 "Banca Popolare di Vicenza": {
57950                     "count": 81
57951                 },
57952                 "Wachovia": {
57953                     "count": 58
57954                 },
57955                 "OLB": {
57956                     "count": 53
57957                 },
57958                 "みずほ銀行": {
57959                     "count": 78
57960                 },
57961                 "BES": {
57962                     "count": 72
57963                 },
57964                 "ICICI Bank": {
57965                     "count": 91
57966                 },
57967                 "HDFC Bank": {
57968                     "count": 91
57969                 },
57970                 "La Banque Postale": {
57971                     "count": 67
57972                 },
57973                 "Pekao SA": {
57974                     "count": 56
57975                 },
57976                 "Oberbank": {
57977                     "count": 90
57978                 },
57979                 "Bradesco": {
57980                     "count": 295
57981                 },
57982                 "Oldenburgische Landesbank": {
57983                     "count": 56
57984                 },
57985                 "Bendigo Bank": {
57986                     "count": 93
57987                 },
57988                 "Argenta": {
57989                     "count": 86
57990                 },
57991                 "AXA": {
57992                     "count": 68
57993                 },
57994                 "Axis Bank": {
57995                     "count": 61
57996                 },
57997                 "Banco Nación": {
57998                     "count": 67
57999                 },
58000                 "GE Money Bank": {
58001                     "count": 72
58002                 },
58003                 "Альфа-Банк": {
58004                     "count": 185
58005                 },
58006                 "Белагропромбанк": {
58007                     "count": 70
58008                 },
58009                 "Caja Círculo": {
58010                     "count": 65
58011                 },
58012                 "Banco Galicia": {
58013                     "count": 51
58014                 },
58015                 "Eurobank": {
58016                     "count": 97
58017                 },
58018                 "Banca Intesa": {
58019                     "count": 62
58020                 },
58021                 "Canara Bank": {
58022                     "count": 92
58023                 },
58024                 "Cajamar": {
58025                     "count": 77
58026                 },
58027                 "Banamex": {
58028                     "count": 149
58029                 },
58030                 "Crédit Mutuel de Bretagne": {
58031                     "count": 335
58032                 },
58033                 "Davivienda": {
58034                     "count": 83
58035                 },
58036                 "Bank Spółdzielczy": {
58037                     "count": 159
58038                 },
58039                 "Credit Agricole": {
58040                     "count": 157
58041                 },
58042                 "Bankinter": {
58043                     "count": 59
58044                 },
58045                 "Banque Nationale": {
58046                     "count": 63
58047                 },
58048                 "Bank of the West": {
58049                     "count": 96
58050                 },
58051                 "Key Bank": {
58052                     "count": 155
58053                 },
58054                 "Western Union": {
58055                     "count": 88
58056                 },
58057                 "Citizens Bank": {
58058                     "count": 115
58059                 },
58060                 "ПриватБанк": {
58061                     "count": 513
58062                 },
58063                 "Security Bank": {
58064                     "count": 78
58065                 },
58066                 "Millenium": {
58067                     "count": 60
58068                 },
58069                 "Bankia": {
58070                     "count": 149
58071                 },
58072                 "三菱東京UFJ銀行": {
58073                     "count": 159
58074                 },
58075                 "Caixa": {
58076                     "count": 117
58077                 },
58078                 "Banco de Costa Rica": {
58079                     "count": 63
58080                 },
58081                 "SunTrust Bank": {
58082                     "count": 73
58083                 },
58084                 "Itaú": {
58085                     "count": 338
58086                 },
58087                 "PBZ": {
58088                     "count": 52
58089                 },
58090                 "中国工商银行": {
58091                     "count": 51
58092                 },
58093                 "Bancolombia": {
58094                     "count": 89
58095                 },
58096                 "Райффайзен Банк Аваль": {
58097                     "count": 64
58098                 },
58099                 "Bancomer": {
58100                     "count": 115
58101                 },
58102                 "Banorte": {
58103                     "count": 80
58104                 },
58105                 "Alior Bank": {
58106                     "count": 81
58107                 },
58108                 "BOC": {
58109                     "count": 51
58110                 },
58111                 "Банк Москвы": {
58112                     "count": 118
58113                 },
58114                 "ВТБ": {
58115                     "count": 59
58116                 },
58117                 "Getin Bank": {
58118                     "count": 55
58119                 },
58120                 "Caja Duero": {
58121                     "count": 57
58122                 },
58123                 "Regions Bank": {
58124                     "count": 62
58125                 },
58126                 "Росбанк": {
58127                     "count": 177
58128                 },
58129                 "Banco Estado": {
58130                     "count": 72
58131                 },
58132                 "BCI": {
58133                     "count": 68
58134                 },
58135                 "SunTrust": {
58136                     "count": 68
58137                 },
58138                 "PNC Bank": {
58139                     "count": 254
58140                 },
58141                 "신한은행": {
58142                     "count": 217,
58143                     "tags": {
58144                         "name:en": "Sinhan Bank"
58145                     }
58146                 },
58147                 "우리은행": {
58148                     "count": 291,
58149                     "tags": {
58150                         "name:en": "Uri Bank"
58151                     }
58152                 },
58153                 "국민은행": {
58154                     "count": 165,
58155                     "tags": {
58156                         "name:en": "Gungmin Bank"
58157                     }
58158                 },
58159                 "중소기업은행": {
58160                     "count": 52,
58161                     "tags": {
58162                         "name:en": "Industrial Bank of Korea"
58163                     }
58164                 },
58165                 "광주은행": {
58166                     "count": 51,
58167                     "tags": {
58168                         "name:en": "Gwangju Bank"
58169                     }
58170                 },
58171                 "Газпромбанк": {
58172                     "count": 100
58173                 },
58174                 "M&T Bank": {
58175                     "count": 92
58176                 },
58177                 "Caja de Burgos": {
58178                     "count": 51
58179                 },
58180                 "Santander Totta": {
58181                     "count": 69
58182                 },
58183                 "УкрСиббанк": {
58184                     "count": 192
58185                 },
58186                 "Ощадбанк": {
58187                     "count": 364
58188                 },
58189                 "Уралсиб": {
58190                     "count": 85
58191                 },
58192                 "りそな銀行": {
58193                     "count": 225,
58194                     "tags": {
58195                         "name:en": "Mizuho Bank"
58196                     }
58197                 },
58198                 "Ecobank": {
58199                     "count": 66
58200                 },
58201                 "Cajero Automatico Bancared": {
58202                     "count": 145
58203                 },
58204                 "Промсвязьбанк": {
58205                     "count": 93
58206                 },
58207                 "三井住友銀行": {
58208                     "count": 129
58209                 },
58210                 "Banco Provincia": {
58211                     "count": 67
58212                 },
58213                 "BB&T": {
58214                     "count": 147
58215                 },
58216                 "Возрождение": {
58217                     "count": 59
58218                 },
58219                 "Capital One": {
58220                     "count": 59
58221                 },
58222                 "横浜銀行": {
58223                     "count": 51
58224                 },
58225                 "Bank Mandiri": {
58226                     "count": 62
58227                 },
58228                 "Banco de la Nación": {
58229                     "count": 92
58230                 },
58231                 "Banco G&T Continental": {
58232                     "count": 62
58233                 },
58234                 "Peoples Bank": {
58235                     "count": 60
58236                 },
58237                 "工商银行": {
58238                     "count": 51
58239                 },
58240                 "Совкомбанк": {
58241                     "count": 55
58242                 },
58243                 "Provincial": {
58244                     "count": 56
58245                 },
58246                 "Banco de Desarrollo Banrural": {
58247                     "count": 73
58248                 },
58249                 "Banco Bradesco": {
58250                     "count": 65
58251                 },
58252                 "Bicentenario": {
58253                     "count": 182
58254                 },
58255                 "ლიბერთი ბანკი": {
58256                     "count": 54,
58257                     "tags": {
58258                         "name:en": "Liberty Bank"
58259                     }
58260                 },
58261                 "Banesco": {
58262                     "count": 108
58263                 },
58264                 "Mercantil": {
58265                     "count": 75
58266                 },
58267                 "Bank BRI": {
58268                     "count": 53
58269                 },
58270                 "Del Tesoro": {
58271                     "count": 91
58272                 },
58273                 "하나은행": {
58274                     "count": 77
58275                 },
58276                 "CityCommerce Bank": {
58277                     "count": 71
58278                 },
58279                 "De Venezuela": {
58280                     "count": 117
58281                 }
58282             },
58283             "car_rental": {
58284                 "Europcar": {
58285                     "count": 291
58286                 },
58287                 "Budget": {
58288                     "count": 92
58289                 },
58290                 "Sixt": {
58291                     "count": 161
58292                 },
58293                 "Avis": {
58294                     "count": 282
58295                 },
58296                 "Hertz": {
58297                     "count": 293
58298                 },
58299                 "Enterprise": {
58300                     "count": 199
58301                 },
58302                 "stadtmobil CarSharing-Station": {
58303                     "count": 148
58304                 }
58305             },
58306             "pharmacy": {
58307                 "Rowlands Pharmacy": {
58308                     "count": 71
58309                 },
58310                 "Boots": {
58311                     "count": 840
58312                 },
58313                 "Marien-Apotheke": {
58314                     "count": 314
58315                 },
58316                 "Mercury Drug": {
58317                     "count": 426
58318                 },
58319                 "Löwen-Apotheke": {
58320                     "count": 356
58321                 },
58322                 "Superdrug": {
58323                     "count": 117
58324                 },
58325                 "Sonnen-Apotheke": {
58326                     "count": 311
58327                 },
58328                 "Rathaus-Apotheke": {
58329                     "count": 132
58330                 },
58331                 "Engel-Apotheke": {
58332                     "count": 123
58333                 },
58334                 "Hirsch-Apotheke": {
58335                     "count": 83
58336                 },
58337                 "Stern-Apotheke": {
58338                     "count": 67
58339                 },
58340                 "Lloyds Pharmacy": {
58341                     "count": 295
58342                 },
58343                 "Rosen-Apotheke": {
58344                     "count": 208
58345                 },
58346                 "Stadt-Apotheke": {
58347                     "count": 302
58348                 },
58349                 "Markt-Apotheke": {
58350                     "count": 164
58351                 },
58352                 "Аптека": {
58353                     "count": 1989
58354                 },
58355                 "Pharmasave": {
58356                     "count": 64
58357                 },
58358                 "Brunnen-Apotheke": {
58359                     "count": 53
58360                 },
58361                 "Shoppers Drug Mart": {
58362                     "count": 430
58363                 },
58364                 "Apotheke am Markt": {
58365                     "count": 60
58366                 },
58367                 "Alte Apotheke": {
58368                     "count": 88
58369                 },
58370                 "Neue Apotheke": {
58371                     "count": 109
58372                 },
58373                 "Gintarinė vaistinė": {
58374                     "count": 101
58375                 },
58376                 "Rats-Apotheke": {
58377                     "count": 84
58378                 },
58379                 "Adler Apotheke": {
58380                     "count": 313
58381                 },
58382                 "Pharmacie Centrale": {
58383                     "count": 64
58384                 },
58385                 "Walgreens": {
58386                     "count": 1619
58387                 },
58388                 "Rite Aid": {
58389                     "count": 745
58390                 },
58391                 "Apotheke": {
58392                     "count": 165
58393                 },
58394                 "Linden-Apotheke": {
58395                     "count": 211
58396                 },
58397                 "Bahnhof-Apotheke": {
58398                     "count": 66
58399                 },
58400                 "Burg-Apotheke": {
58401                     "count": 55
58402                 },
58403                 "Jean Coutu": {
58404                     "count": 62
58405                 },
58406                 "Pharmaprix": {
58407                     "count": 60
58408                 },
58409                 "Farmacias Ahumada": {
58410                     "count": 104
58411                 },
58412                 "Farmacia Comunale": {
58413                     "count": 113
58414                 },
58415                 "Farmacias Cruz Verde": {
58416                     "count": 86
58417                 },
58418                 "Cruz Verde": {
58419                     "count": 99
58420                 },
58421                 "Hubertus Apotheke": {
58422                     "count": 52
58423                 },
58424                 "CVS": {
58425                     "count": 1560
58426                 },
58427                 "Farmacias SalcoBrand": {
58428                     "count": 133
58429                 },
58430                 "Фармация": {
58431                     "count": 120
58432                 },
58433                 "Bären-Apotheke": {
58434                     "count": 74
58435                 },
58436                 "Clicks": {
58437                     "count": 113
58438                 },
58439                 "セイジョー": {
58440                     "count": 53
58441                 },
58442                 "マツモトキヨシ": {
58443                     "count": 115
58444                 },
58445                 "Dr. Max": {
58446                     "count": 51
58447                 },
58448                 "Вита": {
58449                     "count": 106
58450                 },
58451                 "Радуга": {
58452                     "count": 70
58453                 },
58454                 "サンドラッグ": {
58455                     "count": 61
58456                 },
58457                 "Apteka": {
58458                     "count": 366
58459                 },
58460                 "Первая помощь": {
58461                     "count": 74
58462                 },
58463                 "Ригла": {
58464                     "count": 113
58465                 },
58466                 "Имплозия": {
58467                     "count": 63
58468                 },
58469                 "Kinney Drugs": {
58470                     "count": 68
58471                 },
58472                 "Классика": {
58473                     "count": 67
58474                 },
58475                 "Ljekarna": {
58476                     "count": 53
58477                 },
58478                 "SalcoBrand": {
58479                     "count": 88
58480                 },
58481                 "Аптека 36,6": {
58482                     "count": 224
58483                 },
58484                 "Фармакор": {
58485                     "count": 75
58486                 },
58487                 "スギ薬局": {
58488                     "count": 84
58489                 },
58490                 "Аптечный пункт": {
58491                     "count": 148
58492                 },
58493                 "Невис": {
58494                     "count": 60
58495                 },
58496                 "トモズ (Tomod's)": {
58497                     "count": 83
58498                 },
58499                 "Eurovaistinė": {
58500                     "count": 65
58501                 },
58502                 "Farmacity": {
58503                     "count": 68
58504                 },
58505                 "аптека": {
58506                     "count": 96
58507                 },
58508                 "The Generics Pharmacy": {
58509                     "count": 95
58510                 },
58511                 "Farmatodo": {
58512                     "count": 123
58513                 },
58514                 "Duane Reade": {
58515                     "count": 61
58516                 },
58517                 "H-E-B": {
58518                     "count": 262
58519                 },
58520                 "Фармленд": {
58521                     "count": 82
58522                 },
58523                 "ドラッグてらしま (Drug Terashima)": {
58524                     "count": 96
58525                 },
58526                 "Арніка": {
58527                     "count": 125
58528                 },
58529                 "ავერსი (Aversi)": {
58530                     "count": 62
58531                 },
58532                 "Farmahorro": {
58533                     "count": 58
58534                 }
58535             },
58536             "cafe": {
58537                 "Starbucks": {
58538                     "count": 4238,
58539                     "tags": {
58540                         "cuisine": "coffee_shop"
58541                     }
58542                 },
58543                 "Cafeteria": {
58544                     "count": 115
58545                 },
58546                 "Costa": {
58547                     "count": 618
58548                 },
58549                 "Caffè Nero": {
58550                     "count": 169
58551                 },
58552                 "Кафе": {
58553                     "count": 226
58554                 },
58555                 "Café Central": {
58556                     "count": 61
58557                 },
58558                 "Second Cup": {
58559                     "count": 193
58560                 },
58561                 "Dunkin Donuts": {
58562                     "count": 428,
58563                     "tags": {
58564                         "cuisine": "donut"
58565                     }
58566                 },
58567                 "Espresso House": {
58568                     "count": 53
58569                 },
58570                 "Segafredo": {
58571                     "count": 69
58572                 },
58573                 "Coffee Time": {
58574                     "count": 94
58575                 },
58576                 "Cafe Coffee Day": {
58577                     "count": 120
58578                 },
58579                 "Eiscafe Venezia": {
58580                     "count": 180
58581                 },
58582                 "スターバックス": {
58583                     "count": 251,
58584                     "tags": {
58585                         "name:en": "Starbucks"
58586                     }
58587                 },
58588                 "Шоколадница": {
58589                     "count": 145
58590                 },
58591                 "Pret A Manger": {
58592                     "count": 119
58593                 },
58594                 "Столовая": {
58595                     "count": 391
58596                 },
58597                 "Jamba Juice": {
58598                     "count": 53
58599                 },
58600                 "ドトール": {
58601                     "count": 164,
58602                     "tags": {
58603                         "name:en": "DOUTOR"
58604                     }
58605                 },
58606                 "Tchibo": {
58607                     "count": 100
58608                 },
58609                 "Кофе Хауз": {
58610                     "count": 104
58611                 },
58612                 "Caribou Coffee": {
58613                     "count": 100
58614                 },
58615                 "Уют": {
58616                     "count": 51
58617                 },
58618                 "Шашлычная": {
58619                     "count": 58
58620                 },
58621                 "คาเฟ่ อเมซอน": {
58622                     "count": 62
58623                 },
58624                 "Traveler's Coffee": {
58625                     "count": 60
58626                 },
58627                 "カフェ・ド・クリエ": {
58628                     "count": 67,
58629                     "tags": {
58630                         "name:en": "Cafe de CRIE"
58631                     }
58632                 },
58633                 "Cafe Amazon": {
58634                     "count": 65
58635                 }
58636             }
58637         },
58638         "shop": {
58639             "supermarket": {
58640                 "Budgens": {
58641                     "count": 88
58642                 },
58643                 "Morrisons": {
58644                     "count": 411
58645                 },
58646                 "Interspar": {
58647                     "count": 142
58648                 },
58649                 "Merkur": {
58650                     "count": 107
58651                 },
58652                 "Sainsbury's": {
58653                     "count": 547
58654                 },
58655                 "Lidl": {
58656                     "count": 7130
58657                 },
58658                 "Edeka": {
58659                     "count": 2293
58660                 },
58661                 "Coles": {
58662                     "count": 400
58663                 },
58664                 "Iceland": {
58665                     "count": 315
58666                 },
58667                 "Coop": {
58668                     "count": 2100
58669                 },
58670                 "Tesco": {
58671                     "count": 1297
58672                 },
58673                 "Woolworths": {
58674                     "count": 541
58675                 },
58676                 "Zielpunkt": {
58677                     "count": 239
58678                 },
58679                 "Nahkauf": {
58680                     "count": 170
58681                 },
58682                 "Billa": {
58683                     "count": 1432
58684                 },
58685                 "Kaufland": {
58686                     "count": 1004
58687                 },
58688                 "Plus": {
58689                     "count": 120
58690                 },
58691                 "ALDI": {
58692                     "count": 5172
58693                 },
58694                 "Checkers": {
58695                     "count": 128
58696                 },
58697                 "Tesco Metro": {
58698                     "count": 137
58699                 },
58700                 "NP": {
58701                     "count": 153
58702                 },
58703                 "Penny": {
58704                     "count": 1759
58705                 },
58706                 "Norma": {
58707                     "count": 1068
58708                 },
58709                 "Asda": {
58710                     "count": 225
58711                 },
58712                 "Netto": {
58713                     "count": 4379
58714                 },
58715                 "Rewe": {
58716                     "count": 2645
58717                 },
58718                 "Aldi Süd": {
58719                     "count": 594
58720                 },
58721                 "Real": {
58722                     "count": 246
58723                 },
58724                 "Tesco Express": {
58725                     "count": 406
58726                 },
58727                 "King Soopers": {
58728                     "count": 72
58729                 },
58730                 "Kiwi": {
58731                     "count": 167
58732                 },
58733                 "Pick n Pay": {
58734                     "count": 241
58735                 },
58736                 "ICA": {
58737                     "count": 192
58738                 },
58739                 "Tengelmann": {
58740                     "count": 188
58741                 },
58742                 "Carrefour": {
58743                     "count": 1640
58744                 },
58745                 "Waitrose": {
58746                     "count": 258
58747                 },
58748                 "Spar": {
58749                     "count": 2386
58750                 },
58751                 "Hofer": {
58752                     "count": 442
58753                 },
58754                 "M-Preis": {
58755                     "count": 76
58756                 },
58757                 "tegut": {
58758                     "count": 210
58759                 },
58760                 "Sainsbury's Local": {
58761                     "count": 118
58762                 },
58763                 "E-Center": {
58764                     "count": 66
58765                 },
58766                 "Aldi Nord": {
58767                     "count": 210
58768                 },
58769                 "nahkauf": {
58770                     "count": 84
58771                 },
58772                 "Meijer": {
58773                     "count": 76
58774                 },
58775                 "Safeway": {
58776                     "count": 410
58777                 },
58778                 "Costco": {
58779                     "count": 152
58780                 },
58781                 "Albert": {
58782                     "count": 185
58783                 },
58784                 "Jumbo": {
58785                     "count": 194
58786                 },
58787                 "Shoprite": {
58788                     "count": 244
58789                 },
58790                 "MPreis": {
58791                     "count": 54
58792                 },
58793                 "Penny Market": {
58794                     "count": 429
58795                 },
58796                 "Tesco Extra": {
58797                     "count": 123
58798                 },
58799                 "Albert Heijn": {
58800                     "count": 476
58801                 },
58802                 "IGA": {
58803                     "count": 363
58804                 },
58805                 "Super U": {
58806                     "count": 488
58807                 },
58808                 "Metro": {
58809                     "count": 260
58810                 },
58811                 "Neukauf": {
58812                     "count": 77
58813                 },
58814                 "Migros": {
58815                     "count": 459
58816                 },
58817                 "Marktkauf": {
58818                     "count": 121
58819                 },
58820                 "Delikatesy Centrum": {
58821                     "count": 59
58822                 },
58823                 "C1000": {
58824                     "count": 307
58825                 },
58826                 "Hoogvliet": {
58827                     "count": 53
58828                 },
58829                 "Food Basics": {
58830                     "count": 75
58831                 },
58832                 "Casino": {
58833                     "count": 264
58834                 },
58835                 "Penny Markt": {
58836                     "count": 466
58837                 },
58838                 "Giant": {
58839                     "count": 191
58840                 },
58841                 "COOP Jednota": {
58842                     "count": 73
58843                 },
58844                 "Rema 1000": {
58845                     "count": 368
58846                 },
58847                 "Kaufpark": {
58848                     "count": 96
58849                 },
58850                 "ALDI SÜD": {
58851                     "count": 113
58852                 },
58853                 "Simply Market": {
58854                     "count": 330
58855                 },
58856                 "Konzum": {
58857                     "count": 230
58858                 },
58859                 "Carrefour Express": {
58860                     "count": 353
58861                 },
58862                 "Eurospar": {
58863                     "count": 270
58864                 },
58865                 "Mercator": {
58866                     "count": 125
58867                 },
58868                 "Famila": {
58869                     "count": 130
58870                 },
58871                 "Hemköp": {
58872                     "count": 82
58873                 },
58874                 "real,-": {
58875                     "count": 81
58876                 },
58877                 "Markant": {
58878                     "count": 88
58879                 },
58880                 "Volg": {
58881                     "count": 135
58882                 },
58883                 "Leader Price": {
58884                     "count": 267
58885                 },
58886                 "Treff 3000": {
58887                     "count": 94
58888                 },
58889                 "SuperBrugsen": {
58890                     "count": 67
58891                 },
58892                 "Kaiser's": {
58893                     "count": 256
58894                 },
58895                 "K+K": {
58896                     "count": 106
58897                 },
58898                 "Unimarkt": {
58899                     "count": 86
58900                 },
58901                 "Carrefour City": {
58902                     "count": 126
58903                 },
58904                 "Sobeys": {
58905                     "count": 122
58906                 },
58907                 "S-Market": {
58908                     "count": 109
58909                 },
58910                 "Combi": {
58911                     "count": 55
58912                 },
58913                 "Denner": {
58914                     "count": 276
58915                 },
58916                 "Konsum": {
58917                     "count": 133
58918                 },
58919                 "Franprix": {
58920                     "count": 312
58921                 },
58922                 "Monoprix": {
58923                     "count": 198
58924                 },
58925                 "Diska": {
58926                     "count": 69
58927                 },
58928                 "PENNY": {
58929                     "count": 79
58930                 },
58931                 "Dia": {
58932                     "count": 835
58933                 },
58934                 "Giant Eagle": {
58935                     "count": 85
58936                 },
58937                 "NORMA": {
58938                     "count": 115
58939                 },
58940                 "AD Delhaize": {
58941                     "count": 63
58942                 },
58943                 "Auchan": {
58944                     "count": 152
58945                 },
58946                 "Mercadona": {
58947                     "count": 769
58948                 },
58949                 "Consum": {
58950                     "count": 130
58951                 },
58952                 "Carrefour Market": {
58953                     "count": 80
58954                 },
58955                 "Whole Foods": {
58956                     "count": 210,
58957                     "tags": {
58958                         "shop": "supermarket"
58959                     }
58960                 },
58961                 "Pam": {
58962                     "count": 56
58963                 },
58964                 "sky": {
58965                     "count": 105
58966                 },
58967                 "Despar": {
58968                     "count": 146
58969                 },
58970                 "Eroski": {
58971                     "count": 208
58972                 },
58973                 "Costcutter": {
58974                     "count": 63
58975                 },
58976                 "Maxi": {
58977                     "count": 108
58978                 },
58979                 "Colruyt": {
58980                     "count": 180
58981                 },
58982                 "The Co-operative": {
58983                     "count": 64
58984                 },
58985                 "Intermarché": {
58986                     "count": 1210
58987                 },
58988                 "Delhaize": {
58989                     "count": 207
58990                 },
58991                 "CBA": {
58992                     "count": 176
58993                 },
58994                 "Shopi": {
58995                     "count": 53
58996                 },
58997                 "Walmart": {
58998                     "count": 644
58999                 },
59000                 "Kroger": {
59001                     "count": 317
59002                 },
59003                 "Albertsons": {
59004                     "count": 242
59005                 },
59006                 "Trader Joe's": {
59007                     "count": 235
59008                 },
59009                 "Feneberg": {
59010                     "count": 58
59011                 },
59012                 "denn's Biomarkt": {
59013                     "count": 52
59014                 },
59015                 "dm": {
59016                     "count": 114
59017                 },
59018                 "Kvickly": {
59019                     "count": 55
59020                 },
59021                 "Makro": {
59022                     "count": 140
59023                 },
59024                 "Dico": {
59025                     "count": 53
59026                 },
59027                 "Nah & Frisch": {
59028                     "count": 73
59029                 },
59030                 "Champion": {
59031                     "count": 59
59032                 },
59033                 "ICA Supermarket": {
59034                     "count": 51
59035                 },
59036                 "Fakta": {
59037                     "count": 235
59038                 },
59039                 "Магнит": {
59040                     "count": 1760
59041                 },
59042                 "Caprabo": {
59043                     "count": 103
59044                 },
59045                 "Famiglia Cooperativa": {
59046                     "count": 64
59047                 },
59048                 "Народная 7Я семьЯ": {
59049                     "count": 154
59050                 },
59051                 "Esselunga": {
59052                     "count": 85
59053                 },
59054                 "Maxima": {
59055                     "count": 102
59056                 },
59057                 "Petit Casino": {
59058                     "count": 111
59059                 },
59060                 "Wasgau": {
59061                     "count": 60
59062                 },
59063                 "Pingo Doce": {
59064                     "count": 253
59065                 },
59066                 "Match": {
59067                     "count": 140
59068                 },
59069                 "Profi": {
59070                     "count": 60
59071                 },
59072                 "Lider": {
59073                     "count": 65
59074                 },
59075                 "Unimarc": {
59076                     "count": 177
59077                 },
59078                 "The Co-operative Food": {
59079                     "count": 190
59080                 },
59081                 "Santa Isabel": {
59082                     "count": 128
59083                 },
59084                 "Седьмой континент": {
59085                     "count": 79
59086                 },
59087                 "HIT": {
59088                     "count": 59
59089                 },
59090                 "Rimi": {
59091                     "count": 106
59092                 },
59093                 "Conad": {
59094                     "count": 304
59095                 },
59096                 "Фуршет": {
59097                     "count": 76
59098                 },
59099                 "Willys": {
59100                     "count": 56
59101                 },
59102                 "Farmfoods": {
59103                     "count": 64
59104                 },
59105                 "U Express": {
59106                     "count": 51
59107                 },
59108                 "Фора": {
59109                     "count": 52
59110                 },
59111                 "Dunnes Stores": {
59112                     "count": 73
59113                 },
59114                 "Сільпо": {
59115                     "count": 125
59116                 },
59117                 "マルエツ": {
59118                     "count": 59
59119                 },
59120                 "Piggly Wiggly": {
59121                     "count": 57
59122                 },
59123                 "Crai": {
59124                     "count": 54
59125                 },
59126                 "El Árbol": {
59127                     "count": 73
59128                 },
59129                 "Centre Commercial E. Leclerc": {
59130                     "count": 549
59131                 },
59132                 "Foodland": {
59133                     "count": 100
59134                 },
59135                 "Super Brugsen": {
59136                     "count": 67
59137                 },
59138                 "Дикси": {
59139                     "count": 683
59140                 },
59141                 "Пятёрочка": {
59142                     "count": 1344
59143                 },
59144                 "Publix": {
59145                     "count": 339
59146                 },
59147                 "Føtex": {
59148                     "count": 66
59149                 },
59150                 "coop": {
59151                     "count": 73
59152                 },
59153                 "Fressnapf": {
59154                     "count": 69
59155                 },
59156                 "Coop Konsum": {
59157                     "count": 79
59158                 },
59159                 "Carrefour Contact": {
59160                     "count": 83
59161                 },
59162                 "No Frills": {
59163                     "count": 105
59164                 },
59165                 "Plodine": {
59166                     "count": 52
59167                 },
59168                 "ADEG": {
59169                     "count": 68
59170                 },
59171                 "Minipreço": {
59172                     "count": 111
59173                 },
59174                 "Biedronka": {
59175                     "count": 1335
59176                 },
59177                 "Eurospin": {
59178                     "count": 155
59179                 },
59180                 "Семья": {
59181                     "count": 62
59182                 },
59183                 "Gadis": {
59184                     "count": 53
59185                 },
59186                 "Евроопт": {
59187                     "count": 68
59188                 },
59189                 "Centra": {
59190                     "count": 51
59191                 },
59192                 "Квартал": {
59193                     "count": 82
59194                 },
59195                 "New World": {
59196                     "count": 69
59197                 },
59198                 "Countdown": {
59199                     "count": 95
59200                 },
59201                 "Reliance Fresh": {
59202                     "count": 61
59203                 },
59204                 "Stokrotka": {
59205                     "count": 98
59206                 },
59207                 "Coop Jednota": {
59208                     "count": 74
59209                 },
59210                 "Fred Meyer": {
59211                     "count": 64
59212                 },
59213                 "Irma": {
59214                     "count": 58
59215                 },
59216                 "Continente": {
59217                     "count": 75
59218                 },
59219                 "Price Chopper": {
59220                     "count": 99
59221                 },
59222                 "Game": {
59223                     "count": 52
59224                 },
59225                 "Soriana": {
59226                     "count": 93
59227                 },
59228                 "Alimerka": {
59229                     "count": 64
59230                 },
59231                 "Piotr i Paweł": {
59232                     "count": 53
59233                 },
59234                 "Перекресток": {
59235                     "count": 312
59236                 },
59237                 "Maxima X": {
59238                     "count": 117
59239                 },
59240                 "Карусель": {
59241                     "count": 55
59242                 },
59243                 "ALDI Nord": {
59244                     "count": 51
59245                 },
59246                 "Condis": {
59247                     "count": 67
59248                 },
59249                 "Sam's Club": {
59250                     "count": 138
59251                 },
59252                 "Копейка": {
59253                     "count": 87
59254                 },
59255                 "Géant Casino": {
59256                     "count": 54
59257                 },
59258                 "ASDA": {
59259                     "count": 180
59260                 },
59261                 "Intermarche": {
59262                     "count": 115
59263                 },
59264                 "Stop & Shop": {
59265                     "count": 66
59266                 },
59267                 "Food Lion": {
59268                     "count": 216
59269                 },
59270                 "Harris Teeter": {
59271                     "count": 92
59272                 },
59273                 "Foodworks": {
59274                     "count": 62
59275                 },
59276                 "Polo Market": {
59277                     "count": 86
59278                 },
59279                 "Лента": {
59280                     "count": 51
59281                 },
59282                 "西友 (SEIYU)": {
59283                     "count": 58
59284                 },
59285                 "H-E-B": {
59286                     "count": 293
59287                 },
59288                 "Атак": {
59289                     "count": 53
59290                 },
59291                 "Полушка": {
59292                     "count": 139
59293                 },
59294                 "Extra": {
59295                     "count": 82
59296                 },
59297                 "Lewiatan": {
59298                     "count": 94
59299                 },
59300                 "Sigma": {
59301                     "count": 51
59302                 },
59303                 "АТБ": {
59304                     "count": 322
59305                 },
59306                 "Społem": {
59307                     "count": 55
59308                 },
59309                 "Bodega Aurrera": {
59310                     "count": 82
59311                 },
59312                 "Tesco Lotus": {
59313                     "count": 77
59314                 },
59315                 "Мария-Ра": {
59316                     "count": 108
59317                 },
59318                 "Магнолия": {
59319                     "count": 72
59320                 },
59321                 "Магазин": {
59322                     "count": 120
59323                 },
59324                 "Монетка": {
59325                     "count": 174
59326                 },
59327                 "Hy-Vee": {
59328                     "count": 75
59329                 },
59330                 "Walmart Supercenter": {
59331                     "count": 133
59332                 },
59333                 "Hannaford": {
59334                     "count": 57
59335                 },
59336                 "Wegmans": {
59337                     "count": 83
59338                 },
59339                 "業務スーパー": {
59340                     "count": 61
59341                 },
59342                 "Norfa XL": {
59343                     "count": 55
59344                 },
59345                 "ヨークマート (YorkMart)": {
59346                     "count": 64
59347                 },
59348                 "Leclerc Drive": {
59349                     "count": 76
59350                 }
59351             },
59352             "electronics": {
59353                 "Media Markt": {
59354                     "count": 285
59355                 },
59356                 "Maplin": {
59357                     "count": 65
59358                 },
59359                 "Best Buy": {
59360                     "count": 345
59361                 },
59362                 "Future Shop": {
59363                     "count": 73
59364                 },
59365                 "Saturn": {
59366                     "count": 134
59367                 },
59368                 "Currys": {
59369                     "count": 80
59370                 },
59371                 "Radio Shack": {
59372                     "count": 269
59373                 },
59374                 "Euronics": {
59375                     "count": 115
59376                 },
59377                 "Expert": {
59378                     "count": 123
59379                 },
59380                 "Эльдорадо": {
59381                     "count": 184
59382                 },
59383                 "Darty": {
59384                     "count": 74
59385                 },
59386                 "М.Видео": {
59387                     "count": 89
59388                 },
59389                 "ヤマダ電機": {
59390                     "count": 51
59391                 }
59392             },
59393             "convenience": {
59394                 "Shell": {
59395                     "count": 255
59396                 },
59397                 "Spar": {
59398                     "count": 1119
59399                 },
59400                 "McColl's": {
59401                     "count": 100
59402                 },
59403                 "Tesco Express": {
59404                     "count": 426
59405                 },
59406                 "Sainsbury's Local": {
59407                     "count": 104
59408                 },
59409                 "Aral": {
59410                     "count": 56
59411                 },
59412                 "One Stop": {
59413                     "count": 146
59414                 },
59415                 "The Co-operative Food": {
59416                     "count": 115
59417                 },
59418                 "Londis": {
59419                     "count": 352
59420                 },
59421                 "7-Eleven": {
59422                     "count": 4440
59423                 },
59424                 "CBA": {
59425                     "count": 135
59426                 },
59427                 "Coop": {
59428                     "count": 678
59429                 },
59430                 "Sale": {
59431                     "count": 80
59432                 },
59433                 "Statoil": {
59434                     "count": 69
59435                 },
59436                 "Sheetz": {
59437                     "count": 54
59438                 },
59439                 "Konzum": {
59440                     "count": 173
59441                 },
59442                 "Siwa": {
59443                     "count": 216
59444                 },
59445                 "Mercator": {
59446                     "count": 57
59447                 },
59448                 "Esso": {
59449                     "count": 67
59450                 },
59451                 "COOP Jednota": {
59452                     "count": 181
59453                 },
59454                 "Mac's": {
59455                     "count": 152
59456                 },
59457                 "Alepa": {
59458                     "count": 62
59459                 },
59460                 "Hasty Market": {
59461                     "count": 54
59462                 },
59463                 "K-Market": {
59464                     "count": 54
59465                 },
59466                 "Costcutter": {
59467                     "count": 292
59468                 },
59469                 "Valintatalo": {
59470                     "count": 62
59471                 },
59472                 "Casino": {
59473                     "count": 90
59474                 },
59475                 "Franprix": {
59476                     "count": 61
59477                 },
59478                 "Circle K": {
59479                     "count": 289
59480                 },
59481                 "セブンイレブン": {
59482                     "count": 3011,
59483                     "tags": {
59484                         "name:en": "7-Eleven"
59485                     }
59486                 },
59487                 "ローソン": {
59488                     "count": 1596,
59489                     "tags": {
59490                         "name:en": "LAWSON"
59491                     }
59492                 },
59493                 "BP": {
59494                     "count": 163
59495                 },
59496                 "Tesco": {
59497                     "count": 55
59498                 },
59499                 "Petit Casino": {
59500                     "count": 233
59501                 },
59502                 "Volg": {
59503                     "count": 116
59504                 },
59505                 "Mace": {
59506                     "count": 115
59507                 },
59508                 "Mini Market": {
59509                     "count": 272
59510                 },
59511                 "Nisa Local": {
59512                     "count": 77
59513                 },
59514                 "Dorfladen": {
59515                     "count": 75
59516                 },
59517                 "Продукты": {
59518                     "count": 4285
59519                 },
59520                 "Mini Stop": {
59521                     "count": 228
59522                 },
59523                 "LAWSON": {
59524                     "count": 419
59525                 },
59526                 "デイリーヤマザキ": {
59527                     "count": 141
59528                 },
59529                 "Biedronka": {
59530                     "count": 83
59531                 },
59532                 "Надежда": {
59533                     "count": 56
59534                 },
59535                 "Mobil": {
59536                     "count": 66
59537                 },
59538                 "Nisa": {
59539                     "count": 51
59540                 },
59541                 "Premier": {
59542                     "count": 129
59543                 },
59544                 "ABC": {
59545                     "count": 152
59546                 },
59547                 "ミニストップ": {
59548                     "count": 316,
59549                     "tags": {
59550                         "name:en": "MINISTOP"
59551                     }
59552                 },
59553                 "サンクス": {
59554                     "count": 560,
59555                     "tags": {
59556                         "name:en": "sunkus"
59557                     }
59558                 },
59559                 "スリーエフ": {
59560                     "count": 88
59561                 },
59562                 "8 à Huit": {
59563                     "count": 61
59564                 },
59565                 "Tchibo": {
59566                     "count": 56
59567                 },
59568                 "Żabka": {
59569                     "count": 546
59570                 },
59571                 "Almacen": {
59572                     "count": 229
59573                 },
59574                 "Vival": {
59575                     "count": 194
59576                 },
59577                 "FamilyMart": {
59578                     "count": 529
59579                 },
59580                 "ファミリーマート": {
59581                     "count": 1608,
59582                     "tags": {
59583                         "name:en": "FamilyMart"
59584                     }
59585                 },
59586                 "Carrefour City": {
59587                     "count": 57
59588                 },
59589                 "Sunkus": {
59590                     "count": 62
59591                 },
59592                 "Casey's General Store": {
59593                     "count": 95
59594                 },
59595                 "セブンイレブン(Seven-Eleven)": {
59596                     "count": 65
59597                 },
59598                 "Jednota": {
59599                     "count": 58
59600                 },
59601                 "Магазин": {
59602                     "count": 915
59603                 },
59604                 "Гастроном": {
59605                     "count": 152
59606                 },
59607                 "Centra": {
59608                     "count": 111
59609                 },
59610                 "Магнит": {
59611                     "count": 701
59612                 },
59613                 "サークルK": {
59614                     "count": 538,
59615                     "tags": {
59616                         "name:en": "Circle K"
59617                     }
59618                 },
59619                 "Wawa": {
59620                     "count": 135
59621                 },
59622                 "Proxi": {
59623                     "count": 123
59624                 },
59625                 "Универсам": {
59626                     "count": 78
59627                 },
59628                 "Перекресток": {
59629                     "count": 51
59630                 },
59631                 "Groszek": {
59632                     "count": 65
59633                 },
59634                 "Select": {
59635                     "count": 62
59636                 },
59637                 "Večerka": {
59638                     "count": 51
59639                 },
59640                 "Potraviny": {
59641                     "count": 249
59642                 },
59643                 "Смак": {
59644                     "count": 78
59645                 },
59646                 "Эконом": {
59647                     "count": 55
59648                 },
59649                 "Березка": {
59650                     "count": 77
59651                 },
59652                 "Społem": {
59653                     "count": 93
59654                 },
59655                 "Carrefour Express": {
59656                     "count": 84
59657                 },
59658                 "Cumberland Farms": {
59659                     "count": 63
59660                 },
59661                 "Chevron": {
59662                     "count": 59
59663                 },
59664                 "Coop Jednota": {
59665                     "count": 66
59666                 },
59667                 "Tesco Lotus Express": {
59668                     "count": 67
59669                 },
59670                 "Kiosk": {
59671                     "count": 55
59672                 },
59673                 "Sklep spożywczy": {
59674                     "count": 130
59675                 },
59676                 "24 часа": {
59677                     "count": 58
59678                 },
59679                 "Минимаркет": {
59680                     "count": 102
59681                 },
59682                 "Oxxo": {
59683                     "count": 669
59684                 },
59685                 "Пятёрочка": {
59686                     "count": 398
59687                 },
59688                 "abc": {
59689                     "count": 74
59690                 },
59691                 "7/11": {
59692                     "count": 51
59693                 },
59694                 "Stewart's": {
59695                     "count": 255
59696                 },
59697                 "Продукти": {
59698                     "count": 171
59699                 },
59700                 "ローソンストア100 (LAWSON STORE 100)": {
59701                     "count": 85
59702                 },
59703                 "Дикси": {
59704                     "count": 119
59705                 },
59706                 "Радуга": {
59707                     "count": 86
59708                 },
59709                 "ローソンストア100": {
59710                     "count": 76
59711                 },
59712                 "เซเว่นอีเลฟเว่น": {
59713                     "count": 185
59714                 },
59715                 "Delikatesy Centrum": {
59716                     "count": 53
59717                 },
59718                 "Citgo": {
59719                     "count": 62
59720                 },
59721                 "Фортуна": {
59722                     "count": 51
59723                 },
59724                 "Kum & Go": {
59725                     "count": 59
59726                 },
59727                 "Мария-Ра": {
59728                     "count": 76
59729                 },
59730                 "Picard": {
59731                     "count": 57
59732                 },
59733                 "Four Square": {
59734                     "count": 52
59735                 },
59736                 "Визит": {
59737                     "count": 57
59738                 },
59739                 "Авоська": {
59740                     "count": 55
59741                 },
59742                 "Dollar General": {
59743                     "count": 127
59744                 },
59745                 "Studenac": {
59746                     "count": 76
59747                 },
59748                 "Central Convenience Store": {
59749                     "count": 55
59750                 },
59751                 "Монетка": {
59752                     "count": 62
59753                 },
59754                 "продукты": {
59755                     "count": 114
59756                 },
59757                 "Теремок": {
59758                     "count": 56
59759                 },
59760                 "Kwik Trip": {
59761                     "count": 69
59762                 },
59763                 "Кулинария": {
59764                     "count": 55
59765                 },
59766                 "全家": {
59767                     "count": 90
59768                 },
59769                 "Мечта": {
59770                     "count": 54
59771                 },
59772                 "Epicerie": {
59773                     "count": 102
59774                 },
59775                 "Кировский": {
59776                     "count": 67
59777                 },
59778                 "Food Mart": {
59779                     "count": 117
59780                 },
59781                 "Delikatesy": {
59782                     "count": 81
59783                 },
59784                 "ポプラ": {
59785                     "count": 54
59786                 },
59787                 "Lewiatan": {
59788                     "count": 135
59789                 },
59790                 "Продуктовый магазин": {
59791                     "count": 149
59792                 },
59793                 "Продуктовый": {
59794                     "count": 84
59795                 },
59796                 "セイコーマート (Seicomart)": {
59797                     "count": 72
59798                 },
59799                 "Виктория": {
59800                     "count": 70
59801                 },
59802                 "Весна": {
59803                     "count": 57
59804                 },
59805                 "Mini Market Non-Stop": {
59806                     "count": 60
59807                 },
59808                 "QuikTrip": {
59809                     "count": 75
59810                 },
59811                 "Копеечка": {
59812                     "count": 51
59813                 },
59814                 "Royal Farms": {
59815                     "count": 51
59816                 },
59817                 "Alfamart": {
59818                     "count": 103
59819                 },
59820                 "Indomaret": {
59821                     "count": 141
59822                 },
59823                 "магазин": {
59824                     "count": 171
59825                 },
59826                 "全家便利商店": {
59827                     "count": 156
59828                 },
59829                 "Boutique": {
59830                     "count": 59
59831                 },
59832                 "მარკეტი (Market)": {
59833                     "count": 144
59834                 },
59835                 "Stores": {
59836                     "count": 61
59837                 }
59838             },
59839             "chemist": {
59840                 "dm": {
59841                     "count": 939
59842                 },
59843                 "Müller": {
59844                     "count": 212
59845                 },
59846                 "Schlecker": {
59847                     "count": 187
59848                 },
59849                 "Etos": {
59850                     "count": 467
59851                 },
59852                 "Bipa": {
59853                     "count": 289
59854                 },
59855                 "Rossmann": {
59856                     "count": 1669
59857                 },
59858                 "DM Drogeriemarkt": {
59859                     "count": 55
59860                 },
59861                 "Ihr Platz": {
59862                     "count": 73
59863                 },
59864                 "Douglas": {
59865                     "count": 62
59866                 },
59867                 "Kruidvat": {
59868                     "count": 123
59869                 }
59870             },
59871             "car_repair": {
59872                 "Peugeot": {
59873                     "count": 83
59874                 },
59875                 "Kwik Fit": {
59876                     "count": 128
59877                 },
59878                 "ATU": {
59879                     "count": 261
59880                 },
59881                 "Midas": {
59882                     "count": 202
59883                 },
59884                 "Feu Vert": {
59885                     "count": 113
59886                 },
59887                 "Norauto": {
59888                     "count": 152
59889                 },
59890                 "Speedy": {
59891                     "count": 115
59892                 },
59893                 "Автозапчасти": {
59894                     "count": 212
59895                 },
59896                 "Renault": {
59897                     "count": 171
59898                 },
59899                 "Pit Stop": {
59900                     "count": 58
59901                 },
59902                 "Jiffy Lube": {
59903                     "count": 198
59904                 },
59905                 "Шиномонтаж": {
59906                     "count": 1157
59907                 },
59908                 "СТО": {
59909                     "count": 395
59910                 },
59911                 "O'Reilly Auto Parts": {
59912                     "count": 81
59913                 },
59914                 "Carglass": {
59915                     "count": 112
59916                 },
59917                 "шиномонтаж": {
59918                     "count": 62
59919                 },
59920                 "Citroen": {
59921                     "count": 51
59922                 },
59923                 "Euromaster": {
59924                     "count": 87
59925                 },
59926                 "Firestone": {
59927                     "count": 88
59928                 },
59929                 "Автосервис": {
59930                     "count": 361
59931                 },
59932                 "Advance Auto Parts": {
59933                     "count": 52
59934                 },
59935                 "Roady": {
59936                     "count": 56
59937                 }
59938             },
59939             "furniture": {
59940                 "IKEA": {
59941                     "count": 169
59942                 },
59943                 "Jysk": {
59944                     "count": 109
59945                 },
59946                 "Roller": {
59947                     "count": 78
59948                 },
59949                 "Dänisches Bettenlager": {
59950                     "count": 309
59951                 },
59952                 "Conforama": {
59953                     "count": 99
59954                 },
59955                 "Matratzen Concord": {
59956                     "count": 52
59957                 },
59958                 "Мебель": {
59959                     "count": 210
59960                 },
59961                 "But": {
59962                     "count": 63
59963                 }
59964             },
59965             "doityourself": {
59966                 "Hornbach": {
59967                     "count": 123
59968                 },
59969                 "B&Q": {
59970                     "count": 225
59971                 },
59972                 "Hubo": {
59973                     "count": 77
59974                 },
59975                 "Mr Bricolage": {
59976                     "count": 88
59977                 },
59978                 "Gamma": {
59979                     "count": 111
59980                 },
59981                 "OBI": {
59982                     "count": 422
59983                 },
59984                 "Lowes": {
59985                     "count": 1152
59986                 },
59987                 "Wickes": {
59988                     "count": 123
59989                 },
59990                 "Hagebau": {
59991                     "count": 59
59992                 },
59993                 "Max Bahr": {
59994                     "count": 79
59995                 },
59996                 "Castorama": {
59997                     "count": 153
59998                 },
59999                 "Rona": {
60000                     "count": 61
60001                 },
60002                 "Home Depot": {
60003                     "count": 865
60004                 },
60005                 "Toom Baumarkt": {
60006                     "count": 71
60007                 },
60008                 "Homebase": {
60009                     "count": 225
60010                 },
60011                 "Baumax": {
60012                     "count": 95
60013                 },
60014                 "Lagerhaus": {
60015                     "count": 79
60016                 },
60017                 "Bauhaus": {
60018                     "count": 186
60019                 },
60020                 "Canadian Tire": {
60021                     "count": 97
60022                 },
60023                 "Leroy Merlin": {
60024                     "count": 209
60025                 },
60026                 "Hellweg": {
60027                     "count": 58
60028                 },
60029                 "Brico": {
60030                     "count": 98
60031                 },
60032                 "Bricomarché": {
60033                     "count": 235
60034                 },
60035                 "Toom": {
60036                     "count": 67
60037                 },
60038                 "Hagebaumarkt": {
60039                     "count": 107
60040                 },
60041                 "Praktiker": {
60042                     "count": 122
60043                 },
60044                 "Menards": {
60045                     "count": 70
60046                 },
60047                 "Weldom": {
60048                     "count": 73
60049                 },
60050                 "Bunnings Warehouse": {
60051                     "count": 91
60052                 },
60053                 "Ace Hardware": {
60054                     "count": 147
60055                 },
60056                 "Home Hardware": {
60057                     "count": 72
60058                 },
60059                 "Хозтовары": {
60060                     "count": 86
60061                 },
60062                 "Стройматериалы": {
60063                     "count": 197
60064                 },
60065                 "Bricorama": {
60066                     "count": 60
60067                 },
60068                 "Point P": {
60069                     "count": 59
60070                 }
60071             },
60072             "stationery": {
60073                 "Staples": {
60074                     "count": 299
60075                 },
60076                 "McPaper": {
60077                     "count": 83
60078                 },
60079                 "Office Depot": {
60080                     "count": 98
60081                 },
60082                 "Канцтовары": {
60083                     "count": 63
60084                 }
60085             },
60086             "car": {
60087                 "Skoda": {
60088                     "count": 97
60089                 },
60090                 "BMW": {
60091                     "count": 149
60092                 },
60093                 "Citroen": {
60094                     "count": 277
60095                 },
60096                 "Renault": {
60097                     "count": 382
60098                 },
60099                 "Mercedes-Benz": {
60100                     "count": 235
60101                 },
60102                 "Volvo": {
60103                     "count": 96
60104                 },
60105                 "Ford": {
60106                     "count": 239
60107                 },
60108                 "Volkswagen": {
60109                     "count": 217
60110                 },
60111                 "Mazda": {
60112                     "count": 105
60113                 },
60114                 "Mitsubishi": {
60115                     "count": 73
60116                 },
60117                 "Fiat": {
60118                     "count": 93
60119                 },
60120                 "Автозапчасти": {
60121                     "count": 277
60122                 },
60123                 "Opel": {
60124                     "count": 165
60125                 },
60126                 "Audi": {
60127                     "count": 121
60128                 },
60129                 "Toyota": {
60130                     "count": 271
60131                 },
60132                 "Nissan": {
60133                     "count": 189
60134                 },
60135                 "Suzuki": {
60136                     "count": 75
60137                 },
60138                 "Honda": {
60139                     "count": 157
60140                 },
60141                 "Peugeot": {
60142                     "count": 308
60143                 },
60144                 "Шиномонтаж": {
60145                     "count": 259
60146                 },
60147                 "Hyundai": {
60148                     "count": 166
60149                 },
60150                 "Subaru": {
60151                     "count": 58
60152                 },
60153                 "Chevrolet": {
60154                     "count": 86
60155                 },
60156                 "Автомагазин": {
60157                     "count": 72
60158                 }
60159             },
60160             "clothes": {
60161                 "Matalan": {
60162                     "count": 90
60163                 },
60164                 "KiK": {
60165                     "count": 1219
60166                 },
60167                 "H&M": {
60168                     "count": 658
60169                 },
60170                 "Urban Outfitters": {
60171                     "count": 63
60172                 },
60173                 "Vögele": {
60174                     "count": 132
60175                 },
60176                 "Zeeman": {
60177                     "count": 121
60178                 },
60179                 "Takko": {
60180                     "count": 515
60181                 },
60182                 "Adler": {
60183                     "count": 55
60184                 },
60185                 "C&A": {
60186                     "count": 506
60187                 },
60188                 "Zara": {
60189                     "count": 217
60190                 },
60191                 "Vero Moda": {
60192                     "count": 95
60193                 },
60194                 "NKD": {
60195                     "count": 486
60196                 },
60197                 "Ernsting's family": {
60198                     "count": 312
60199                 },
60200                 "Winners": {
60201                     "count": 65
60202                 },
60203                 "River Island": {
60204                     "count": 59
60205                 },
60206                 "Next": {
60207                     "count": 176
60208                 },
60209                 "Gap": {
60210                     "count": 81
60211                 },
60212                 "Adidas": {
60213                     "count": 92
60214                 },
60215                 "Woolworths": {
60216                     "count": 117
60217                 },
60218                 "Mr Price": {
60219                     "count": 88
60220                 },
60221                 "Jet": {
60222                     "count": 61
60223                 },
60224                 "Pep": {
60225                     "count": 134
60226                 },
60227                 "Edgars": {
60228                     "count": 110
60229                 },
60230                 "Ackermans": {
60231                     "count": 91
60232                 },
60233                 "Truworths": {
60234                     "count": 65
60235                 },
60236                 "Ross": {
60237                     "count": 93
60238                 },
60239                 "Burton": {
60240                     "count": 51
60241                 },
60242                 "Dorothy Perkins": {
60243                     "count": 53
60244                 },
60245                 "Deichmann": {
60246                     "count": 61
60247                 },
60248                 "Lindex": {
60249                     "count": 73
60250                 },
60251                 "s.Oliver": {
60252                     "count": 56
60253                 },
60254                 "Cecil": {
60255                     "count": 51
60256                 },
60257                 "Dress Barn": {
60258                     "count": 52
60259                 },
60260                 "Old Navy": {
60261                     "count": 174
60262                 },
60263                 "Jack & Jones": {
60264                     "count": 52
60265                 },
60266                 "Pimkie": {
60267                     "count": 73
60268                 },
60269                 "Esprit": {
60270                     "count": 231
60271                 },
60272                 "Primark": {
60273                     "count": 92
60274                 },
60275                 "Bonita": {
60276                     "count": 155
60277                 },
60278                 "Mexx": {
60279                     "count": 67
60280                 },
60281                 "Gerry Weber": {
60282                     "count": 71
60283                 },
60284                 "Tally Weijl": {
60285                     "count": 70
60286                 },
60287                 "Mango": {
60288                     "count": 133
60289                 },
60290                 "TK Maxx": {
60291                     "count": 84
60292                 },
60293                 "Benetton": {
60294                     "count": 101
60295                 },
60296                 "Ulla Popken": {
60297                     "count": 61
60298                 },
60299                 "AWG": {
60300                     "count": 66
60301                 },
60302                 "Tommy Hilfiger": {
60303                     "count": 75
60304                 },
60305                 "New Yorker": {
60306                     "count": 180
60307                 },
60308                 "Orsay": {
60309                     "count": 73
60310                 },
60311                 "Jeans Fritz": {
60312                     "count": 51
60313                 },
60314                 "Charles Vögele": {
60315                     "count": 69
60316                 },
60317                 "New Look": {
60318                     "count": 126
60319                 },
60320                 "Lacoste": {
60321                     "count": 78
60322                 },
60323                 "Etam": {
60324                     "count": 53
60325                 },
60326                 "Kiabi": {
60327                     "count": 148
60328                 },
60329                 "Jack Wolfskin": {
60330                     "count": 60
60331                 },
60332                 "American Apparel": {
60333                     "count": 57
60334                 },
60335                 "Men's Wearhouse": {
60336                     "count": 54
60337                 },
60338                 "Intimissimi": {
60339                     "count": 52
60340                 },
60341                 "United Colors of Benetton": {
60342                     "count": 96
60343                 },
60344                 "Jules": {
60345                     "count": 63
60346                 },
60347                 "Second Hand": {
60348                     "count": 53
60349                 },
60350                 "AOKI": {
60351                     "count": 57
60352                 },
60353                 "Calzedonia": {
60354                     "count": 68
60355                 },
60356                 "洋服の青山": {
60357                     "count": 100
60358                 },
60359                 "Levi's": {
60360                     "count": 63
60361                 },
60362                 "Celio": {
60363                     "count": 74
60364                 },
60365                 "TJ Maxx": {
60366                     "count": 57
60367                 },
60368                 "Promod": {
60369                     "count": 82
60370                 },
60371                 "Street One": {
60372                     "count": 72
60373                 },
60374                 "ユニクロ": {
60375                     "count": 59
60376                 },
60377                 "Banana Republic": {
60378                     "count": 57
60379                 },
60380                 "Одежда": {
60381                     "count": 75
60382                 },
60383                 "Marshalls": {
60384                     "count": 56
60385                 },
60386                 "La Halle": {
60387                     "count": 62
60388                 },
60389                 "Peacocks": {
60390                     "count": 89
60391                 },
60392                 "しまむら": {
60393                     "count": 60
60394                 }
60395             },
60396             "books": {
60397                 "Bruna": {
60398                     "count": 58
60399                 },
60400                 "Waterstones": {
60401                     "count": 90
60402                 },
60403                 "Libro": {
60404                     "count": 57
60405                 },
60406                 "Barnes & Noble": {
60407                     "count": 267
60408                 },
60409                 "Weltbild": {
60410                     "count": 74
60411                 },
60412                 "Thalia": {
60413                     "count": 121
60414                 },
60415                 "Книги": {
60416                     "count": 112
60417                 }
60418             },
60419             "department_store": {
60420                 "Debenhams": {
60421                     "count": 67
60422                 },
60423                 "Canadian Tire": {
60424                     "count": 75
60425                 },
60426                 "Karstadt": {
60427                     "count": 64
60428                 },
60429                 "Walmart": {
60430                     "count": 517
60431                 },
60432                 "Kmart": {
60433                     "count": 143
60434                 },
60435                 "Target": {
60436                     "count": 574
60437                 },
60438                 "Galeria Kaufhof": {
60439                     "count": 61
60440                 },
60441                 "Marks & Spencer": {
60442                     "count": 66
60443                 },
60444                 "Big W": {
60445                     "count": 57
60446                 },
60447                 "Woolworth": {
60448                     "count": 78
60449                 },
60450                 "Универмаг": {
60451                     "count": 72
60452                 },
60453                 "Sears": {
60454                     "count": 235
60455                 },
60456                 "Walmart Supercenter": {
60457                     "count": 101
60458                 },
60459                 "Kohl's": {
60460                     "count": 153
60461                 },
60462                 "Macy's": {
60463                     "count": 147
60464                 },
60465                 "Sam's Club": {
60466                     "count": 54
60467                 },
60468                 "JCPenney": {
60469                     "count": 66
60470                 }
60471             },
60472             "alcohol": {
60473                 "Alko": {
60474                     "count": 145
60475                 },
60476                 "The Beer Store": {
60477                     "count": 150
60478                 },
60479                 "Systembolaget": {
60480                     "count": 210
60481                 },
60482                 "LCBO": {
60483                     "count": 239
60484                 },
60485                 "Ароматный мир": {
60486                     "count": 62
60487                 },
60488                 "Bargain Booze": {
60489                     "count": 62
60490                 },
60491                 "Nicolas": {
60492                     "count": 119
60493                 },
60494                 "BWS": {
60495                     "count": 70
60496                 },
60497                 "Botilleria": {
60498                     "count": 77
60499                 },
60500                 "SAQ": {
60501                     "count": 72
60502                 },
60503                 "Gall & Gall": {
60504                     "count": 512
60505                 },
60506                 "Живое пиво": {
60507                     "count": 70
60508                 }
60509             },
60510             "bakery": {
60511                 "Kamps": {
60512                     "count": 252
60513                 },
60514                 "Banette": {
60515                     "count": 52
60516                 },
60517                 "Bäckerei Schmidt": {
60518                     "count": 57
60519                 },
60520                 "Anker": {
60521                     "count": 73
60522                 },
60523                 "Hofpfisterei": {
60524                     "count": 111
60525                 },
60526                 "Greggs": {
60527                     "count": 276
60528                 },
60529                 "Oebel": {
60530                     "count": 57
60531                 },
60532                 "Boulangerie": {
60533                     "count": 266
60534                 },
60535                 "Stadtbäckerei": {
60536                     "count": 57
60537                 },
60538                 "Steinecke": {
60539                     "count": 145
60540                 },
60541                 "Ihle": {
60542                     "count": 76
60543                 },
60544                 "Goldilocks": {
60545                     "count": 59
60546                 },
60547                 "Dat Backhus": {
60548                     "count": 67
60549                 },
60550                 "K&U": {
60551                     "count": 61
60552                 },
60553                 "Der Beck": {
60554                     "count": 96
60555                 },
60556                 "Thürmann": {
60557                     "count": 54
60558                 },
60559                 "Backwerk": {
60560                     "count": 95
60561                 },
60562                 "Schäfer's": {
60563                     "count": 51
60564                 },
60565                 "Panaderia": {
60566                     "count": 168
60567                 },
60568                 "Goeken backen": {
60569                     "count": 51
60570                 },
60571                 "Stadtbäckerei Junge": {
60572                     "count": 51
60573                 },
60574                 "Boulangerie Patisserie": {
60575                     "count": 119
60576                 },
60577                 "Paul": {
60578                     "count": 81
60579                 },
60580                 "Хлеб": {
60581                     "count": 89
60582                 },
60583                 "Пекарня": {
60584                     "count": 52
60585                 },
60586                 "Кулиничи": {
60587                     "count": 51
60588                 }
60589             },
60590             "sports": {
60591                 "Sports Direct": {
60592                     "count": 57
60593                 },
60594                 "Decathlon": {
60595                     "count": 309
60596                 },
60597                 "Intersport": {
60598                     "count": 283
60599                 },
60600                 "Sports Authority": {
60601                     "count": 75
60602                 },
60603                 "Спортмастер": {
60604                     "count": 87
60605                 },
60606                 "Sport 2000": {
60607                     "count": 90
60608                 },
60609                 "Dick's Sporting Goods": {
60610                     "count": 77
60611                 }
60612             },
60613             "variety_store": {
60614                 "Tedi": {
60615                     "count": 157
60616                 },
60617                 "Dollarama": {
60618                     "count": 103
60619                 },
60620                 "Family Dollar": {
60621                     "count": 61
60622                 },
60623                 "Dollar Tree": {
60624                     "count": 110
60625                 },
60626                 "Dollar General": {
60627                     "count": 80
60628                 }
60629             },
60630             "pet": {
60631                 "Fressnapf": {
60632                     "count": 318
60633                 },
60634                 "PetSmart": {
60635                     "count": 177
60636                 },
60637                 "Das Futterhaus": {
60638                     "count": 69
60639                 },
60640                 "Pets at Home": {
60641                     "count": 62
60642                 },
60643                 "Petco": {
60644                     "count": 101
60645                 },
60646                 "Зоомагазин": {
60647                     "count": 100
60648                 }
60649             },
60650             "shoes": {
60651                 "Deichmann": {
60652                     "count": 622
60653                 },
60654                 "Reno": {
60655                     "count": 183
60656                 },
60657                 "Ecco": {
60658                     "count": 55
60659                 },
60660                 "Clarks": {
60661                     "count": 109
60662                 },
60663                 "La Halle aux Chaussures": {
60664                     "count": 69
60665                 },
60666                 "Brantano": {
60667                     "count": 71
60668                 },
60669                 "Geox": {
60670                     "count": 51
60671                 },
60672                 "Salamander": {
60673                     "count": 51
60674                 },
60675                 "Обувь": {
60676                     "count": 100
60677                 },
60678                 "Payless Shoe Source": {
60679                     "count": 67
60680                 },
60681                 "Famous Footwear": {
60682                     "count": 59
60683                 },
60684                 "Quick Schuh": {
60685                     "count": 72
60686                 },
60687                 "Shoe Zone": {
60688                     "count": 55
60689                 },
60690                 "Foot Locker": {
60691                     "count": 82
60692                 },
60693                 "Bata": {
60694                     "count": 101
60695                 },
60696                 "ЦентрОбувь": {
60697                     "count": 51
60698                 }
60699             },
60700             "toys": {
60701                 "La Grande Récré": {
60702                     "count": 56
60703                 },
60704                 "Toys R Us": {
60705                     "count": 151,
60706                     "tags": {
60707                         "shop": "toys"
60708                     }
60709                 },
60710                 "Intertoys": {
60711                     "count": 57
60712                 },
60713                 "Детский мир": {
60714                     "count": 86
60715                 },
60716                 "Игрушки": {
60717                     "count": 58
60718                 }
60719             },
60720             "travel_agency": {
60721                 "Flight Centre": {
60722                     "count": 92
60723                 },
60724                 "Thomas Cook": {
60725                     "count": 119
60726                 }
60727             },
60728             "jewelry": {
60729                 "Bijou Brigitte": {
60730                     "count": 57
60731                 },
60732                 "Christ": {
60733                     "count": 57
60734                 },
60735                 "Swarovski": {
60736                     "count": 74
60737                 }
60738             },
60739             "optician": {
60740                 "Fielmann": {
60741                     "count": 232
60742                 },
60743                 "Apollo Optik": {
60744                     "count": 150
60745                 },
60746                 "Vision Express": {
60747                     "count": 58
60748                 },
60749                 "Оптика": {
60750                     "count": 182
60751                 },
60752                 "Optic 2000": {
60753                     "count": 98
60754                 },
60755                 "Alain Afflelou": {
60756                     "count": 73
60757                 },
60758                 "Specsavers": {
60759                     "count": 124
60760                 },
60761                 "Krys": {
60762                     "count": 77
60763                 },
60764                 "Atol": {
60765                     "count": 55
60766                 }
60767             },
60768             "video": {
60769                 "Blockbuster": {
60770                     "count": 184
60771                 },
60772                 "World of Video": {
60773                     "count": 64
60774                 }
60775             },
60776             "mobile_phone": {
60777                 "Билайн": {
60778                     "count": 128
60779                 },
60780                 "ソフトバンクショップ (SoftBank shop)": {
60781                     "count": 255
60782                 },
60783                 "Vodafone": {
60784                     "count": 355
60785                 },
60786                 "O2": {
60787                     "count": 208
60788                 },
60789                 "Carphone Warehouse": {
60790                     "count": 127
60791                 },
60792                 "Orange": {
60793                     "count": 246
60794                 },
60795                 "Verizon Wireless": {
60796                     "count": 125
60797                 },
60798                 "Sprint": {
60799                     "count": 109
60800                 },
60801                 "T-Mobile": {
60802                     "count": 175
60803                 },
60804                 "МТС": {
60805                     "count": 352
60806                 },
60807                 "Евросеть": {
60808                     "count": 506
60809                 },
60810                 "Bell": {
60811                     "count": 190
60812                 },
60813                 "The Phone House": {
60814                     "count": 83
60815                 },
60816                 "SFR": {
60817                     "count": 71
60818                 },
60819                 "Связной": {
60820                     "count": 439
60821                 },
60822                 "Мегафон": {
60823                     "count": 251
60824                 },
60825                 "AT&T": {
60826                     "count": 124
60827                 },
60828                 "ドコモショップ (docomo shop)": {
60829                     "count": 114
60830                 },
60831                 "au": {
60832                     "count": 65
60833                 },
60834                 "Movistar": {
60835                     "count": 77
60836                 },
60837                 "Bitė": {
60838                     "count": 72
60839                 }
60840             },
60841             "hifi": {},
60842             "computer": {
60843                 "PC World": {
60844                     "count": 55
60845                 },
60846                 "DNS": {
60847                     "count": 128
60848                 }
60849             },
60850             "hairdresser": {
60851                 "Klier": {
60852                     "count": 119
60853                 },
60854                 "Supercuts": {
60855                     "count": 106
60856                 },
60857                 "Hairkiller": {
60858                     "count": 51
60859                 },
60860                 "Great Clips": {
60861                     "count": 182
60862                 },
60863                 "Парикмахерская": {
60864                     "count": 510
60865                 },
60866                 "Стиль": {
60867                     "count": 51
60868                 },
60869                 "Franck Provost": {
60870                     "count": 70
60871                 },
60872                 "Салон красоты": {
60873                     "count": 70
60874                 }
60875             },
60876             "hardware": {
60877                 "1000 мелочей": {
60878                     "count": 61
60879                 },
60880                 "Хозтовары": {
60881                     "count": 151
60882                 },
60883                 "Стройматериалы": {
60884                     "count": 54
60885                 }
60886             },
60887             "motorcycle": {
60888                 "Yamaha": {
60889                     "count": 67
60890                 },
60891                 "Honda": {
60892                     "count": 69
60893                 }
60894             }
60895         }
60896     },
60897     "addressFormats": [
60898         {
60899             "format": [
60900                 [
60901                     "housenumber",
60902                     "street"
60903                 ],
60904                 [
60905                     "city",
60906                     "postcode"
60907                 ]
60908             ]
60909         },
60910         {
60911             "countryCodes": [
60912                 "gb"
60913             ],
60914             "format": [
60915                 [
60916                     "housename"
60917                 ],
60918                 [
60919                     "housenumber",
60920                     "street"
60921                 ],
60922                 [
60923                     "city",
60924                     "postcode"
60925                 ]
60926             ]
60927         },
60928         {
60929             "countryCodes": [
60930                 "ie"
60931             ],
60932             "format": [
60933                 [
60934                     "housename"
60935                 ],
60936                 [
60937                     "housenumber",
60938                     "street"
60939                 ],
60940                 [
60941                     "city"
60942                 ]
60943             ]
60944         },
60945         {
60946             "countryCodes": [
60947                 "ad",
60948                 "at",
60949                 "ba",
60950                 "be",
60951                 "ch",
60952                 "cz",
60953                 "de",
60954                 "dk",
60955                 "es",
60956                 "fi",
60957                 "gr",
60958                 "hr",
60959                 "is",
60960                 "it",
60961                 "li",
60962                 "nl",
60963                 "no",
60964                 "pl",
60965                 "pt",
60966                 "se",
60967                 "si",
60968                 "sk",
60969                 "sm",
60970                 "va"
60971             ],
60972             "format": [
60973                 [
60974                     "street",
60975                     "housenumber"
60976                 ],
60977                 [
60978                     "postcode",
60979                     "city"
60980                 ]
60981             ]
60982         },
60983         {
60984             "countryCodes": [
60985                 "fr",
60986                 "lu",
60987                 "mo"
60988             ],
60989             "format": [
60990                 [
60991                     "housenumber",
60992                     "street"
60993                 ],
60994                 [
60995                     "postcode",
60996                     "city"
60997                 ]
60998             ]
60999         },
61000         {
61001             "countryCodes": [
61002                 "br"
61003             ],
61004             "format": [
61005                 [
61006                     "street"
61007                 ],
61008                 [
61009                     "housenumber",
61010                     "suburb"
61011                 ],
61012                 [
61013                     "city",
61014                     "postcode"
61015                 ]
61016             ]
61017         },
61018         {
61019             "countryCodes": [
61020                 "vn"
61021             ],
61022             "format": [
61023                 [
61024                     "housenumber",
61025                     "street"
61026                 ],
61027                 [
61028                     "subdistrict"
61029                 ],
61030                 [
61031                     "district"
61032                 ],
61033                 [
61034                     "city"
61035                 ],
61036                 [
61037                     "province",
61038                     "postcode"
61039                 ]
61040             ]
61041         },
61042         {
61043             "countryCodes": [
61044                 "us"
61045             ],
61046             "format": [
61047                 [
61048                     "housenumber",
61049                     "street"
61050                 ],
61051                 [
61052                     "city",
61053                     "state",
61054                     "postcode"
61055                 ]
61056             ]
61057         },
61058         {
61059             "countryCodes": [
61060                 "ca"
61061             ],
61062             "format": [
61063                 [
61064                     "housenumber",
61065                     "street"
61066                 ],
61067                 [
61068                     "city",
61069                     "province",
61070                     "postcode"
61071                 ]
61072             ]
61073         }
61074     ]
61075 };