diff --git a/src/app/visualizationComponents/TwoDComponent/twoD-plugin.component.ts b/src/app/visualizationComponents/TwoDComponent/twoD-plugin.component.ts
index 98a91be6..c90dba85 100644
--- a/src/app/visualizationComponents/TwoDComponent/twoD-plugin.component.ts
+++ b/src/app/visualizationComponents/TwoDComponent/twoD-plugin.component.ts
@@ -21,6 +21,7 @@ import { Subject, Subscription, takeUntil } from 'rxjs';
import * as d3f from 'd3-force';
import { CommonStoreService } from '@app/contactTraceCommonServices/common-store.services';
import { ExportService, ExportOptions } from '@app/contactTraceCommonServices/export.service';
+import { NgZone } from '@angular/core';
@Component({
@@ -249,7 +250,8 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
private clipboard: Clipboard,
private gtmService: GoogleTagManagerService,
private store: CommonStoreService,
- private exportService: ExportService
+ private exportService: ExportService,
+ private zone: NgZone
) {
super(elRef.nativeElement);
@@ -258,8 +260,7 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
this.widgets = this.commonService.session.style.widgets;
-
- this.container.on('resize', () => { this.fit()})
+ this.container.on('resize', () => { setTimeout(() => this.fit(), 200)})
this.container.on('hide', () => {
this.viewActive = false;
this.cdref.detectChanges();
@@ -347,9 +348,9 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
}
ngAfterViewInit(): void {
-
console.log('--- TwoD ngAfterViewInit called');
- }
+
+ }
mapDataToCytoscapeElements(data: any, timelineTick=false): cytoscape.ElementsDefinition {
@@ -664,42 +665,43 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
});
this.cy.on('mouseover', 'node', (evt) => {
- const node = evt.target;
- this.showNodeTooltip(node.data(), evt.originalEvent);
-
- // Set cursor to grab
- $('html,body').css('cursor', 'grab');
-
- if (this.widgets['node-highlight']) {
- // Highlight connected edges
- node.connectedEdges().addClass('highlighted');
- }
-
+ // Run UI updates inside Angular's zone
+ this.zone.run(() => {
+ const node = evt.target;
+ this.showNodeTooltip(node.data(), evt.originalEvent);
+ $('html,body').css('cursor', 'grab');
+
+ if (this.widgets['node-highlight']) {
+ node.connectedEdges().addClass('highlighted');
+ }
+ });
});
this.cy.on('mouseout', 'node', (evt) => {
-
- const node = evt.target;
-
- this.hideTooltip();
-
- $('html,body').css('cursor', 'default');
-
- if (this.widgets['node-highlight']) {
- // Remove highlight from connected edges
- node.connectedEdges().removeClass('highlighted');
- }
-
+ // Run UI updates inside Angular's zone
+ this.zone.run(() => {
+ const node = evt.target;
+ this.hideTooltip();
+ $('html,body').css('cursor', 'default');
+
+ if (this.widgets['node-highlight']) {
+ node.connectedEdges().removeClass('highlighted');
+ }
+ });
});
// Edge events
this.cy.on('mouseover', 'edge', (evt) => {
- const edge = evt.target;
- this.showLinkTooltip(edge.data(), evt.originalEvent);
+ this.zone.run(() => {
+ const edge = evt.target;
+ this.showLinkTooltip(edge.data(), evt.originalEvent);
+ });
});
this.cy.on('mouseout', 'edge', () => {
- this.hideTooltip();
+ this.zone.run(() => {
+ this.hideTooltip();
+ });
});
this.cy.on('dragfree', 'node', (evt) => {
@@ -992,13 +994,19 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
* Updates the saved postion of a node when it is dragged by the user
* @param node
*/
- updateNodePos(node) {
- let globalNode = this.commonService.getVisibleNodes().find(x => x._id == node.data('id')) // need to update so it works with grouped nodes/polygons
- globalNode['x'] = node.position().x;
- globalNode['y'] = node.position().y;
+ // updateNodePos(node) {
+ // let globalNode = this.commonService.getVisibleNodes().find(x => x._id == node.data('id')) // need to update so it works with grouped nodes/polygons
+ // globalNode['x'] = node.position().x;
+ // globalNode['y'] = node.position().y;
- }
+ // }
+ updateNodePos(node: cytoscape.NodeSingular): void {
+ const nodeId = node.id();
+ // This is for REAL user events. It reads the now-updated position from Cytoscape.
+ const newPosition = node.position();
+ this.commonService.updateNodePosition(nodeId, newPosition);
+ }
/** Initializes the view.
*
* Defines the structure of the svg of twoD network and adds functionalities such as click, zoom, forces, etc...
@@ -1130,32 +1138,29 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
// });
- // TODO move this to a subscribed event than use document jquery
$(document).on("node-selected", function () {
- const mtSelectedNodes = that.commonService.getVisibleNodes().filter(n => n.selected);
- const mtSelectedNodeIds = mtSelectedNodes.map(n => n._id || n.id);
-
- // Deselect all nodes first in cytoscape
- that.cy.elements().unselect();
-
- // Select the nodes that are marked as selected in the common service
- if (mtSelectedNodeIds.length > 0) {
- const selector = mtSelectedNodeIds.map(id => `#${id}`).join(', ');
- that.cy.nodes(selector).select();
- }
-
+ if (!that.cy) return;
+
+ const mtSelectedNodes = that.commonService.getVisibleNodes().filter(n => n.selected);
+ const mtSelectedNodeIds = mtSelectedNodes.map(n => n._id || n.id);
+
+ // Clear cytoscape selection
+ that.cy.elements().unselect();
+
+ // Apply multi-selection
if (mtSelectedNodeIds.length > 0) {
- that.selectedNodeId = mtSelectedNodeIds[mtSelectedNodeIds.length - 1];
- } else {
- that.selectedNodeId = undefined;
- }
-
- if (that.debugMode) {
- console.log('node-selected in 2d: ', that.selectedNodeId);
- console.log('node-selected in data: ', that.data.nodes.find(node => node.id == that.selectedNodeId));
+ const selector = mtSelectedNodeIds.map(id => `#${id}`).join(', ');
+ that.cy.nodes(selector).select();
+ that.selectedNodeId = mtSelectedNodeIds[mtSelectedNodeIds.length - 1]; // keep last-selected for UI logic only
+ } else {
+ that.selectedNodeId = undefined;
}
- });
-
+
+ if (that.debugMode) {
+ console.log('node-selected in 2d ids: ', mtSelectedNodeIds);
+ }
+ });
+
if (this.commonService.session.files.length > 1) $('#link-color-variable').val('origin').change();
if (this.widgets['background-color']) $('#cy').css('background-color', this.widgets['background-color']);
@@ -3008,6 +3013,167 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
userPanningEnabled: true
});
+ if ((window as any).Cypress) {
+ (window as any).cytoscapeInstance = this.cy;
+
+ // Create a dedicated namespace for all test functions
+ (window as any).Cypress.test = {
+ // Interaction helpers
+ dragNodeDelta: (nodeId: string, dx: number, dy: number) => {
+ return this.zone.run(() => {
+ const node = this.cy.getElementById(nodeId);
+ if (!node || node.empty()) {
+ console.warn('[Cypress.dragNodeDelta] node not found', nodeId);
+ return null;
+ }
+
+ if (node.locked && node.locked()) {
+ node.unlock();
+ }
+
+ const current = node.position();
+ const newPos = {
+ x: current.x + dx,
+ y: current.y + dy
+ };
+
+ node.position(newPos);
+
+ // ✅ keep app model in sync, like a real dragfree event
+ this.updateNodePos(node);
+
+ return newPos; // so the test can assert directly
+ });
+ },
+ tooltip: (action: 'show' | 'hide', nodeId: string) => {
+ this.zone.run(() => {
+ const node = this.cy.getElementById(nodeId);
+ if (node) {
+ if (action === 'show') {
+ const mockEvent = { clientX: 100, clientY: 100 };
+ this.showNodeTooltip(node.data(), mockEvent);
+ } else {
+ this.hideTooltip();
+ }
+ }
+ });
+ },
+ linkTooltip: (action: 'show' | 'hide', edgeId: string) => {
+ this.zone.run(() => {
+ const edge = this.cy.getElementById(edgeId);
+ if (edge) {
+ if (action === 'show') {
+ const mockEvent = { clientX: 300, clientY: 300 };
+ this.showLinkTooltip(edge.data(), mockEvent);
+ } else {
+ this.hideTooltip();
+ }
+ }
+ });
+ },
+
+ // New settings helpers
+ setNodeSize: (size: number) => {
+ this.zone.run(() => {
+ this.SelectedNodeRadiusSizeVariable = size;
+ this.onNodeRadiusChange(size);
+ });
+ },
+ setLinkWidth: (width: number) => {
+ this.zone.run(() => {
+ this.SelectedLinkWidthVariable = width;
+ this.onLinkWidthChange(width);
+ });
+ },
+ togglePolygons: (show: boolean) => {
+ this.zone.run(() => this.polygonsToggle(show));
+ },
+ setNodeLabel: (variable: string) => {
+ this.zone.run(() => {
+ this.SelectedNodeLabelVariable = variable;
+ this.onNodeLabelVaribleChange(variable);
+ });
+ },
+ setNodeBorderWidth: (width: number) => {
+ this.zone.run(() => {
+ this.nodeBorderWidth = width;
+ this.onNodeBorderWidthChange(width);
+ });
+ },
+ toggleLinkArrows: (show: boolean) => {
+ this.zone.run(() => {
+ const value = show ? 'Show' : 'Hide';
+ this.SelectedLinkArrowTypeVariable = value;
+ this.onLinkDirectedUndirectedChange(value);
+ });
+ },
+ toggleGridlines: (show: boolean) => {
+ this.zone.run(() => {
+ const value = show ? 'Show' : 'Hide';
+ this.SelectedNetworkGridLineTypeVariable = value;
+ this.onNetworkGridlinesShowHideChange(value);
+ });
+ },
+ setNodeLabelSizeAndOrientation: (size: number, orientation: string) => {
+ this.zone.run(() => {
+ this.SelectedNodeLabelSizeVariable = size;
+ this.setNodeLabelSize(size);
+ this.SelectedNodeLabelOrientationVariable = orientation as any;
+ this.onNodeLabelOrientationChange(orientation);
+ });
+ },
+ setNodeSizeByVariable: (variable: string) => {
+ this.zone.run(() => {
+ this.SelectedNodeRadiusVariable = variable;
+ this.onNodeRadiusVariableChange(variable);
+ });
+ },
+ setLinkOpacity: (opacity: number) => {
+ this.zone.run(() => {
+ this.SelectedLinkTransparencyVariable = opacity;
+ this.onLinkOpacityChange(opacity);
+ });
+ },
+ toggleGroupLabels: (show: boolean) => {
+ this.zone.run(() => {
+ this.widgets['polygons-label-show'] = show;
+ this.onPolygonLabelShowChange(show);
+ });
+ },
+ setLinkWidthByVariable: (variable: string) => {
+ this.zone.run(() => {
+ this.SelectedLinkWidthByVariable = variable;
+ this.onLinkWidthVariableChange(variable);
+ });
+ },
+ setLinkLength: (length: number) => {
+ this.zone.run(() => {
+ this.SelectedLinkLengthVariable = length;
+ this.onLinkLengthChange(length);
+ });
+ },
+ toggleNeighborHighlighting: (highlight: boolean) => {
+ this.zone.run(() => {
+ const value = highlight ? 'Highlighted' : 'Normal';
+ this.SelectedNetworkNeighborTypeVariable = value;
+ this.onDontHighlightNeighborsHighlightNeighborsChange(value);
+ });
+ },
+ setGroupByVariable: (variable: string) => {
+ this.zone.run(() => {
+ this.centerPolygons(variable);
+ });
+ },
+ setGroupLabelSizeAndOrientation: (size: number, orientation: string) => {
+ this.zone.run(() => {
+ this.SelectedPolygonLabelSizeVariable = size;
+ this.onPolygonLabelSizeChange(size);
+ this.SelectedPolygonLabelOrientationVariable = orientation as any;
+ this.onPolygonLabelOrientationChange(orientation);
+ });
+ }
+ };
+ }
// Attach events
this.attachCytoscapeEvents();
@@ -3372,8 +3538,6 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
this.widgets['link-width-max'] = e;
this.updateMinMaxLink();
this.scaleLinkWidth();
-
-
}
/**
@@ -3399,60 +3563,77 @@ export class TwoDComponent extends BaseComponentDirective implements OnInit, Mic
this.updateLayout();
}
- /**
- * Applies arrow styling to edges based on current widget settings and edge data.
- * Arrows are shown only for links that have distance and its within the threshold
- */
- private updateArrowStyles() {
- if (!this.cy) return;
-
- this.cy.style()
- .selector('edge')
- .style({
- 'target-arrow-shape': (ele) => {
- const data = ele.data();
- console.log('data: ', data, 'has distance', data.hasDistance, 'origin', data.origin)
- if (this.widgets['link-directed'] && (!data.hasDistance || (data.origin[0] !== data.distanceOrigin ))) {
- return 'triangle';
- }
- return 'none';
- },
- 'source-arrow-shape': (ele) => {
- const data = ele.data();
- if (this.widgets['link-directed'] && (!data.hasDistance || (data.origin[0] !== data.distanceOrigin ))) {
- return 'triangle';
- }
- return 'none';
- },
- 'curve-style': this.widgets['link-directed'] ? 'unbundled-bezier' : 'straight'
- })
- .update();
- }
+ /**
+ * Applies arrow styling to edges based on:
+ * - Global arrow toggle (widgets['link-directed'])
+ * - Per-edge directionality (edge.data().directed)
+ * - Optional bidirectional toggle + per-edge flag (widgets['link-bidirectional'] + edge.data().bidirectional)
+ */
+private updateArrowStyles(): void {
+ if (!this.cy) return;
+
+ const isTruthy = (v: any): boolean => {
+ if (v === true) return true;
+ if (v === false || v === null || v === undefined) return false;
+ if (typeof v === 'number') return v !== 0;
+ if (typeof v === 'string') {
+ const s = v.trim().toLowerCase();
+ return s === 'true' || s === '1' || s === 'yes' || s === 'y';
+ }
+ return false;
+ };
+
+ const shouldShowDirected = (data: any): boolean => {
+ if (!this.widgets['link-directed']) return false;
+ return isTruthy(data?.directed);
+ };
+
+ const shouldShowSource = (data: any): boolean => {
+ if (!shouldShowDirected(data)) return false;
+ if (!this.widgets['link-bidirectional']) return false;
+ return isTruthy(data?.bidirectional);
+ };
+
+ this.cy.style()
+ .selector('edge')
+ .style({
+ 'target-arrow-shape': (ele) => {
+ const data = ele.data();
+ return shouldShowDirected(data) ? 'triangle' : 'none';
+ },
+ 'source-arrow-shape': (ele) => {
+ const data = ele.data();
+ return shouldShowSource(data) ? 'triangle' : 'none';
+ },
+ 'target-arrow-color': 'data(lineColor)',
+ 'source-arrow-color': 'data(lineColor)',
+ 'curve-style': this.widgets['link-directed'] ? 'unbundled-bezier' : 'straight'
+ })
+ .update();
+ }
/**
* Updates link-directed widget. When directed, links have an arrow added; when undirected, links have no arrow
*/
- onLinkDirectedUndirectedChange(e) {
+ onLinkDirectedUndirectedChange(e: string) {
if (e === "Show") {
- $('#link-bidirectional-row').slideDown().css('display', 'flex');
- this.widgets['link-directed'] = true;
+ $('#link-bidirectional-row').slideDown().css('display', 'flex');
+ this.widgets['link-directed'] = true;
} else {
- this.widgets['link-directed'] = false;
- $("#link-bidirectional-row").slideUp();
+ this.widgets['link-directed'] = false;
+ $("#link-bidirectional-row").slideUp();
}
-
+
this.updateArrowStyles();
- }
+ }
- onLinkBidirectionalChange(e) {
- // Update the widget state
+ onLinkBidirectionalChange(e: string) {
this.widgets['link-bidirectional'] = (e === "Show");
-
this.updateArrowStyles();
- }
+ }
/**
* Updates node-highlight widget. When true and a node is mouseoved current node, all it of links, and neighbor nodes will be highlighted
@@ -3664,17 +3845,17 @@ scaleLinkWidth() {
dataValue = 0;
}
if (this.isNumber(dataValue)) {
- const scaledWidth = this.linearScale(dataValue, min, max, minWidth, maxWidth, reciprocal);
- edge.data('scaledWidth', scaledWidth);
+ const width = this.linearScale(dataValue, min, max, minWidth, maxWidth, reciprocal);
+ edge.data('width', width);
} else {
// Handle non-numeric values if necessary
- edge.data('scaledWidth', minWidth);
+ edge.data('width', minWidth);
}
});
// Update Cytoscape stylesheet to use the scaledWidth data
this.cy.style().selector('edge').style({
- 'width': 'data(scaledWidth)'
+ 'width': 'data(width)'
}).update();
}
/**
@@ -4109,10 +4290,14 @@ private async _partialUpdate() {
this.SelectedLinkLengthVariable = this.widgets['link-length'];
this.onLinkLengthChange(this.SelectedLinkLengthVariable);
- //Links|Arrows
+ //Links|Arrows
this.SelectedLinkArrowTypeVariable = this.widgets['link-directed'] ? "Show" : "Hide";
this.onLinkDirectedUndirectedChange(this.SelectedLinkArrowTypeVariable);
+ //Links|Bidirectional
+ this.SelectedLinkBidirectionalTypeVariable = this.widgets['link-bidirectional'] ? "Show" : "Hide";
+ this.onLinkBidirectionalChange(this.SelectedLinkBidirectionalTypeVariable);
+
//Network|Neighbors
this.SelectedNetworkNeighborTypeVariable = this.widgets['node-highlight'] ? "Highlighted" : "Normal";
diff --git a/src/app/visualizationComponents/WaterfallComponent/waterfall.component.html b/src/app/visualizationComponents/WaterfallComponent/waterfall.component.html
index 6d595f4d..6d485a76 100644
--- a/src/app/visualizationComponents/WaterfallComponent/waterfall.component.html
+++ b/src/app/visualizationComponents/WaterfallComponent/waterfall.component.html
@@ -12,7 +12,7 @@
[(selection)]="selectedClusterRow"
[scrollable]="true"
[scrollHeight]="scrollHeight"
- [tableStyle]="{'border': '3px #e9ecef solid'}">
+ [tableStyle]="{'border': '3px #e9ecef solid', 'overflow-x': 'visible'}">
| Cluster |
@@ -44,7 +44,7 @@
[(selection)]="selectedNodeRow"
[scrollable]="true"
[scrollHeight]="scrollHeight"
- [tableStyle]="{'border': '3px #e9ecef solid'}">
+ [tableStyle]="{'border': '3px #e9ecef solid', 'overflow-x': 'visible'}">
| Nodes |
@@ -76,7 +76,7 @@
[(selection)]="selectedLinkRow"
[scrollable]="true"
[scrollHeight]="scrollHeight"
- [tableStyle]="{'border': '3px #e9ecef solid'}">
+ [tableStyle]="{'border': '3px #e9ecef solid', 'overflow-x': 'visible'}">
| Links |
diff --git a/src/app/visualizationComponents/WaterfallComponent/waterfall.component.scss b/src/app/visualizationComponents/WaterfallComponent/waterfall.component.scss
index 962e1911..8adfb7a8 100644
--- a/src/app/visualizationComponents/WaterfallComponent/waterfall.component.scss
+++ b/src/app/visualizationComponents/WaterfallComponent/waterfall.component.scss
@@ -4,18 +4,25 @@
z-index: 1 !important;
}
+tr td:first-child, tr th:first-child {
+ padding-right: 0 !important;
+}
+
+tr td:nth-child(2), tr th:nth-child(2) {
+ padding-left: 0 !important;
+}
+
.waterfall-wrapper {
padding: 40px 20px 10px 20px;
}
.rowExpansionContent {
background-color: #E3F2FD;
- padding: 0px 0px 16px 16px;
+ padding: 0px 12px 16px 16px;
+ overflow: auto;
}
.rowExpansionContent div {
- overflow: hidden;
white-space: nowrap;
- text-overflow: ellipsis;
display: block;
}
\ No newline at end of file
diff --git a/src/app/visualizationComponents/WaterfallComponent/waterfall.component.ts b/src/app/visualizationComponents/WaterfallComponent/waterfall.component.ts
index 3f867643..316c1aba 100644
--- a/src/app/visualizationComponents/WaterfallComponent/waterfall.component.ts
+++ b/src/app/visualizationComponents/WaterfallComponent/waterfall.component.ts
@@ -99,12 +99,15 @@ export class WaterfallComponent extends BaseComponentDirective implements OnInit
}
goldenLayoutComponentResize() {
+ this.clusterTableWidth = this.nodeTableWidth = this.linkTableWidth = 0;
+ this.cdref.detectChanges();
this.clusterTableWidth = (this.clusterTable as any)._totalTableWidth().reduce((total, current ) => total += current, 0) - 28;
this.nodeTableWidth = (this.nodeTable as any)._totalTableWidth().reduce((total, current ) => total += current, 0) - 28;
this.linkTableWidth = (this.linkTable as any)._totalTableWidth().reduce((total, current ) => total += current, 0) - 28;
let height = this.container.height - 50;
this.scrollHeight = `${height}px`
+ this.cdref.detectChanges();
}
onClusterRowSelect(e) {
@@ -125,7 +128,8 @@ export class WaterfallComponent extends BaseComponentDirective implements OnInit
this.expandedClusterRowData = [];
Object.keys(cluster).filter(k => !(this.metaDataToSkip.includes(k) || k.charAt(0) == '_' || typeof cluster[k] == 'object')).forEach(k => {
let prop = this.commonService.titleize(k)
- this.expandedClusterRowData.push({'key': prop, 'value': cluster[k]});
+ let value = k == 'mean_genetic_distance' || k == 'links_per_node' ? cluster[k].toFixed(3) : cluster[k]
+ this.expandedClusterRowData.push({'key': prop, 'value': value});
})
this.selectedNodeRow = null;
diff --git a/src/assets/common/data/zipcodes.csv b/src/assets/common/data/zipcodes.csv
index 5fe2ef40..caa1d6da 100644
--- a/src/assets/common/data/zipcodes.csv
+++ b/src/assets/common/data/zipcodes.csv
@@ -361,6 +361,7 @@ zipcode,_lat,_lon
01430,42.654906,-71.920942
01431,42.446396,-71.459405
01432,42.446396,-71.459405
+01434,42.53206,-71.61374
01436,42.601427,-72.083838
01438,42.551681,-72.029434
01440,42.582529,-72.025884
@@ -1103,6 +1104,7 @@ zipcode,_lat,_lon
03281,43.084176,-71.762578
03282,43.967542,-71.840883
03284,43.493812,-72.047018
+03285,43.947877,-71.635785
03287,43.44853,-71.915826
03289,43.496372,-71.519728
03290,43.124825,-71.125879
@@ -1156,11 +1158,13 @@ zipcode,_lat,_lon
03583,44.695648,-71.387387
03584,44.476575,-71.561225
03585,44.245004,-71.888882
+03586,44.21841,-71.80024
03587,44.695648,-71.387387
03588,44.56532,-71.218672
03589,44.695648,-71.387387
03590,44.695648,-71.387387
03592,44.695648,-71.387387
+03593,44.301396,-71.299834
03595,44.26895,-71.547061
03597,44.695648,-71.387387
03598,44.363681,-71.610189
@@ -1220,6 +1224,7 @@ zipcode,_lat,_lon
03820,43.297309,-70.992042
03821,43.326734,-71.028427
03822,43.326734,-71.028427
+03823,43.174607,-70.941453
03824,43.165772,-70.962843
03825,43.29779,-71.097423
03826,42.893629,-71.14269
@@ -1253,6 +1258,7 @@ zipcode,_lat,_lon
03858,42.937092,-71.006898
03859,42.861915,-71.04002
03860,43.784643,-71.10263
+03861,43.119202,-71.007082
03862,43.00027,-70.913947
03864,43.667352,-71.153338
03865,42.937838,-70.926206
@@ -1897,6 +1903,7 @@ zipcode,_lat,_lon
05405,44.442117,-73.082525
05406,44.442117,-73.082525
05407,44.442117,-73.082525
+05408,44.505238,-73.272419
05439,44.49518,-73.165092
05440,44.93606,-73.289065
05441,44.836967,-72.92169
@@ -2121,6 +2128,7 @@ zipcode,_lat,_lon
06039,41.951917,-73.38138
06040,41.776048,-72.523748
06041,41.794681,-72.564832
+06042,41.802645,-72.521039
06043,41.768648,-72.439278
06045,41.791776,-72.718832
06049,41.791776,-72.718832
@@ -2269,6 +2277,7 @@ zipcode,_lat,_lon
06335,41.523377,-72.021165
06336,41.579548,-72.196273
06337,41.559873,-71.889199
+06338,41.464584,-71.972828
06339,41.492843,-71.965554
06340,41.355405,-72.038268
06349,41.39973,-72.090357
@@ -2343,6 +2352,7 @@ zipcode,_lat,_lon
06457,41.550139,-72.655357
06459,41.556463,-72.658179
06460,41.343773,-72.951273
+06461,41.239865,-73.075394
06467,41.565697,-72.903746
06468,41.341845,-73.236918
06469,41.508904,-72.440086
@@ -2479,6 +2489,8 @@ zipcode,_lat,_lon
06816,41.308873,-73.363661
06817,41.308873,-73.363661
06820,41.075846,-73.480765
+06824,41.173039,-73.280818
+06825,41.196583,-73.243254
06829,41.25553,-73.427915
06830,41.042746,-73.62617
06831,41.079983,-73.654472
@@ -2508,6 +2520,7 @@ zipcode,_lat,_lon
06883,41.222945,-73.376263
06888,41.308873,-73.363661
06889,41.141005,-73.34689
+06890,41.148565,-73.28778
06896,41.271095,-73.38634
06897,41.209695,-73.439165
06901,41.054082,-73.536216
@@ -3632,8 +3645,10 @@ zipcode,_lat,_lon
10048,40.71254,-74.013289
10055,40.780751,-73.977182
10060,40.780751,-73.977182
+10065,40.764689,-73.963264
10069,40.777952,-73.988381
10072,40.780751,-73.977182
+10075,40.773413,-73.956291
10079,40.780751,-73.977182
10080,40.780751,-73.977182
10081,40.780751,-73.977182
@@ -6844,6 +6859,7 @@ zipcode,_lat,_lon
17012,40.136687,-77.242805
17013,40.168495,-77.228817
17014,40.478716,-77.345514
+17015,40.183404,-77.232115
17016,40.275536,-76.405309
17017,40.894363,-76.596151
17018,40.361876,-76.895539
@@ -6951,6 +6967,7 @@ zipcode,_lat,_lon
17140,40.30864,-76.846449
17177,40.298988,-76.847194
17201,39.908055,-77.666445
+17202,39.923181,-77.690468
17210,40.171667,-77.661354
17211,39.755155,-78.406388
17212,39.943762,-78.122265
@@ -7067,6 +7084,7 @@ zipcode,_lat,_lon
17405,40.008647,-76.597187
17406,40.004593,-76.594727
17407,39.897907,-76.662569
+17408,39.93282,-76.799214
17415,39.972985,-76.687826
17501,40.129894,-76.361053
17502,40.088469,-76.462434
@@ -7419,6 +7437,7 @@ zipcode,_lat,_lon
18255,40.911443,-75.779007
18256,40.944777,-76.145197
18301,41.089642,-75.199705
+18302,41.096574,-75.111116
18320,41.071213,-75.236436
18321,41.079679,-75.319542
18322,41.054711,-75.331879
@@ -7636,6 +7655,7 @@ zipcode,_lat,_lon
18853,41.668617,-76.265169
18854,41.77197,-76.521266
18901,40.334863,-75.118737
+18902,40.353296,-75.097808
18910,40.328645,-75.10278
18911,40.328645,-75.10278
18912,40.309942,-75.074252
@@ -7748,6 +7768,7 @@ zipcode,_lat,_lon
19057,40.143309,-74.846373
19058,40.328645,-75.10278
19059,40.328645,-75.10278
+19060,39.850699,-75.491965
19061,39.85091,-75.418228
19063,39.918804,-75.399118
19064,39.931858,-75.341583
@@ -8883,6 +8904,7 @@ zipcode,_lat,_lon
21403,39.007361,-76.584637
21404,38.974203,-76.594942
21405,38.992124,-76.506883
+21409,39.018435,-76.442533
21411,38.974203,-76.594942
21412,38.974203,-76.594942
21501,39.580691,-78.690593
@@ -9120,6 +9142,7 @@ zipcode,_lat,_lon
22003,38.835762,-77.212794
22009,38.831813,-77.288755
22015,38.785864,-77.286156
+22025,38.591896,-77.349497
22026,38.584734,-77.349935
22027,38.895078,-77.221453
22030,38.853231,-77.305097
@@ -9307,10 +9330,12 @@ zipcode,_lat,_lon
22546,37.948572,-77.437767
22547,38.271077,-77.17261
22548,37.837583,-76.694775
+22551,38.187032,-77.700356
22552,38.009438,-77.225139
22553,38.182869,-77.69932
22554,38.438958,-77.4354
22555,38.417273,-77.460814
+22556,38.488667,-77.515136
22558,38.121793,-76.79025
22560,37.916613,-76.947547
22565,38.137216,-77.518865
@@ -9731,6 +9756,7 @@ zipcode,_lat,_lon
23450,36.844004,-76.12036
23451,36.856348,-76.053568
23452,36.846147,-76.097355
+23453,36.78349,-76.071207
23454,36.828586,-76.070772
23455,36.888865,-76.146757
23456,36.746599,-76.039092
@@ -10633,6 +10659,9 @@ zipcode,_lat,_lon
25396,38.296818,-81.554655
25401,39.444061,-77.951924
25402,39.461663,-78.011472
+25403,39.47485,-78.01164
+25404,39.489919,-77.896363
+25405,39.408919,-77.962368
25410,39.315914,-77.877223
25411,39.552557,-78.18773
25413,39.377876,-78.064925
@@ -11328,6 +11357,7 @@ zipcode,_lat,_lon
27263,35.935894,-79.93955
27264,36.080707,-80.0244
27265,36.029892,-79.991542
+27268,35.971402,-79.994698
27278,36.077432,-79.085469
27281,35.186814,-79.561566
27282,35.996926,-79.926902
@@ -11437,9 +11467,11 @@ zipcode,_lat,_lon
27520,35.633257,-78.435416
27521,35.425247,-78.656553
27522,36.108089,-78.671974
+27523,35.773618,-78.956926
27524,35.4282,-78.339839
27525,36.068066,-78.399881
27526,35.758691,-78.646886
+27527,35.653948,-78.381715
27529,35.714139,-78.66304
27530,35.368277,-78.092871
27531,35.463121,-77.995728
@@ -11448,6 +11480,7 @@ zipcode,_lat,_lon
27534,35.385571,-78.03207
27536,36.38698,-78.396213
27537,0,0
+27539,35.676533,-78.813447
27540,35.607666,-78.829724
27541,36.314975,-79.06404
27542,35.571141,-78.287178
@@ -11474,6 +11507,7 @@ zipcode,_lat,_lon
27571,35.906468,-78.45482
27572,36.205828,-78.878578
27573,36.39165,-78.950937
+27574,36.475265,-78.842101
27576,35.563572,-78.244459
27577,35.536543,-78.336001
27581,36.209675,-78.72704
@@ -11565,6 +11599,7 @@ zipcode,_lat,_lon
27812,35.757803,-77.39351
27813,35.616471,-77.935161
27814,35.500693,-76.977521
+27815,35.924689,-77.693027
27816,36.09786,-78.03876
27817,35.460458,-77.063047
27818,36.491011,-77.031055
@@ -11903,6 +11938,7 @@ zipcode,_lat,_lon
28309,35.039726,-78.842868
28310,35.050612,-78.80384
28311,35.156447,-78.912281
+28312,34.947752,-78.738133
28314,35.05425,-79.011328
28315,35.203802,-79.517795
28318,35.066726,-78.590479
@@ -12260,6 +12296,7 @@ zipcode,_lat,_lon
28756,35.336371,-82.158975
28757,35.641473,-82.315637
28758,35.371065,-82.49375
+28759,35.38135,-82.588899
28760,35.381677,-82.481257
28761,35.669058,-81.906612
28762,35.616257,-82.148319
@@ -12573,6 +12610,7 @@ zipcode,_lat,_lon
29483,33.040201,-80.431751
29484,33.00234,-80.226694
29485,32.999726,-80.329328
+29486,33.103211,-80.166653
29487,32.659087,-80.167357
29488,32.925196,-80.703213
29492,32.96678,-79.852835
@@ -12738,6 +12776,7 @@ zipcode,_lat,_lon
29703,34.992612,-81.178712
29704,34.859604,-80.938257
29706,34.693285,-81.168022
+29707,34.987552,-80.858188
29708,35.050243,-80.990828
29709,34.755564,-80.129515
29710,35.035952,-81.165152
@@ -12815,6 +12854,8 @@ zipcode,_lat,_lon
29904,32.390605,-80.661027
29905,32.340119,-80.689041
29906,32.382327,-80.760332
+29907,32.474692,-80.599222
+29909,32.336992,-80.848074
29910,32.34969,-80.899506
29911,32.885698,-81.206373
29912,32.488929,-80.989142
@@ -13134,6 +13175,7 @@ zipcode,_lat,_lon
30360,33.931069,-84.277772
30361,33.844371,-84.47405
30362,33.891251,-84.07456
+30363,33.791478,-84.398892
30364,33.844371,-84.47405
30366,33.891251,-84.07456
30368,33.844371,-84.47405
@@ -13237,6 +13279,7 @@ zipcode,_lat,_lon
30533,34.541371,-84.024387
30534,34.453661,-84.155043
30535,34.631639,-83.569657
+30536,34.652002,-84.359442
30537,34.97,-83.357507
30538,34.53512,-83.258748
30539,34.658482,-84.493207
@@ -13632,6 +13675,7 @@ zipcode,_lat,_lon
31558,30.844019,-81.630984
31560,31.512923,-82.010258
31561,31.198914,-81.332211
+31562,30.47534,-82.103897
31563,31.731163,-82.194912
31564,31.018954,-82.416543
31565,31.069415,-81.633658
@@ -13693,7 +13737,9 @@ zipcode,_lat,_lon
31716,31.358861,-84.100301
31717,30.888734,-84.617836
31718,30.901863,-84.570049
+31719,32.090308,-84.310747
31720,30.856633,-83.526479
+31721,31.52526,-84.301465
31722,31.080682,-83.649138
31723,31.346088,-84.901178
31724,31.557533,-84.854212
@@ -13757,6 +13803,7 @@ zipcode,_lat,_lon
31785,31.689973,-84.32748
31786,31.760361,-84.614914
31787,31.772073,-84.222541
+31788,31.111533,-83.683892
31789,31.481811,-83.727288
31790,31.652867,-83.578336
31791,31.603336,-83.850054
@@ -13821,6 +13868,7 @@ zipcode,_lat,_lon
32013,30.041449,-83.123055
32024,30.105451,-82.68778
32025,30.160115,-82.639606
+32026,30.059065,-82.190472
32030,30.105553,-81.768964
32033,29.813208,-81.468724
32034,30.60778,-81.682889
@@ -13854,6 +13902,7 @@ zipcode,_lat,_lon
32073,30.119884,-81.791546
32079,29.984882,-81.802221
32080,0,0
+32081,30.119606,-81.426613
32082,30.102212,-81.382302
32083,30.054956,-82.213361
32084,29.849505,-81.332552
@@ -13912,6 +13961,7 @@ zipcode,_lat,_lon
32159,28.923468,-81.894367
32160,29.768321,-81.990729
32162,0,0
+32163,28.836798,-81.959093
32164,29.486141,-81.204491
32168,28.951931,-81.033705
32169,29.131714,-81.133519
@@ -14251,6 +14301,7 @@ zipcode,_lat,_lon
32720,29.07198,-81.403355
32721,28.997288,-81.299521
32722,29.022729,-81.172169
+32723,29.034536,-81.304522
32724,29.056227,-81.096461
32725,28.900274,-81.245074
32726,28.710129,-81.683696
@@ -14690,6 +14741,7 @@ zipcode,_lat,_lon
33446,26.454017,-80.181862
33447,26.645895,-80.430269
33448,26.645895,-80.430269
+33449,26.592718,-80.233877
33454,26.645895,-80.430269
33455,27.050934,-80.158594
33458,26.645895,-80.430269
@@ -14706,6 +14758,8 @@ zipcode,_lat,_lon
33469,26.645895,-80.430269
33470,26.649816,-80.294771
33471,26.886471,-81.195575
+33472,26.539753,-80.18903
+33473,26.503291,-80.192245
33474,26.645895,-80.430269
33475,27.110182,-80.454196
33476,26.623067,-80.17864
@@ -14744,8 +14798,10 @@ zipcode,_lat,_lon
33539,28.21305,-82.16568
33540,28.240942,-82.156491
33541,28.240543,-82.446251
+33542,28.23578,-82.177617
33543,28.20592,-82.306326
33544,28.271989,-82.284738
+33545,28.268312,-82.291154
33547,27.893718,-82.205331
33548,27.871964,-82.438841
33549,28.060825,-82.391666
@@ -14753,6 +14809,7 @@ zipcode,_lat,_lon
33556,28.128688,-82.584113
33558,0,0
33559,0,0
+33563,28.017072,-82.125766
33564,28.029627,-82.134741
33565,28.082724,-82.156607
33566,28.008056,-82.341905
@@ -14765,6 +14822,8 @@ zipcode,_lat,_lon
33573,27.704046,-82.35742
33574,28.334752,-82.269323
33576,28.331729,-82.300982
+33578,27.861107,-82.35506
+33579,27.798165,-82.280665
33583,27.871964,-82.438841
33584,27.999687,-82.287957
33585,28.735643,-82.061556
@@ -14774,6 +14833,7 @@ zipcode,_lat,_lon
33593,28.324796,-82.481766
33594,27.937779,-82.347371
33595,27.871964,-82.438841
+33596,27.8872,-82.225852
33597,28.647306,-82.108078
33598,27.73383,-82.297468
33601,27.996097,-82.582035
@@ -14908,6 +14968,7 @@ zipcode,_lat,_lon
33809,28.176194,-81.959132
33810,28.147923,-82.037153
33811,27.986538,-82.013855
+33812,27.97104,-81.894289
33813,27.963896,-81.917604
33815,28.049648,-82.006855
33820,28.002553,-81.61864
@@ -15013,10 +15074,15 @@ zipcode,_lat,_lon
33957,26.458308,-82.100065
33960,27.120281,-81.390945
33965,26.552895,-81.94861
+33966,26.581491,-81.834968
+33967,26.471507,-81.81224
33970,26.564718,-81.620778
33971,26.589408,-81.670757
33972,26.641661,-81.913575
+33973,26.600661,-81.730435
+33974,26.558935,-81.601239
33975,26.763312,-81.438833
+33976,26.591277,-81.68613
33980,26.986122,-82.055747
33981,26.93457,-82.232398
33982,26.959685,-81.819036
@@ -15159,6 +15225,7 @@ zipcode,_lat,_lon
34287,27.189487,-82.334882
34288,0,0
34289,0,0
+34291,27.11647,-82.215206
34292,27.090034,-82.370028
34293,27.060576,-82.352038
34295,27.085985,-82.438918
@@ -15222,6 +15289,8 @@ zipcode,_lat,_lon
34613,28.604951,-82.531987
34614,28.627958,-82.536465
34636,28.65503,-82.267706
+34637,28.307793,-82.464927
+34638,28.271944,-82.527429
34639,28.250774,-82.46263
34652,28.239369,-82.736882
34653,28.242508,-82.695536
@@ -15254,6 +15323,8 @@ zipcode,_lat,_lon
34711,28.584025,-81.779423
34712,28.811078,-81.653642
34713,28.811078,-81.653642
+34714,28.399468,-81.812869
+34715,28.631041,-81.726074
34729,28.811078,-81.653642
34731,28.863361,-81.905624
34734,28.538407,-81.520774
@@ -15923,6 +15994,7 @@ zipcode,_lat,_lon
36376,31.252306,-85.264387
36401,31.489241,-87.052004
36420,31.304166,-86.386398
+36421,31.328718,-86.508335
36425,31.56779,-87.250028
36426,31.129427,-87.096126
36427,31.091784,-87.26404
@@ -16646,6 +16718,7 @@ zipcode,_lat,_lon
37931,35.976167,-84.125653
37932,35.933487,-84.148074
37933,35.990142,-83.96218
+37934,35.87618,-84.180016
37938,36.116665,-83.935206
37939,35.990142,-83.96218
37940,35.990142,-83.96218
@@ -17513,6 +17586,37 @@ zipcode,_lat,_lon
39772,33.321036,-89.271149
39773,33.621135,-88.609136
39776,33.804808,-89.060746
+39813,31.423156,-84.684305
+39815,30.738835,-84.490657
+39817,30.943547,-84.601954
+39819,30.785401,-84.645153
+39823,31.333568,-84.947033
+39824,31.528358,-84.864795
+39825,30.930767,-84.740763
+39826,31.818496,-84.321144
+39827,30.947615,-84.210378
+39828,30.79859,-84.226723
+39832,31.19106,-85.027892
+39834,30.894291,-84.431155
+39836,31.666007,-84.868633
+39837,31.152104,-84.677706
+39840,31.7813,-84.764124
+39841,31.292866,-84.685044
+39842,31.754312,-84.435527
+39845,30.95145,-84.892724
+39846,31.568957,-84.746001
+39851,31.619831,-84.992583
+39854,31.869218,-85.052557
+39859,30.987638,-84.812759
+39861,31.13535,-84.987248
+39862,31.459371,-84.517381
+39866,31.56093,-84.603184
+39867,31.842843,-84.93075
+39870,31.322028,-84.414137
+39877,31.915159,-84.511576
+39885,31.721896,-84.343026
+39886,31.732531,-84.617228
+39897,30.911205,-84.329813
39901,33.891251,-84.07456
40003,38.274456,-85.090374
40004,37.822585,-85.466944
@@ -20018,6 +20122,7 @@ zipcode,_lat,_lon
46034,40.154903,-86.038337
46035,40.211041,-86.64787
46036,40.27843,-85.719657
+46037,39.962809,-85.943916
46038,39.967406,-85.964894
46039,40.373825,-86.309246
46040,39.894912,-85.792762
@@ -20037,6 +20142,7 @@ zipcode,_lat,_lon
46058,40.359433,-86.628659
46060,40.073328,-85.999521
46061,40.072462,-86.052285
+46062,40.061285,-86.055943
46063,40.271524,-85.72808
46064,40.107304,-85.757678
46065,40.360973,-86.603449
@@ -21014,6 +21120,7 @@ zipcode,_lat,_lon
48028,42.597245,-82.596757
48030,42.496485,-83.098474
48032,43.12226,-82.599804
+48033,42.459322,-83.293205
48034,42.478495,-83.279164
48035,42.551185,-82.91672
48036,42.593834,-82.913321
@@ -21127,6 +21234,7 @@ zipcode,_lat,_lon
48165,42.498145,-83.608727
48166,41.921912,-83.330583
48167,42.41729,-83.432434
+48168,42.405262,-83.540498
48169,42.467503,-83.946982
48170,42.366737,-83.489679
48173,42.112182,-83.272588
@@ -21148,6 +21256,7 @@ zipcode,_lat,_lon
48190,42.124398,-83.594567
48191,42.129589,-83.569965
48192,42.19499,-83.206572
+48193,42.174019,-83.21085
48195,42.257801,-83.285939
48197,42.202139,-83.620494
48198,42.309687,-83.772991
@@ -21394,6 +21503,7 @@ zipcode,_lat,_lon
48635,44.377795,-84.072974
48636,44.622852,-84.14818
48637,43.389643,-84.309397
+48638,43.418925,-84.018242
48640,43.626132,-84.33803
48641,43.538252,-84.387753
48642,43.68698,-84.280136
@@ -21521,6 +21631,7 @@ zipcode,_lat,_lon
48852,43.350251,-85.051692
48853,43.099153,-84.68977
48854,42.574335,-84.460273
+48855,42.681274,-83.8972
48856,43.197902,-84.730738
48857,42.844288,-84.136097
48858,43.636855,-84.807511
@@ -21621,6 +21732,7 @@ zipcode,_lat,_lon
49034,42.226193,-85.363194
49035,42.595121,-85.308555
49036,41.905358,-85.058716
+49037,42.334561,-85.249172
49038,42.147551,-86.365588
49039,42.224757,-86.372276
49040,41.977796,-85.351074
@@ -21885,9 +21997,11 @@ zipcode,_lat,_lon
49515,43.031413,-85.550267
49516,43.031413,-85.550267
49518,43.031413,-85.550267
+49519,42.895765,-85.71951
49523,43.031413,-85.550267
49525,43.013527,-85.602729
49530,43.031413,-85.550267
+49534,42.964438,-85.787181
49544,43.007274,-85.725535
49546,42.930146,-85.53904
49548,42.864793,-85.615175
@@ -22177,6 +22291,7 @@ zipcode,_lat,_lon
50020,41.390677,-94.813882
50021,41.756321,-93.601467
50022,41.381871,-94.960765
+50023,41.726631,-93.630839
50025,41.704535,-94.918652
50026,41.827251,-94.449511
50027,41.46974,-92.487177
@@ -22387,6 +22502,7 @@ zipcode,_lat,_lon
50321,41.546945,-93.659668
50322,41.630449,-93.753628
50323,41.62938,-93.771676
+50324,41.604709,-93.712724
50325,41.607588,-93.744905
50327,0,0
50328,41.672687,-93.572173
@@ -23478,6 +23594,7 @@ zipcode,_lat,_lon
53545,42.710981,-89.112201
53546,42.663574,-88.947859
53547,42.729359,-89.030111
+53548,42.689322,-89.131287
53549,42.993502,-88.759793
53550,42.564434,-89.507906
53551,43.080902,-88.913251
@@ -23833,6 +23950,7 @@ zipcode,_lat,_lon
54479,44.805167,-90.141112
54480,45.19405,-90.302783
54481,44.551808,-89.531871
+54482,44.550416,-89.509449
54484,44.809072,-90.030674
54485,45.396466,-89.217933
54486,44.75984,-89.039052
@@ -24247,6 +24365,7 @@ zipcode,_lat,_lon
55127,45.080265,-93.08752
55128,44.991316,-92.948738
55129,44.898516,-92.92301
+55130,44.973302,-93.08241
55133,45.005902,-93.105869
55144,45.005902,-93.105869
55145,45.005902,-93.105869
@@ -26532,6 +26651,7 @@ zipcode,_lat,_lon
60121,42.04133,-88.3126
60122,42.067101,-88.304994
60123,42.036325,-88.371044
+60124,42.020169,-88.400686
60125,41.839679,-88.088716
60126,41.88353,-87.946413
60128,41.839679,-88.088716
@@ -26571,6 +26691,7 @@ zipcode,_lat,_lon
60164,41.92138,-87.892412
60165,41.90743,-87.878011
60168,41.811929,-87.68732
+60169,42.05087,-88.116615
60170,42.025776,-88.425931
60171,41.923168,-87.83931
60172,41.839679,-88.088716
@@ -26614,6 +26735,8 @@ zipcode,_lat,_lon
60399,0,0
60401,41.356872,-87.626723
60402,41.811929,-87.68732
+60403,41.568188,-88.118873
+60404,41.513454,-88.224146
60406,41.811929,-87.68732
60407,41.238676,-88.278834
60408,41.285878,-88.017171
@@ -26624,6 +26747,7 @@ zipcode,_lat,_lon
60415,41.811929,-87.68732
60416,41.284033,-88.374819
60417,41.426684,-87.621223
+60418,41.645598,-87.740078
60419,41.811929,-87.68732
60420,41.059551,-88.417086
60421,41.44288,-88.090588
@@ -26632,6 +26756,7 @@ zipcode,_lat,_lon
60424,41.1775,-88.338018
60425,41.811929,-87.68732
60426,41.811929,-87.68732
+60428,41.59981,-87.690617
60429,41.811929,-87.68732
60430,41.811929,-87.68732
60431,41.471206,-87.93909
@@ -26686,9 +26811,14 @@ zipcode,_lat,_lon
60480,41.811929,-87.68732
60481,41.35934,-88.084716
60482,41.811929,-87.68732
+60484,41.443025,-87.710477
+60487,41.563837,-87.830349
60490,41.679041,-88.140332
+60491,41.602698,-87.962605
60499,41.811929,-87.68732
60501,41.811929,-87.68732
+60502,41.787522,-88.260017
+60503,41.70767,-88.257742
60504,41.768399,-88.136616
60505,41.765478,-88.405446
60506,41.79083,-88.416837
@@ -26747,6 +26877,8 @@ zipcode,_lat,_lon
60568,41.935616,-88.43238
60570,41.839679,-88.088716
60572,41.839679,-88.088716
+60585,41.657058,-88.225243
+60586,41.571556,-88.238218
60597,41.839679,-88.088716
60598,41.839679,-88.088716
60599,41.839679,-88.088716
@@ -26789,6 +26921,7 @@ zipcode,_lat,_lon
60639,41.811929,-87.68732
60640,41.811929,-87.68732
60641,41.811929,-87.68732
+60642,41.902042,-87.658544
60643,41.811929,-87.68732
60644,41.811929,-87.68732
60645,42.00808,-87.721458
@@ -26888,6 +27021,7 @@ zipcode,_lat,_lon
60955,40.758445,-87.852046
60956,40.966993,-87.716074
60957,40.660905,-88.197834
+60958,41.065203,-87.591599
60959,40.720981,-88.186732
60960,40.422456,-87.858213
60961,41.099001,-88.198405
@@ -27258,6 +27392,7 @@ zipcode,_lat,_lon
61701,40.462041,-88.850396
61702,40.519236,-88.864303
61704,40.491715,-88.982373
+61705,40.523132,-89.07201
61709,40.461431,-88.953015
61710,40.477735,-88.954174
61720,40.568549,-88.722113
@@ -27811,6 +27946,8 @@ zipcode,_lat,_lon
62707,39.785116,-89.632205
62708,39.806089,-89.586356
62709,39.749457,-89.606017
+62711,39.766136,-89.732756
+62712,39.748065,-89.581282
62713,39.749457,-89.606017
62715,39.749457,-89.606017
62716,39.848201,-89.536369
@@ -28190,6 +28327,7 @@ zipcode,_lat,_lon
63365,38.716287,-90.875127
63366,38.823944,-90.742745
63367,38.791341,-90.74284
+63368,38.751545,-90.728422
63369,38.94773,-90.8106
63370,39.077584,-91.231719
63373,38.92592,-90.38632
@@ -28197,6 +28335,7 @@ zipcode,_lat,_lon
63377,39.076463,-90.996268
63378,38.770187,-91.188586
63379,39.016299,-90.940268
+63380,38.813115,-91.12213
63381,39.022137,-90.996785
63382,39.251403,-91.530807
63383,38.808454,-91.2166
@@ -29211,6 +29350,7 @@ zipcode,_lat,_lon
65814,37.25807,-93.343673
65817,37.25807,-93.343673
65890,37.25807,-93.343673
+65897,37.199857,-93.280538
65898,37.180349,-93.295137
65899,37.181498,-93.259586
66002,39.535948,-95.225098
@@ -29951,6 +30091,7 @@ zipcode,_lat,_lon
67840,37.237186,-99.82422
67841,37.624913,-100.27543
67842,37.587839,-99.799449
+67843,37.730253,-99.93724
67844,37.279983,-100.211034
67846,38.000771,-100.664407
67849,38.121492,-99.709532
@@ -30164,6 +30305,7 @@ zipcode,_lat,_lon
68376,40.167245,-95.945731
68377,40.232006,-97.028942
68378,40.345196,-96.000386
+68379,40.529115,-95.869802
68380,40.195573,-96.379188
68381,40.262266,-96.689998
68382,40.653589,-96.086904
@@ -31523,6 +31665,7 @@ zipcode,_lat,_lon
72016,34.968975,-92.626882
72017,34.785525,-91.573785
72018,34.597345,-92.622857
+72019,34.633802,-92.699001
72020,35.380014,-91.525309
72021,34.883421,-91.194574
72022,34.612417,-92.493519
@@ -31753,6 +31896,7 @@ zipcode,_lat,_lon
72402,35.80881,-90.652887
72403,35.830541,-90.703915
72404,35.779183,-90.766012
+72405,35.90269,-90.650204
72410,35.952057,-91.030074
72411,35.810496,-90.641731
72412,36.128069,-90.691421
@@ -31937,6 +32081,7 @@ zipcode,_lat,_lon
72704,36.087732,-94.309322
72711,36.397805,-94.043837
72712,36.347107,-94.223419
+72713,36.297956,-94.282784
72714,36.426659,-94.330765
72715,36.442323,-94.427298
72716,36.299507,-93.956801
@@ -32088,6 +32233,7 @@ zipcode,_lat,_lon
73022,35.525192,-97.992347
73023,35.031247,-97.881959
73024,35.378409,-98.781794
+73025,35.729682,-97.569841
73026,35.23429,-97.291356
73027,35.950214,-97.291688
73028,35.977031,-97.628098
@@ -32448,6 +32594,7 @@ zipcode,_lat,_lon
73949,36.507508,-101.780668
73950,36.866365,-100.877878
73951,36.971874,-101.073973
+73960,36.491667,-101.792613
74001,36.490056,-96.061608
74002,36.561588,-96.162409
74003,36.759485,-95.970182
@@ -32465,6 +32612,7 @@ zipcode,_lat,_lon
74016,36.495713,-95.435688
74017,36.348616,-95.604344
74018,36.343579,-95.605964
+74019,36.284767,-95.603193
74020,36.263766,-96.443319
74021,36.370042,-95.857143
74022,36.800524,-95.922953
@@ -32870,8 +33018,10 @@ zipcode,_lat,_lon
75029,33.20743,-97.116282
75030,32.91747,-96.534737
75032,32.886,-96.409502
+75033,33.184818,-96.844308
75034,33.152222,-96.796437
75035,33.157083,-96.772929
+75036,33.133351,-96.914663
75037,32.767268,-96.777626
75038,32.767268,-96.777626
75039,32.73178,-96.82273
@@ -32903,6 +33053,7 @@ zipcode,_lat,_lon
75069,33.141438,-96.588295
75070,33.230381,-96.627018
75071,0,0
+75072,33.187899,-96.699951
75074,33.109044,-96.578819
75075,33.162417,-96.71546
75076,33.817503,-96.676191
@@ -32966,6 +33117,7 @@ zipcode,_lat,_lon
75153,32.165005,-96.338746
75154,32.484383,-96.795429
75155,32.300757,-96.735335
+75156,32.277923,-96.105287
75157,32.455407,-96.439495
75158,32.463618,-96.384263
75159,32.620763,-96.573555
@@ -33289,6 +33441,7 @@ zipcode,_lat,_lon
75713,32.411237,-95.289903
75750,32.27795,-95.067302
75751,32.188097,-95.882391
+75752,32.251937,-95.799861
75754,32.423029,-95.712867
75755,32.571552,-95.057746
75756,32.232783,-95.575732
@@ -33321,6 +33474,7 @@ zipcode,_lat,_lon
75799,32.411237,-95.289903
75801,31.848542,-95.685179
75802,31.926836,-95.579561
+75803,31.881777,-95.679494
75831,31.412142,-95.990369
75832,31.794191,-95.661964
75833,31.363103,-95.899965
@@ -33388,6 +33542,7 @@ zipcode,_lat,_lon
75962,31.699494,-94.607432
75963,31.604573,-94.664127
75964,31.673736,-94.693206
+75965,31.728994,-94.626523
75966,30.838608,-93.767911
75968,31.24817,-93.973106
75969,31.440245,-94.869754
@@ -33460,6 +33615,7 @@ zipcode,_lat,_lon
76078,33.092103,-97.480329
76082,32.80864,-97.693195
76084,32.455147,-97.141191
+76085,32.861116,-97.692165
76086,32.780766,-97.806778
76087,32.753927,-97.786026
76088,32.847803,-97.860618
@@ -33538,6 +33694,8 @@ zipcode,_lat,_lon
76206,33.169379,-97.150558
76207,33.238378,-97.203975
76208,33.160393,-97.095421
+76209,33.2315,-97.109986
+76210,33.149467,-97.096016
76225,33.355828,-97.708353
76226,33.215066,-97.164644
76227,33.278066,-97.01748
@@ -34137,6 +34295,7 @@ zipcode,_lat,_lon
77402,29.83399,-95.434241
77404,28.798156,-95.651058
77406,29.50401,-95.919107
+77407,29.679616,-95.704357
77410,29.83399,-95.434241
77411,29.83399,-95.434241
77412,29.60466,-96.524899
@@ -34215,6 +34374,7 @@ zipcode,_lat,_lon
77494,29.83399,-95.434241
77496,29.525461,-95.756462
77497,29.525461,-95.756462
+77498,29.640973,-95.655782
77501,29.83399,-95.434241
77502,29.678179,-95.202911
77503,29.65955,-95.169129
@@ -34235,6 +34395,7 @@ zipcode,_lat,_lon
77520,29.83399,-95.434241
77521,29.83399,-95.434241
77522,29.83399,-95.434241
+77523,29.766302,-94.865759
77530,29.83399,-95.434241
77531,29.031236,-95.3908
77532,29.83399,-95.434241
@@ -34725,6 +34886,8 @@ zipcode,_lat,_lon
78538,26.332751,-97.96224
78539,26.328674,-98.139672
78540,26.319405,-98.190922
+78541,26.452135,-98.276811
+78542,26.432513,-98.089884
78543,26.297428,-97.98837
78545,26.562044,-99.133528
78547,26.339353,-98.737359
@@ -34750,6 +34913,7 @@ zipcode,_lat,_lon
78570,26.209065,-98.075583
78572,26.229639,-98.192732
78573,26.409709,-98.224206
+78574,26.31117,-98.372914
78575,26.006779,-97.547392
78576,26.193734,-98.101526
78577,26.186698,-98.127765
@@ -34803,6 +34967,7 @@ zipcode,_lat,_lon
78630,30.656817,-97.602552
78631,30.247879,-99.268227
78632,29.447211,-97.494649
+78633,30.738187,-97.754527
78634,30.551885,-97.554189
78635,30.225386,-98.542031
78636,30.21577,-98.405866
@@ -35384,6 +35549,7 @@ zipcode,_lat,_lon
79925,31.773452,-106.37709
79926,31.694842,-106.299987
79927,31.660671,-106.176474
+79928,31.678635,-106.115148
79929,31.694842,-106.299987
79930,31.809457,-106.464242
79931,31.694842,-106.299987
@@ -35459,6 +35625,7 @@ zipcode,_lat,_lon
80020,40.046064,-105.097151
80021,39.885388,-105.11389
80022,39.869835,-104.771527
+80023,39.975844,-105.009381
80024,39.844501,-104.918783
80025,39.93242,-105.287967
80026,40.026334,-105.104899
@@ -35486,9 +35653,12 @@ zipcode,_lat,_lon
80105,39.659461,-103.948538
80106,39.208967,-104.505121
80107,39.382844,-104.495911
+80108,39.444376,-104.853179
+80109,39.372344,-104.912085
80110,39.648958,-104.973852
80111,39.666811,-104.864703
80112,39.581238,-104.862194
+80113,39.644445,-104.965111
80116,39.30403,-104.756722
80117,39.370254,-104.421214
80118,39.213354,-104.950189
@@ -35501,6 +35671,8 @@ zipcode,_lat,_lon
80126,39.54372,-104.969143
80127,39.544307,-105.153074
80128,39.591827,-105.083196
+80129,39.546879,-105.011599
+80130,39.528342,-104.923869
80131,39.347863,-104.994708
80132,39.086393,-104.807666
80133,39.112138,-104.900328
@@ -35561,6 +35733,7 @@ zipcode,_lat,_lon
80243,39.738752,-104.408349
80244,39.738752,-104.408349
80246,39.708637,-104.931234
+80247,39.697809,-104.878897
80248,39.738752,-104.408349
80249,39.83776,-104.697674
80250,39.738752,-104.408349
@@ -35597,6 +35770,7 @@ zipcode,_lat,_lon
80302,40.063935,-105.390027
80303,40.067772,-105.27484
80304,40.114114,-105.369797
+80305,39.976873,-105.248683
80306,40.102219,-105.384694
80307,40.087835,-105.373507
80308,40.027672,-105.3868
@@ -35714,6 +35888,8 @@ zipcode,_lat,_lon
80551,40.464092,-104.885116
80553,40.628112,-105.569245
80601,39.942984,-104.786597
+80602,39.966162,-104.908888
+80603,39.951146,-104.660237
80610,40.675794,-104.607073
80611,40.443596,-104.240542
80612,40.597204,-104.869798
@@ -35818,6 +35994,7 @@ zipcode,_lat,_lon
80864,38.738943,-104.193088
80866,39.03635,-105.15597
80901,38.861469,-104.857828
+80902,38.683656,-104.82224
80903,38.828893,-104.809929
80904,38.861981,-104.874531
80905,38.844319,-104.801472
@@ -35838,8 +36015,11 @@ zipcode,_lat,_lon
80920,38.965298,-104.755956
80921,39.055054,-104.89122
80922,38.904817,-104.70124
+80923,38.926735,-104.714341
+80924,38.967295,-104.721983
80925,38.737774,-104.645854
80926,38.644087,-104.880825
+80927,38.9283,-104.658773
80928,38.645078,-104.395746
80929,38.846355,-104.624727
80930,38.824202,-104.493259
@@ -35850,6 +36030,8 @@ zipcode,_lat,_lon
80935,38.82469,-104.562027
80936,38.82469,-104.562027
80937,38.82469,-104.562027
+80938,38.906503,-104.656877
+80939,38.872785,-104.675754
80940,38.82469,-104.562027
80941,38.82469,-104.562027
80942,38.82469,-104.562027
@@ -35860,6 +36042,7 @@ zipcode,_lat,_lon
80947,38.82469,-104.562027
80949,38.82469,-104.562027
80950,38.82469,-104.562027
+80951,38.878533,-104.657577
80960,38.82469,-104.562027
80962,38.82469,-104.562027
80970,38.82469,-104.562027
@@ -36002,6 +36185,7 @@ zipcode,_lat,_lon
81290,38.358421,-105.106881
81301,37.318364,-107.880367
81302,37.357249,-107.935945
+81303,37.124375,-107.854835
81320,37.718233,-108.791671
81321,37.373594,-108.662826
81323,37.469333,-108.35245
@@ -36018,6 +36202,7 @@ zipcode,_lat,_lon
81335,37.508114,-108.744007
81401,38.443069,-108.050689
81402,38.485093,-107.885975
+81403,38.314564,-107.92836
81410,38.805013,-107.983125
81411,38.34867,-108.937369
81413,38.881646,-107.795704
@@ -36048,6 +36233,7 @@ zipcode,_lat,_lon
81504,39.123554,-108.589414
81505,39.14657,-108.626481
81506,39.089167,-108.566523
+81507,39.009885,-108.651873
81520,39.08246,-108.404055
81521,39.149614,-108.685164
81522,38.678448,-108.971863
@@ -36393,6 +36579,7 @@ zipcode,_lat,_lon
83404,43.433036,-111.660433
83405,43.323306,-111.782152
83406,43.444641,-111.963375
+83414,43.861439,-110.935725
83415,43.323306,-111.782152
83420,44.015259,-111.42527
83421,44.001141,-111.535095
@@ -36498,6 +36685,7 @@ zipcode,_lat,_lon
83643,44.625475,-116.449286
83644,43.577401,-116.590338
83645,44.38304,-116.651974
+83646,43.649585,-116.431758
83647,43.156195,-115.720455
83648,43.009282,-115.588317
83650,42.838437,-116.032163
@@ -36627,9 +36815,11 @@ zipcode,_lat,_lon
84002,40.320728,-110.435974
84003,40.395796,-111.803101
84004,40.459133,-111.773164
+84005,40.322736,-111.999426
84006,40.592045,-112.0786
84007,40.312539,-110.229816
84008,40.443106,-109.505593
+84009,40.553454,-112.018129
84010,40.874038,-111.870994
84011,40.963547,-112.115984
84013,40.183311,-111.919871
@@ -36663,6 +36853,7 @@ zipcode,_lat,_lon
84042,40.340251,-111.719923
84043,40.318139,-111.921078
84044,40.699401,-112.088875
+84045,40.292383,-111.928756
84046,40.990039,-109.704889
84047,40.608972,-111.885868
84049,40.489378,-111.485127
@@ -36696,6 +36887,7 @@ zipcode,_lat,_lon
84078,40.368246,-109.556103
84079,40.160179,-109.547839
84080,40.086909,-112.455046
+84081,40.602762,-112.038247
84082,40.410548,-111.394222
84083,40.7329,-113.991849
84084,40.606125,-111.978898
@@ -36710,6 +36902,7 @@ zipcode,_lat,_lon
84093,40.595025,-111.824566
84094,40.569893,-111.858617
84095,40.554098,-111.953891
+84096,40.487037,-112.099983
84097,40.297153,-111.670519
84098,40.702896,-111.548098
84101,40.756095,-111.900719
@@ -36740,6 +36933,7 @@ zipcode,_lat,_lon
84126,40.668068,-111.908297
84127,40.668068,-111.908297
84128,40.697645,-112.037673
+84129,40.653577,-111.962063
84130,40.668068,-111.908297
84131,40.668068,-111.908297
84132,40.772743,-111.838541
@@ -37013,6 +37207,7 @@ zipcode,_lat,_lon
85039,33.276539,-112.18717
85040,33.367267,-112.066878
85041,33.379728,-112.112254
+85042,33.355545,-112.052242
85043,33.276539,-112.18717
85044,33.338743,-111.97277
85045,33.302168,-112.122581
@@ -37045,11 +37240,37 @@ zipcode,_lat,_lon
85079,33.276539,-112.18717
85080,33.276539,-112.18717
85082,33.276539,-112.18717
+85083,33.745359,-112.174635
85085,33.276539,-112.18717
85086,33.276539,-112.18717
85087,33.276539,-112.18717
85098,33.276539,-112.18717
85099,33.276539,-112.18717
+85118,33.356986,-111.363091
+85119,33.386823,-111.508244
+85120,33.386881,-111.561667
+85121,33.137154,-111.914311
+85122,32.916724,-111.747972
+85123,32.713078,-111.678371
+85128,32.962838,-111.509785
+85131,32.653843,-111.577149
+85132,32.926956,-111.214093
+85135,32.99495,-110.779898
+85137,33.136397,-111.022592
+85138,33.017663,-111.991284
+85139,32.923874,-112.206708
+85140,33.248065,-111.489238
+85141,32.641808,-111.434533
+85142,33.192391,-111.66594
+85143,33.156022,-111.519755
+85145,32.541314,-111.391056
+85147,33.097774,-111.724833
+85172,32.904833,-111.955451
+85173,33.268271,-111.136483
+85191,32.984984,-111.446934
+85192,32.962942,-110.678531
+85193,32.813284,-111.840448
+85194,32.901117,-111.628048
85201,33.440695,-111.856967
85202,33.393484,-111.804513
85203,33.448876,-111.824363
@@ -37058,6 +37279,7 @@ zipcode,_lat,_lon
85206,33.390148,-111.717968
85207,33.443017,-111.743444
85208,33.395932,-111.663655
+85209,33.378291,-111.634444
85210,33.387296,-111.840095
85211,33.466313,-111.837345
85212,33.342476,-111.635307
@@ -37126,12 +37348,16 @@ zipcode,_lat,_lon
85283,33.373723,-111.876915
85284,33.343546,-111.914127
85285,33.276539,-112.18717
+85286,33.272273,-111.833863
85287,33.428511,-111.934865
85289,33.276539,-112.18717
85290,33.276539,-112.18717
85291,33.013502,-111.42979
85292,33.070467,-110.789035
+85295,33.305025,-111.737246
85296,33.314508,-111.748791
+85297,33.280504,-111.733395
+85298,33.239818,-111.728198
85299,33.276539,-112.18717
85301,33.276539,-112.18717
85302,33.276539,-112.18717
@@ -37207,9 +37433,14 @@ zipcode,_lat,_lon
85380,33.276539,-112.18717
85381,33.276539,-112.18717
85382,33.276539,-112.18717
+85383,33.798406,-112.305179
85385,33.276539,-112.18717
85387,33.276539,-112.18717
+85388,33.602425,-112.432075
85390,33.276539,-112.18717
+85392,33.47657,-112.309428
+85395,33.485001,-112.405856
+85396,33.53652,-112.702463
85501,33.476884,-110.868076
85502,33.421919,-110.81268
85530,33.038678,-109.785973
@@ -37283,6 +37514,7 @@ zipcode,_lat,_lon
85653,32.442979,-111.159344
85654,31.970131,-111.890713
85655,31.880077,-109.754263
+85658,32.515939,-111.152622
85662,31.531998,-110.909305
85670,31.880077,-109.754263
85671,31.880077,-109.754263
@@ -37337,6 +37569,9 @@ zipcode,_lat,_lon
85751,32.161972,-110.714678
85752,31.970131,-111.890713
85754,31.970131,-111.890713
+85755,32.468351,-110.981507
+85756,32.07033,-110.906256
+85757,32.128356,-111.122305
85775,31.970131,-111.890713
85777,32.071764,-110.859106
85901,34.570811,-110.032025
@@ -37369,6 +37604,7 @@ zipcode,_lat,_lon
86002,35.630842,-112.052427
86003,35.630842,-112.052427
86004,35.610905,-111.324353
+86005,35.087726,-111.619198
86011,35.630842,-112.052427
86015,35.630842,-112.052427
86016,35.630842,-112.052427
@@ -37409,6 +37645,7 @@ zipcode,_lat,_lon
86312,34.668291,-112.307777
86313,34.706724,-112.39773
86314,34.627778,-112.262805
+86315,34.674028,-112.289062
86320,34.970209,-112.263974
86321,34.583624,-113.164742
86322,34.569687,-111.809798
@@ -37439,6 +37676,7 @@ zipcode,_lat,_lon
86404,34.557533,-114.330704
86405,35.605301,-113.642712
86406,34.756714,-114.11897
+86409,35.461006,-114.01806
86411,35.605301,-113.642712
86412,35.397172,-113.843241
86413,35.30024,-114.221531
@@ -37568,6 +37806,8 @@ zipcode,_lat,_lon
87124,35.282859,-106.712495
87125,35.044339,-106.672872
87131,35.044339,-106.672872
+87144,35.330173,-106.710088
+87151,35.007689,-106.860341
87153,35.044339,-106.672872
87154,35.044339,-106.672872
87158,35.044339,-106.672872
@@ -37633,6 +37873,8 @@ zipcode,_lat,_lon
87504,35.893597,-106.007499
87505,35.656638,-105.946155
87506,35.606283,-106.075722
+87507,35.621812,-106.108636
+87508,35.52063,-105.945842
87509,35.521181,-105.981847
87510,36.219921,-106.262778
87511,36.064687,-106.077688
@@ -37665,6 +37907,7 @@ zipcode,_lat,_lon
87543,36.148617,-105.664751
87544,35.849514,-106.288482
87545,35.863858,-106.295255
+87547,35.81098,-106.207689
87548,36.189247,-106.217575
87549,36.331253,-106.002778
87551,36.728938,-106.515714
@@ -37755,6 +37998,7 @@ zipcode,_lat,_lon
88004,32.41815,-106.820075
88005,32.167296,-106.897176
88006,32.305193,-106.786259
+88007,32.389107,-106.975113
88008,31.87054,-106.626892
88009,32.055007,-108.62913
88011,32.324407,-106.668287
@@ -37799,6 +38043,7 @@ zipcode,_lat,_lon
88063,31.880055,-106.599975
88065,32.619444,-108.37041
88072,32.11871,-106.648973
+88081,32.219357,-106.293671
88101,34.497241,-103.294978
88102,34.628472,-103.391269
88103,34.401452,-103.326445
@@ -37987,6 +38232,7 @@ zipcode,_lat,_lon
88901,36.322484,-114.819717
88905,35.927901,-114.972061
89001,37.472491,-115.143709
+89002,35.998452,-114.961812
89003,36.819857,-116.609372
89004,36.088098,-115.608969
89005,36.020563,-114.82952
@@ -38018,12 +38264,14 @@ zipcode,_lat,_lon
89031,36.277966,-115.143685
89032,36.217968,-115.170919
89033,36.284511,-115.134488
+89034,36.809235,-114.149779
89036,35.927901,-114.972061
89039,35.252249,-114.871384
89040,36.570259,-114.473191
89041,36.655797,-116.004795
89042,37.759736,-114.972405
89043,37.759736,-114.972405
+89044,35.939868,-115.056288
89045,37.583805,-116.598559
89046,35.332725,-114.892999
89047,37.722454,-117.796454
@@ -38031,12 +38279,15 @@ zipcode,_lat,_lon
89049,38.262575,-116.624808
89052,35.987798,-115.116652
89053,35.927901,-114.972061
+89054,35.920973,-115.190516
89060,0,0
89061,0,0
89070,35.927901,-114.972061
89074,0,0
89077,0,0
+89081,36.258477,-115.107492
89084,0,0
+89085,36.309602,-115.198175
89086,0,0
89101,36.17372,-115.10647
89102,36.281327,-115.390646
@@ -38091,14 +38342,21 @@ zipcode,_lat,_lon
89154,35.927901,-114.972061
89155,35.927901,-114.972061
89156,36.20343,-115.036376
+89158,36.104781,-115.176621
89159,35.927901,-114.972061
89160,35.927901,-114.972061
+89161,36.03739,-115.508236
89163,35.927901,-114.972061
89164,35.927901,-114.972061
+89166,36.337311,-115.468547
+89169,36.124089,-115.141811
89170,35.927901,-114.972061
89173,35.927901,-114.972061
89177,35.927901,-114.972061
+89178,35.987826,-115.295353
+89179,35.891606,-115.327935
89180,35.927901,-114.972061
+89183,35.996194,-115.157976
89185,35.927901,-114.972061
89191,35.927901,-114.972061
89193,35.927901,-114.972061
@@ -38146,9 +38404,11 @@ zipcode,_lat,_lon
89434,39.591728,-119.716747
89435,40.541218,-119.586934
89436,39.651879,-119.659053
+89437,39.501156,-119.468805
89438,41.263287,-118.174506
89439,39.516486,-119.983252
89440,39.332488,-119.613509
+89441,39.68139,-119.687547
89442,39.639846,-119.302787
89444,38.844747,-119.35228
89445,41.213481,-117.706799
@@ -38159,6 +38419,7 @@ zipcode,_lat,_lon
89450,39.256357,-119.946371
89451,39.253908,-119.935619
89452,39.259103,-119.956585
+89460,38.902253,-119.792493
89494,0,0
89496,39.537979,-118.343592
89501,39.65558,-119.704614
@@ -38168,13 +38429,16 @@ zipcode,_lat,_lon
89505,39.52241,-119.835275
89506,39.695488,-119.811146
89507,39.54231,-119.816374
+89508,39.78062,-119.913755
89509,39.413458,-119.857022
89510,39.906211,-119.604367
89511,39.360265,-119.8057
89512,39.545363,-119.879069
89513,39.631922,-119.293722
89515,40.541218,-119.586934
+89519,39.478968,-119.857134
89520,40.541218,-119.586934
+89521,39.371633,-119.675912
89523,39.549297,-119.639031
89533,39.543941,-119.906109
89557,40.541218,-119.586934
@@ -38462,6 +38726,7 @@ zipcode,_lat,_lon
90747,33.867138,-118.253825
90748,33.786594,-118.298662
90749,33.786594,-118.298662
+90755,33.803166,-118.167132
90801,33.804309,-118.200957
90802,33.756024,-118.201101
90803,33.759885,-118.13016
@@ -38495,6 +38760,7 @@ zipcode,_lat,_lon
91003,33.786594,-118.298662
91006,33.786594,-118.298662
91007,33.786594,-118.298662
+91008,34.153159,-117.968818
91009,33.786594,-118.298662
91010,33.786594,-118.298662
91011,33.786594,-118.298662
@@ -38811,6 +39077,8 @@ zipcode,_lat,_lon
92007,33.023042,-117.274469
92008,33.016928,-116.846046
92009,33.082192,-117.267169
+92010,33.165392,-117.281425
+92011,33.106764,-117.296327
92013,33.016928,-116.846046
92014,32.974074,-117.224167
92018,33.016928,-116.846046
@@ -38857,6 +39125,7 @@ zipcode,_lat,_lon
92075,33.007075,-117.256769
92078,33.016928,-116.846046
92079,33.016928,-116.846046
+92081,33.164549,-117.24055
92082,33.016928,-116.846046
92083,33.016928,-116.846046
92084,33.016928,-116.846046
@@ -39047,6 +39316,7 @@ zipcode,_lat,_lon
92340,34.839964,-115.967051
92341,34.241137,-116.938548
92342,34.496921,-116.378323
+92344,34.39177,-117.406568
92345,34.839964,-115.967051
92346,34.156543,-117.14027
92347,35.012622,-116.191575
@@ -39080,6 +39350,7 @@ zipcode,_lat,_lon
92392,34.491985,-114.754916
92393,34.839964,-115.967051
92394,34.527103,-115.172471
+92395,34.504828,-117.298985
92397,34.839964,-115.967051
92398,34.926948,-116.709279
92399,34.06226,-116.971138
@@ -39173,6 +39444,7 @@ zipcode,_lat,_lon
92614,33.685319,-117.827913
92615,33.640302,-117.769442
92616,33.640302,-117.769442
+92617,33.641973,-117.841046
92618,33.641579,-117.73269
92619,33.66985,-117.765939
92620,33.691619,-117.765186
@@ -39327,6 +39599,7 @@ zipcode,_lat,_lon
93033,34.154141,-119.131326
93034,34.032383,-119.1343
93035,34.221157,-119.202365
+93036,34.248141,-119.153454
93040,34.435224,-118.785517
93041,34.148893,-119.15458
93042,34.113389,-119.112432
@@ -39447,6 +39720,7 @@ zipcode,_lat,_lon
93311,35.294405,-118.905173
93312,35.240577,-118.917413
93313,35.27581,-119.013543
+93314,35.393866,-119.244846
93380,35.294405,-118.905173
93381,35.294405,-118.905173
93382,35.294405,-118.905173
@@ -39581,6 +39855,7 @@ zipcode,_lat,_lon
93615,36.515805,-119.236871
93616,36.6524,-119.592015
93618,36.509532,-119.395365
+93619,36.914176,-119.593979
93620,37.073301,-120.623363
93621,36.723654,-119.051698
93622,36.772741,-120.213442
@@ -39595,6 +39870,7 @@ zipcode,_lat,_lon
93633,36.734051,-118.958777
93634,37.167262,-119.243637
93635,37.103768,-120.847479
+93636,36.984877,-119.877519
93637,36.928286,-120.182423
93638,37.023383,-119.977376
93639,37.160622,-119.945035
@@ -39647,12 +39923,15 @@ zipcode,_lat,_lon
93720,36.850729,-119.802227
93721,36.729049,-119.771526
93722,36.793291,-119.931132
+93723,36.789756,-119.952559
93724,36.746375,-119.639658
93725,36.620698,-119.730824
93726,36.726349,-119.759875
93727,36.763149,-119.673272
93728,36.756348,-119.817429
93729,36.746375,-119.639658
+93730,36.906027,-119.751141
+93737,36.753614,-119.645581
93740,36.746375,-119.639658
93741,36.746375,-119.639658
93744,36.746375,-119.639658
@@ -39826,6 +40105,7 @@ zipcode,_lat,_lon
94155,37.784827,-122.727802
94156,37.784827,-122.727802
94157,37.784827,-122.727802
+94158,37.772534,-122.388384
94159,37.784827,-122.727802
94160,37.784827,-122.727802
94161,37.784827,-122.727802
@@ -39928,6 +40208,7 @@ zipcode,_lat,_lon
94501,37.770563,-122.264779
94502,37.735088,-122.243067
94503,0,0
+94505,37.871268,-121.596984
94506,37.832075,-121.916718
94507,37.936723,-122.067431
94508,38.57145,-122.450215
@@ -39955,6 +40236,7 @@ zipcode,_lat,_lon
94530,37.918024,-122.30248
94531,37.920852,-121.723919
94533,38.278428,-122.020276
+94534,38.241946,-122.118272
94535,38.271218,-121.94123
94536,37.565285,-121.982721
94537,37.680181,-121.921498
@@ -40001,6 +40283,7 @@ zipcode,_lat,_lon
94579,37.688518,-122.147425
94580,37.68123,-122.133825
94581,38.509569,-122.3539
+94582,37.765347,-121.915432
94583,37.768556,-121.975531
94585,38.195385,-121.994935
94586,37.585883,-121.883018
@@ -40441,6 +40724,7 @@ zipcode,_lat,_lon
95464,39.276878,-122.868266
95465,38.406676,-123.020406
95466,39.056598,-123.525375
+95467,38.812954,-122.548099
95468,38.919145,-123.540572
95469,39.360935,-123.106751
95470,39.302446,-123.462532
@@ -40626,6 +40910,7 @@ zipcode,_lat,_lon
95743,38.377411,-121.444429
95746,38.756614,-121.183436
95747,38.779875,-121.335559
+95757,38.331652,-121.436979
95758,38.347205,-121.428681
95759,38.377411,-121.444429
95762,38.686847,-121.044846
@@ -40634,6 +40919,7 @@ zipcode,_lat,_lon
95776,38.695895,-121.709713
95798,38.619545,-121.961532
95799,38.619545,-121.961532
+95811,38.593792,-121.482158
95812,38.377411,-121.444429
95813,38.377411,-121.444429
95814,38.579055,-121.480905
@@ -41066,6 +41352,7 @@ zipcode,_lat,_lon
96970,11.140496,166.410291
97001,45.263301,-121.088513
97002,45.224241,-122.8198
+97003,45.503723,-122.864778
97004,45.247636,-122.468991
97005,45.496289,-122.800146
97006,45.52013,-122.860376
@@ -41129,6 +41416,8 @@ zipcode,_lat,_lon
97077,45.548616,-123.114725
97078,45.451976,-122.789257
97080,45.481252,-122.38675
+97086,45.445315,-122.527925
+97089,45.426416,-122.442992
97101,45.121454,-123.191368
97102,45.810934,-123.962989
97103,46.142206,-123.795996
@@ -41205,6 +41494,7 @@ zipcode,_lat,_lon
97233,45.515121,-122.496052
97236,45.484594,-122.504175
97238,45.580557,-122.374776
+97239,45.489938,-122.690453
97240,45.580557,-122.374776
97242,45.580557,-122.374776
97251,45.580557,-122.374776
@@ -41247,7 +41537,9 @@ zipcode,_lat,_lon
97312,44.936357,-123.038116
97313,44.984941,-122.998756
97314,44.965541,-123.006606
+97317,44.902416,-122.906292
97321,44.594489,-122.581676
+97322,44.627553,-123.017613
97324,44.377113,-123.588271
97325,44.799503,-122.900739
97326,44.638187,-123.538238
@@ -41370,6 +41662,7 @@ zipcode,_lat,_lon
97467,43.449523,-123.745579
97469,43.267918,-123.42545
97470,43.053573,-123.360805
+97471,43.21907,-123.487894
97472,43.863845,-122.99879
97473,43.671853,-123.825751
97476,42.800135,-124.433374
@@ -41445,6 +41738,7 @@ zipcode,_lat,_lon
97641,43.157855,-120.724397
97701,44.082037,-121.227125
97702,43.998448,-121.260298
+97703,44.176389,-121.382887
97707,43.843071,-121.576423
97708,44.001834,-120.94952
97709,44.001834,-120.94952
@@ -41575,6 +41869,7 @@ zipcode,_lat,_lon
98027,47.497419,-122.010699
98028,47.754219,-122.124643
98029,47.565587,-122.025754
+98030,47.367214,-122.198051
98031,47.379972,-122.16538
98032,47.432251,-121.803388
98033,47.673263,-122.187029
@@ -41613,8 +41908,10 @@ zipcode,_lat,_lon
98073,47.432251,-121.803388
98074,0,0
98075,0,0
+98077,47.752379,-122.060283
98082,47.432251,-121.803388
98083,47.432251,-121.803388
+98087,47.860067,-122.267267
98092,47.288362,-122.097976
98093,47.311041,-122.113791
98101,47.432251,-121.803388
@@ -41690,6 +41987,7 @@ zipcode,_lat,_lon
98226,48.768396,-122.486483
98227,48.814753,-121.988548
98228,48.814753,-121.988548
+98229,48.705945,-122.398326
98230,48.935767,-122.366448
98231,48.814753,-121.988548
98232,48.565955,-122.448358
@@ -41822,6 +42120,7 @@ zipcode,_lat,_lon
98387,47.058452,-122.41648
98388,47.132671,-122.331781
98390,47.176966,-122.15982
+98391,47.177103,-122.166173
98392,47.732624,-122.564557
98393,47.626717,-122.649953
98394,47.311117,-122.772503
@@ -42254,6 +42553,7 @@ zipcode,_lat,_lon
99350,46.148328,-119.559674
99352,46.282031,-119.491659
99353,46.315267,-119.371393
+99354,46.328769,-119.299255
99356,45.851428,-120.354257
99357,46.897589,-119.686316
99359,46.512828,-118.10237
@@ -42289,6 +42589,7 @@ zipcode,_lat,_lon
99522,61.108864,-149.440311
99523,61.108864,-149.440311
99524,61.108864,-149.440311
+99530,61.184682,-149.983704
99540,61.108864,-149.440311
99546,54.24018,-176.787412
99547,54.24018,-176.787412
@@ -42351,6 +42652,7 @@ zipcode,_lat,_lon
99620,62.117231,-163.237636
99621,60.314735,-163.118947
99622,60.314735,-163.118947
+99623,61.439281,-149.922743
99624,58.268704,-155.797078
99625,58.268704,-156.648418
99626,60.314735,-163.118947
diff --git a/src/environments/version.prod.ts b/src/environments/version.prod.ts
index 920b2f40..23ee9c63 100644
--- a/src/environments/version.prod.ts
+++ b/src/environments/version.prod.ts
@@ -1,3 +1,3 @@
export const version = '2.0.0';
-export const buildDate = '2026-01-13T14:47:02.910Z';
-export const commitHash = '44fd41e';
\ No newline at end of file
+export const buildDate = '2026-01-13T16:13:36.276Z';
+export const commitHash = '024bc7c';
\ No newline at end of file
diff --git a/src/styles.scss b/src/styles.scss
index b3429665..997e153c 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -548,6 +548,15 @@ body .ui-tabview.ui-tabview-top .ui-tabview-nav li.ui-state-active, body .ui-tab
position: absolute;
}
+.tool-btn-container {
+ opacity: 1;
+ z-index: 2;
+ height: 50px;
+ top: 15px;
+ left: 15px;
+ position: absolute;
+}
+
// .nodes path {
// cursor: -webkit-grab;
// cursor: grab;
diff --git a/tsconfig.json b/tsconfig.json
index 051dbe89..76ede5a1 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -22,7 +22,8 @@
"es6",
"es2019",
"es7",
- "dom"
+ "dom",
+ "dom.iterable"
],
"paths": {
"@shared/*": [