From 5edb166b3d7e4b389f0704f24c1caddfb25fe089 Mon Sep 17 00:00:00 2001
From: Glenn Vorhes <gavorhes@wisc.edu>
Date: Fri, 10 Mar 2017 20:45:21 -0600
Subject: [PATCH] added no param geojson vector layer

---
 dist/domUtil/media-control.js                 |   2 +-
 dist/layers/LayerBaseVectorGeoJson.d.ts       |   4 +-
 dist/layers/LayerBaseVectorGeoJson.js         |   4 +-
 src/layers/LayerBaseVectorGeoJson.ts          |   5 +-
 test/data/geoJsonFeatures.ts                  | 968 ++++++++++++++++++
 .../layers/LayerBaseVectorGeoJsonSpec.ts      |  44 +
 test/specs/spec.ts                            |  19 +-
 7 files changed, 1020 insertions(+), 26 deletions(-)
 create mode 100644 test/data/geoJsonFeatures.ts
 create mode 100644 test/specs/layers/LayerBaseVectorGeoJsonSpec.ts

diff --git a/dist/domUtil/media-control.js b/dist/domUtil/media-control.js
index 5140cbc..7dd6480 100644
--- a/dist/domUtil/media-control.js
+++ b/dist/domUtil/media-control.js
@@ -208,4 +208,4 @@ var MediaControl = (function () {
 }());
 exports.MediaControl = MediaControl;
 nm.MediaControl = MediaControl;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21VdGlsL21lZGlhLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7OztBQUVILDJDQUFzQztBQUN0QywrQ0FBMkM7QUFDM0MsMEJBQTZCO0FBRTdCLElBQUksRUFBRSxHQUFHLGlCQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFNUI7OztHQUdHO0FBRUgsK0JBQStCLEVBQUU7SUFDN0IsWUFBWSxDQUFDO0lBQ2IsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXBCLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFpQkQ7SUFvQkk7Ozs7O09BS0c7SUFDSCxzQkFDSSxPQUFrQyxFQUNsQyxVQUFrRCxFQUNsRCxXQUFrQztRQURsQywyQkFBQSxFQUFBLDJCQUEwQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBQ2xELDRCQUFBLEVBQUEsZ0JBQWtDO1FBSHRDLGlCQWlHQztRQTVGRyxXQUFXLENBQUMsR0FBRyxHQUFHLE9BQU8sV0FBVyxDQUFDLEdBQUcsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDM0Us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QyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBTUQsc0JBQUksd0NBQWM7UUFKbEI7OztXQUdHO2FBQ0gsVUFBbUIsT0FBdUI7WUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDL0IsQ0FBQzs7O09BQUE7SUFDTCxtQkFBQztBQUFELENBQUMsQUFqTkQsSUFpTkM7QUFqTlksb0NBQVk7QUFtTnpCLEVBQUUsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENyZWF0ZWQgYnkgZ2F2b3JoZXMgb24gMTEvMi8yMDE1LlxyXG4gKi9cclxuXHJcbmltcG9ydCBwcm92aWRlIGZyb20gJy4uL3V0aWwvcHJvdmlkZSc7XHJcbmltcG9ydCB7cmFuZ2VDaGFuZ2V9IGZyb20gJy4vcmFuZ2UtY2hhbmdlJztcclxuaW1wb3J0ICQgPSByZXF1aXJlKCdqcXVlcnknKTtcclxuXHJcbmxldCBubSA9IHByb3ZpZGUoJ2RvbVV0aWwnKTtcclxuXHJcbi8qKlxyXG4gKiBAY2FsbGJhY2sgbWVkaWFDYWxsYmFja1xyXG4gKiBAcGFyYW0ge251bWJlcn0gdG1cclxuICovXHJcblxyXG5mdW5jdGlvbiB0aW1lVG9Mb2NhbERhdGVTdHJpbmcodG0pIHtcclxuICAgIFwidXNlIHN0cmljdFwiO1xyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZSh0bSk7XHJcbiAgICBsZXQgcDEgPSBkLnRvTG9jYWxlVGltZVN0cmluZygpLnNwbGl0KCcgJyk7XHJcbiAgICBsZXQgcDIgPSBwMVswXS5zcGxpdCgnOicpO1xyXG4gICAgcDIgPSBwMi5zbGljZSgwLCAyKTtcclxuXHJcbiAgICByZXR1cm4gZC50b0xvY2FsZURhdGVTdHJpbmcoKSArICc8YnI+JyArIHAyLmpvaW4oJzonKSArICcgJyArIHAxWzFdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIGNoYW5nZUZ1bmN0aW9ue1xyXG4gICAgKG5ld1ZhbD86IG51bWJlcik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgbWVkaWFSYW5nZUNvbmZpZ3tcclxuICAgIG1pbj86IG51bWJlcjtcclxuICAgIG1heD86IG51bWJlcjtcclxuICAgIHZhbD86IG51bWJlcjtcclxuICAgIHN0ZXA/OiBudW1iZXI7XHJcbiAgICBwbGF5SW50ZXJ2YWw/OiBudW1iZXI7XHJcbiAgICBzaG93QXNEYXRlPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgTWVkaWFDb250cm9sIHtcclxuICAgIF9jb250YWluZXI6IEpRdWVyeTtcclxuICAgIF9taW46IG51bWJlcjtcclxuICAgIF9tYXg6IG51bWJlcjtcclxuICAgIF9wbGF5SW50ZXJ2YWw6IG51bWJlcjtcclxuICAgIF9zdGVwOiBudW1iZXI7XHJcbiAgICBfY3VycmVudFZhbHVlOiBudW1iZXI7XHJcblxyXG4gICAgX3BsYXlpbmc6IGJvb2xlYW47XHJcblxyXG4gICAgXyRidG5TdG9wOiBKUXVlcnk7XHJcbiAgICBfJHNsaWRlcjogSlF1ZXJ5O1xyXG4gICAgXyR2YWxMYWJlbFZhbDogSlF1ZXJ5O1xyXG4gICAgXyR2YWxMYWJlbE1pbjogSlF1ZXJ5O1xyXG4gICAgXyR2YWxMYWJlbE1heDogSlF1ZXJ5O1xyXG4gICAgX2ludGVydmFsOiBudW1iZXI7XHJcbiAgICBfc2hvd0FzRGF0ZTogYm9vbGVhbjtcclxuXHJcbiAgICBfY2hhbmdlRnVuYzogY2hhbmdlRnVuY3Rpb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGVsZW1lbnRcclxuICAgICAqIEBwYXJhbSBjaGFuZ2VGdW5jXHJcbiAgICAgKiBAcGFyYW0gbWVkaWFDb25maWdcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgZWxlbWVudDogSlF1ZXJ5fEhUTUxFbGVtZW50fHN0cmluZyxcclxuICAgICAgICBjaGFuZ2VGdW5jOiBjaGFuZ2VGdW5jdGlvbiA9ICgpOiB2b2lkID0+IHtyZXR1cm47fSxcclxuICAgICAgICBtZWRpYUNvbmZpZzogbWVkaWFSYW5nZUNvbmZpZyA9IHt9KSB7XHJcblxyXG4gICAgICAgIG1lZGlhQ29uZmlnLm1pbiA9IHR5cGVvZiBtZWRpYUNvbmZpZy5taW4gPT0gJ251bWJlcicgPyBtZWRpYUNvbmZpZy5taW4gOiAwO1xyXG4gICAgICAgIG1lZGlhQ29uZmlnLm1heCA9IHR5cGVvZiBtZWRpYUNvbmZpZy5tYXggPT0gJ251bWJlcicgPyBtZWRpYUNvbmZpZy5tYXggOiAxMDA7XHJcbiAgICAgICAgbWVkaWFDb25maWcudmFsID0gdHlwZW9mIG1lZGlhQ29uZmlnLnZhbCA9PSAnbnVtYmVyJyA/IG1lZGlhQ29uZmlnLnZhbCA6IDA7XHJcbiAgICAgICAgbWVkaWFDb25maWcuc3RlcCA9IHR5cGVvZiBtZWRpYUNvbmZpZy5zdGVwID09ICdudW1iZXInID8gbWVkaWFDb25maWcuc3RlcCA6IDU7XHJcbiAgICAgICAgbWVkaWFDb25maWcucGxheUludGVydmFsID0gdHlwZW9mIG1lZGlhQ29uZmlnLnBsYXlJbnRlcnZhbCA9PSAnbnVtYmVyJyA/IG1lZGlhQ29uZmlnLnBsYXlJbnRlcnZhbCA6IDUwMDtcclxuICAgICAgICBtZWRpYUNvbmZpZy5zaG93QXNEYXRlID0gdHlwZW9mIG1lZGlhQ29uZmlnLnNob3dBc0RhdGUgPT0gJ2Jvb2xlYW4nID8gbWVkaWFDb25maWcuc2hvd0FzRGF0ZSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mICBlbGVtZW50ID09ICdzdHJpbmcnKXtcclxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyID0gJCgnIycgKyBlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGVsZW1lbnRbJ3N0eWxlJ10gIT09ICd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyID0gJChlbGVtZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSBlbGVtZW50IGFzIEpRdWVyeTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5hZGRDbGFzcygnbWVkaWEtY29udHJvbC1jb250YWluZXInKTtcclxuICAgICAgICB0aGlzLl9wbGF5SW50ZXJ2YWwgPSBtZWRpYUNvbmZpZy5wbGF5SW50ZXJ2YWw7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRnVuYyA9IGNoYW5nZUZ1bmM7XHJcblxyXG4gICAgICAgIHRoaXMuX3Nob3dBc0RhdGUgPSBtZWRpYUNvbmZpZy5zaG93QXNEYXRlO1xyXG5cclxuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fbWluID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX21heCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9zdGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX3BsYXlpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IGh0bWxTdHIgPVxyXG4gICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJtZWRpYS1wbGF5ZXItYnV0dG9uIG1lZGlhLWJhY2tcIj48L3NwYW4+JyArXHJcbiAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cIm1lZGlhLXBsYXllci1idXR0b24gbWVkaWEtcGxheVwiPjwvc3Bhbj4nICtcclxuICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwibWVkaWEtcGxheWVyLWJ1dHRvbiBtZWRpYS1wYXVzZSBtZWRpYS1kaXNhYmxlZFwiPjwvc3Bhbj4nICtcclxuICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwibWVkaWEtcGxheWVyLWJ1dHRvbiBtZWRpYS1zdG9wIG1lZGlhLWRpc2FibGVkXCIgPjwvc3Bhbj4nICtcclxuICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwibWVkaWEtcGxheWVyLWJ1dHRvbiBtZWRpYS1haGVhZFwiPjwvc3Bhbj4nICtcclxuICAgICAgICAgICAgYDxpbnB1dCB0eXBlPVwicmFuZ2VcIj5gICtcclxuICAgICAgICAgICAgYDxkaXYgY2xhc3M9XCJtZWRpYS1jb250cm9sLXZhbHVlLWxhYmVsLWNvbnRhaW5lclwiPmAgK1xyXG4gICAgICAgICAgICBgPHNwYW4gY2xhc3M9XCJtZWRpYS1jb250cm9sLXZhbHVlLWxhYmVsLW1pblwiPjwvc3Bhbj5gICtcclxuICAgICAgICAgICAgYDxzcGFuIGNsYXNzPVwibWVkaWEtY29udHJvbC12YWx1ZS1sYWJlbC12YWxcIj48L3NwYW4+YCArXHJcbiAgICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIm1lZGlhLWNvbnRyb2wtdmFsdWUtbGFiZWwtbWF4XCI+PC9zcGFuPmAgK1xyXG4gICAgICAgICAgICBgPC9kaXY+YDtcclxuXHJcbiAgICAgICAgdGhpcy5fY29udGFpbmVyLmFwcGVuZChodG1sU3RyKTtcclxuXHJcbiAgICAgICAgLy8gbGV0IGJ0blBhdXNlID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJy5tZWRpYS1wYXVzZScpO1xyXG4gICAgICAgIGxldCBidG5QbGF5ID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJy5tZWRpYS1wbGF5Jyk7XHJcbiAgICAgICAgdGhpcy5fJGJ0blN0b3AgPSB0aGlzLl9jb250YWluZXIuZmluZCgnLm1lZGlhLXN0b3AnKTtcclxuICAgICAgICBsZXQgYnRuQWhlYWQgPSB0aGlzLl9jb250YWluZXIuZmluZCgnLm1lZGlhLWFoZWFkJyk7XHJcbiAgICAgICAgbGV0IGJ0bkJhY2sgPSB0aGlzLl9jb250YWluZXIuZmluZCgnLm1lZGlhLWJhY2snKTtcclxuICAgICAgICB0aGlzLl8kc2xpZGVyID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJ2lucHV0W3R5cGU9cmFuZ2VdJyk7XHJcblxyXG4gICAgICAgIHRoaXMuXyR2YWxMYWJlbE1pbiA9IHRoaXMuX2NvbnRhaW5lci5maW5kKCcubWVkaWEtY29udHJvbC12YWx1ZS1sYWJlbC1taW4nKTtcclxuICAgICAgICB0aGlzLl8kdmFsTGFiZWxWYWwgPSB0aGlzLl9jb250YWluZXIuZmluZCgnLm1lZGlhLWNvbnRyb2wtdmFsdWUtbGFiZWwtdmFsJyk7XHJcbiAgICAgICAgdGhpcy5fJHZhbExhYmVsTWF4ID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJy5tZWRpYS1jb250cm9sLXZhbHVlLWxhYmVsLW1heCcpO1xyXG5cclxuICAgICAgICB0aGlzLnNldE1pbk1heFZhbHVlU3RlcChtZWRpYUNvbmZpZy5taW4sIG1lZGlhQ29uZmlnLm1heCwgbWVkaWFDb25maWcudmFsLCBtZWRpYUNvbmZpZy5zdGVwKTtcclxuXHJcbiAgICAgICAgcmFuZ2VDaGFuZ2UodGhpcy5fJHNsaWRlciwobmV3VmFsKSA9PiB7IHRoaXMuY3VycmVudFZhbHVlID0gbmV3VmFsO30sIDEwMCk7XHJcblxyXG4gICAgICAgIGxldCBfX190aGlzID0gdGhpcztcclxuXHJcbiAgICAgICAgYnRuUGxheS5jbGljayhmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGxldCAkdGhpcyA9ICQodGhpcyk7XHJcbiAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdtZWRpYS1kaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICBfX190aGlzLl8kYnRuU3RvcC5yZW1vdmVDbGFzcygnbWVkaWEtZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgYnRuQWhlYWQuYWRkQ2xhc3MoJ21lZGlhLWxvY2tlZCcpO1xyXG4gICAgICAgICAgICBidG5CYWNrLmFkZENsYXNzKCdtZWRpYS1sb2NrZWQnKTtcclxuICAgICAgICAgICAgX19fdGhpcy5fJHNsaWRlci5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xyXG4gICAgICAgICAgICBfX190aGlzLl9wbGF5aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIF9fX3RoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgX19fdGhpcy5jdXJyZW50VmFsdWUgKz0gX19fdGhpcy5fc3RlcDtcclxuICAgICAgICAgICAgfSwgX19fdGhpcy5fcGxheUludGVydmFsKSBhcyBudW1iZXI7XHJcbiAgICAgICAgfSkgO1xyXG5cclxuICAgICAgICB0aGlzLl8kYnRuU3RvcC5jbGljayhmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoX19fdGhpcy5faW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICBsZXQgJHRoaXMgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygnbWVkaWEtZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgYnRuUGxheS5yZW1vdmVDbGFzcygnbWVkaWEtZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgYnRuQWhlYWQucmVtb3ZlQ2xhc3MoJ21lZGlhLWxvY2tlZCcpO1xyXG4gICAgICAgICAgICBidG5CYWNrLnJlbW92ZUNsYXNzKCdtZWRpYS1sb2NrZWQnKTtcclxuICAgICAgICAgICAgX19fdGhpcy5fJHNsaWRlci5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcclxuICAgICAgICAgICAgX19fdGhpcy5fcGxheWluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBidG5BaGVhZC5jbGljayhmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIF9fX3RoaXMuY3VycmVudFZhbHVlID0gX19fdGhpcy5jdXJyZW50VmFsdWUgKyBfX190aGlzLl9zdGVwO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBidG5CYWNrLmNsaWNrKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgX19fdGhpcy5jdXJyZW50VmFsdWUgPSBfX190aGlzLmN1cnJlbnRWYWx1ZSAtIF9fX3RoaXMuX3N0ZXA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFBsYXlpbmcoKXtcclxuICAgICAgICBpZiAodGhpcy5fcGxheWluZyl7XHJcbiAgICAgICAgICAgIHRoaXMuXyRidG5TdG9wLnRyaWdnZXIoJ2NsaWNrJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBwbGF5aW5nKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYXlpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1pbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWluO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtYXgoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc3RlcCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY3VycmVudFZhbHVlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGN1cnJlbnRWYWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIGlmIChuZXdWYWx1ZSA+IHRoaXMuX21heCkge1xyXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuX21pbjtcclxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlIDwgdGhpcy5fbWluKSB7XHJcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5fbWF4O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICB0aGlzLl8kc2xpZGVyLnZhbCh0aGlzLl9jdXJyZW50VmFsdWUudG9GaXhlZCgyKSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zaG93QXNEYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyR2YWxMYWJlbFZhbC5odG1sKHRpbWVUb0xvY2FsRGF0ZVN0cmluZyh0aGlzLmN1cnJlbnRWYWx1ZSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyR2YWxMYWJlbFZhbC5odG1sKHRoaXMuY3VycmVudFZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRnVuYyhuZXdWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXQgbWluIGFuZCBtYXggdmFsdWUgd2l0aCBzdGVwXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3TWluIHRoZSBuZXcgbWluXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbmV3TWF4IHRoZSBuZXcgbWFzXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW25ld1ZhbHVlPW5ld01pbl0gdGhlIHZhbHVlIHRvIHNldFxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuZXdTdGVwPShuZXdNYXgtbmV3TWluKS8yMF0gc3RlcCB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBzZXRNaW5NYXhWYWx1ZVN0ZXAobmV3TWluLCBuZXdNYXgsIG5ld1ZhbHVlLCBuZXdTdGVwKSB7XHJcbiAgICAgICAgdGhpcy5fbWluID0gbmV3TWluO1xyXG4gICAgICAgIHRoaXMuX21heCA9IG5ld01heDtcclxuXHJcbiAgICAgICAgbmV3VmFsdWUgPSB0eXBlb2YgbmV3VmFsdWUgPT0gJ251bWJlcicgPyBuZXdWYWx1ZSA6IG5ld01pbjtcclxuICAgICAgICBuZXdTdGVwID0gdHlwZW9mIG5ld1N0ZXAgPT0gJ251bWJlcicgPyBuZXdTdGVwIDogKG5ld01heC1uZXdNaW4pLzIwO1xyXG5cclxuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICB0aGlzLl9zdGVwID0gbmV3U3RlcDtcclxuXHJcbiAgICAgICAgdGhpcy5fJHNsaWRlci5wcm9wKCdtaW4nLCB0aGlzLm1pbi50b1N0cmluZygpKTtcclxuICAgICAgICB0aGlzLl8kc2xpZGVyLnByb3AoJ21heCcsIHRoaXMubWF4LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIHRoaXMuXyRzbGlkZXIucHJvcCgnc3RlcCcsIHRoaXMuc3RlcC50b1N0cmluZygpKTtcclxuICAgICAgICB0aGlzLl8kc2xpZGVyLnZhbCh0aGlzLmN1cnJlbnRWYWx1ZS50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3Nob3dBc0RhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHZhbExhYmVsTWluLmh0bWwodGltZVRvTG9jYWxEYXRlU3RyaW5nKHRoaXMuX21pbikpO1xyXG4gICAgICAgICAgICB0aGlzLl8kdmFsTGFiZWxWYWwuaHRtbCh0aW1lVG9Mb2NhbERhdGVTdHJpbmcodGhpcy5jdXJyZW50VmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy5fJHZhbExhYmVsTWF4Lmh0bWwodGltZVRvTG9jYWxEYXRlU3RyaW5nKHRoaXMuX21heCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyR2YWxMYWJlbE1pbi5odG1sKHRoaXMuX21pbi50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgdGhpcy5fJHZhbExhYmVsVmFsLmh0bWwodGhpcy5jdXJyZW50VmFsdWUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIHRoaXMuXyR2YWxMYWJlbE1heC5odG1sKHRoaXMuX21heC50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHttZWRpYUNhbGxiYWNrfSBuZXdGdW5jIHRoZSBjYWxsYmFjayBvbiBjaGFuZ2VcclxuICAgICAqL1xyXG4gICAgc2V0IGNoYW5nZUZ1bmN0aW9uKG5ld0Z1bmM6IGNoYW5nZUZ1bmN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRnVuYyA9IG5ld0Z1bmM7XHJcbiAgICB9XHJcbn1cclxuXHJcbm5tLk1lZGlhQ29udHJvbCA9IE1lZGlhQ29udHJvbDtcclxuXHJcbiJdfQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21VdGlsL21lZGlhLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7OztBQUVILDJDQUFzQztBQUN0QywrQ0FBMkM7QUFDM0MsMEJBQTZCO0FBRTdCLElBQUksRUFBRSxHQUFHLGlCQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFNUI7OztHQUdHO0FBRUgsK0JBQStCLEVBQUU7SUFDN0IsWUFBWSxDQUFDO0lBQ2IsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXBCLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFpQkQ7SUFvQkk7Ozs7O09BS0c7SUFDSCxzQkFDSSxPQUFrQyxFQUNsQyxVQUFrRCxFQUNsRCxXQUFrQztRQURsQywyQkFBQSxFQUFBLDJCQUEwQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBQ2xELDRCQUFBLEVBQUEsZ0JBQWtDO1FBSHRDLGlCQWlHQztRQTVGRyxXQUFXLENBQUMsR0FBRyxHQUFHLE9BQU8sV0FBVyxDQUFDLEdBQUcsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDM0Us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QyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBTUQsc0JBQUksd0NBQWM7UUFKbEI7OztXQUdHO2FBQ0gsVUFBbUIsT0FBdUI7WUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDL0IsQ0FBQzs7O09BQUE7SUFDTCxtQkFBQztBQUFELENBQUMsQUFqTkQsSUFpTkM7QUFqTlksb0NBQVk7QUFtTnpCLEVBQUUsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENyZWF0ZWQgYnkgZ2F2b3JoZXMgb24gMTEvMi8yMDE1LlxyXG4gKi9cclxuXHJcbmltcG9ydCBwcm92aWRlIGZyb20gJy4uL3V0aWwvcHJvdmlkZSc7XHJcbmltcG9ydCB7cmFuZ2VDaGFuZ2V9IGZyb20gJy4vcmFuZ2UtY2hhbmdlJztcclxuaW1wb3J0ICQgPSByZXF1aXJlKCdqcXVlcnknKTtcclxuXHJcbmxldCBubSA9IHByb3ZpZGUoJ2RvbVV0aWwnKTtcclxuXHJcbi8qKlxyXG4gKiBAY2FsbGJhY2sgbWVkaWFDYWxsYmFja1xyXG4gKiBAcGFyYW0ge251bWJlcn0gdG1cclxuICovXHJcblxyXG5mdW5jdGlvbiB0aW1lVG9Mb2NhbERhdGVTdHJpbmcodG0pIHtcclxuICAgIFwidXNlIHN0cmljdFwiO1xyXG4gICAgbGV0IGQgPSBuZXcgRGF0ZSh0bSk7XHJcbiAgICBsZXQgcDEgPSBkLnRvTG9jYWxlVGltZVN0cmluZygpLnNwbGl0KCcgJyk7XHJcbiAgICBsZXQgcDIgPSBwMVswXS5zcGxpdCgnOicpO1xyXG4gICAgcDIgPSBwMi5zbGljZSgwLCAyKTtcclxuXHJcbiAgICByZXR1cm4gZC50b0xvY2FsZURhdGVTdHJpbmcoKSArICc8YnI+JyArIHAyLmpvaW4oJzonKSArICcgJyArIHAxWzFdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIGNoYW5nZUZ1bmN0aW9ue1xyXG4gICAgKG5ld1ZhbD86IG51bWJlcik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgbWVkaWFSYW5nZUNvbmZpZ3tcclxuICAgIG1pbj86IG51bWJlcjtcclxuICAgIG1heD86IG51bWJlcjtcclxuICAgIHZhbD86IG51bWJlcjtcclxuICAgIHN0ZXA/OiBudW1iZXI7XHJcbiAgICBwbGF5SW50ZXJ2YWw/OiBudW1iZXI7XHJcbiAgICBzaG93QXNEYXRlPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgTWVkaWFDb250cm9sIHtcclxuICAgIF9jb250YWluZXI6IEpRdWVyeTtcclxuICAgIF9taW46IG51bWJlcjtcclxuICAgIF9tYXg6IG51bWJlcjtcclxuICAgIF9wbGF5SW50ZXJ2YWw6IG51bWJlcjtcclxuICAgIF9zdGVwOiBudW1iZXI7XHJcbiAgICBfY3VycmVudFZhbHVlOiBudW1iZXI7XHJcblxyXG4gICAgX3BsYXlpbmc6IGJvb2xlYW47XHJcblxyXG4gICAgXyRidG5TdG9wOiBKUXVlcnk7XHJcbiAgICBfJHNsaWRlcjogSlF1ZXJ5O1xyXG4gICAgXyR2YWxMYWJlbFZhbDogSlF1ZXJ5O1xyXG4gICAgXyR2YWxMYWJlbE1pbjogSlF1ZXJ5O1xyXG4gICAgXyR2YWxMYWJlbE1heDogSlF1ZXJ5O1xyXG4gICAgX2ludGVydmFsOiBudW1iZXI7XHJcbiAgICBfc2hvd0FzRGF0ZTogYm9vbGVhbjtcclxuXHJcbiAgICBfY2hhbmdlRnVuYzogY2hhbmdlRnVuY3Rpb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGVsZW1lbnRcclxuICAgICAqIEBwYXJhbSBjaGFuZ2VGdW5jXHJcbiAgICAgKiBAcGFyYW0gbWVkaWFDb25maWdcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgZWxlbWVudDogSlF1ZXJ5fEhUTUxFbGVtZW50fHN0cmluZyxcclxuICAgICAgICBjaGFuZ2VGdW5jOiBjaGFuZ2VGdW5jdGlvbiA9ICgpOiB2b2lkID0+IHtyZXR1cm47fSxcclxuICAgICAgICBtZWRpYUNvbmZpZzogbWVkaWFSYW5nZUNvbmZpZyA9IHt9KSB7XHJcblxyXG4gICAgICAgIG1lZGlhQ29uZmlnLm1pbiA9IHR5cGVvZiBtZWRpYUNvbmZpZy5taW4gPT0gJ251bWJlcicgPyBtZWRpYUNvbmZpZy5taW4gOiAwO1xyXG4gICAgICAgIG1lZGlhQ29uZmlnLm1heCA9IHR5cGVvZiBtZWRpYUNvbmZpZy5tYXggPT0gJ251bWJlcicgPyBtZWRpYUNvbmZpZy5tYXggOiAxMDA7XHJcbiAgICAgICAgbWVkaWFDb25maWcudmFsID0gdHlwZW9mIG1lZGlhQ29uZmlnLnZhbCA9PSAnbnVtYmVyJyA/IG1lZGlhQ29uZmlnLnZhbCA6IDA7XHJcbiAgICAgICAgbWVkaWFDb25maWcuc3RlcCA9IHR5cGVvZiBtZWRpYUNvbmZpZy5zdGVwID09ICdudW1iZXInID8gbWVkaWFDb25maWcuc3RlcCA6IDU7XHJcbiAgICAgICAgbWVkaWFDb25maWcucGxheUludGVydmFsID0gdHlwZW9mIG1lZGlhQ29uZmlnLnBsYXlJbnRlcnZhbCA9PSAnbnVtYmVyJyA/IG1lZGlhQ29uZmlnLnBsYXlJbnRlcnZhbCA6IDUwMDtcclxuICAgICAgICBtZWRpYUNvbmZpZy5zaG93QXNEYXRlID0gdHlwZW9mIG1lZGlhQ29uZmlnLnNob3dBc0RhdGUgPT0gJ2Jvb2xlYW4nID8gbWVkaWFDb25maWcuc2hvd0FzRGF0ZSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mICBlbGVtZW50ID09ICdzdHJpbmcnKXtcclxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyID0gJCgnIycgKyBlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGVsZW1lbnRbJ3N0eWxlJ10gIT09ICd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyID0gJChlbGVtZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSBlbGVtZW50IGFzIEpRdWVyeTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5hZGRDbGFzcygnbWVkaWEtY29udHJvbC1jb250YWluZXInKTtcclxuICAgICAgICB0aGlzLl9wbGF5SW50ZXJ2YWwgPSBtZWRpYUNvbmZpZy5wbGF5SW50ZXJ2YWw7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRnVuYyA9IGNoYW5nZUZ1bmM7XHJcblxyXG4gICAgICAgIHRoaXMuX3Nob3dBc0RhdGUgPSBtZWRpYUNvbmZpZy5zaG93QXNEYXRlO1xyXG5cclxuICAgICAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5fbWluID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX21heCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLl9zdGVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuX3BsYXlpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IGh0bWxTdHIgPVxyXG4gICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJtZWRpYS1wbGF5ZXItYnV0dG9uIG1lZGlhLWJhY2tcIj48L3NwYW4+JyArXHJcbiAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cIm1lZGlhLXBsYXllci1idXR0b24gbWVkaWEtcGxheVwiPjwvc3Bhbj4nICtcclxuICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwibWVkaWEtcGxheWVyLWJ1dHRvbiBtZWRpYS1wYXVzZSBtZWRpYS1kaXNhYmxlZFwiPjwvc3Bhbj4nICtcclxuICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwibWVkaWEtcGxheWVyLWJ1dHRvbiBtZWRpYS1zdG9wIG1lZGlhLWRpc2FibGVkXCIgPjwvc3Bhbj4nICtcclxuICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwibWVkaWEtcGxheWVyLWJ1dHRvbiBtZWRpYS1haGVhZFwiPjwvc3Bhbj4nICtcclxuICAgICAgICAgICAgYDxpbnB1dCB0eXBlPVwicmFuZ2VcIj5gICtcclxuICAgICAgICAgICAgYDxkaXYgY2xhc3M9XCJtZWRpYS1jb250cm9sLXZhbHVlLWxhYmVsLWNvbnRhaW5lclwiPmAgK1xyXG4gICAgICAgICAgICBgPHNwYW4gY2xhc3M9XCJtZWRpYS1jb250cm9sLXZhbHVlLWxhYmVsLW1pblwiPjwvc3Bhbj5gICtcclxuICAgICAgICAgICAgYDxzcGFuIGNsYXNzPVwibWVkaWEtY29udHJvbC12YWx1ZS1sYWJlbC12YWxcIj48L3NwYW4+YCArXHJcbiAgICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIm1lZGlhLWNvbnRyb2wtdmFsdWUtbGFiZWwtbWF4XCI+PC9zcGFuPmAgK1xyXG4gICAgICAgICAgICBgPC9kaXY+YDtcclxuXHJcbiAgICAgICAgdGhpcy5fY29udGFpbmVyLmFwcGVuZChodG1sU3RyKTtcclxuXHJcbiAgICAgICAgLy8gbGV0IGJ0blBhdXNlID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJy5tZWRpYS1wYXVzZScpO1xyXG4gICAgICAgIGxldCBidG5QbGF5ID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJy5tZWRpYS1wbGF5Jyk7XHJcbiAgICAgICAgdGhpcy5fJGJ0blN0b3AgPSB0aGlzLl9jb250YWluZXIuZmluZCgnLm1lZGlhLXN0b3AnKTtcclxuICAgICAgICBsZXQgYnRuQWhlYWQgPSB0aGlzLl9jb250YWluZXIuZmluZCgnLm1lZGlhLWFoZWFkJyk7XHJcbiAgICAgICAgbGV0IGJ0bkJhY2sgPSB0aGlzLl9jb250YWluZXIuZmluZCgnLm1lZGlhLWJhY2snKTtcclxuICAgICAgICB0aGlzLl8kc2xpZGVyID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJ2lucHV0W3R5cGU9cmFuZ2VdJyk7XHJcblxyXG4gICAgICAgIHRoaXMuXyR2YWxMYWJlbE1pbiA9IHRoaXMuX2NvbnRhaW5lci5maW5kKCcubWVkaWEtY29udHJvbC12YWx1ZS1sYWJlbC1taW4nKTtcclxuICAgICAgICB0aGlzLl8kdmFsTGFiZWxWYWwgPSB0aGlzLl9jb250YWluZXIuZmluZCgnLm1lZGlhLWNvbnRyb2wtdmFsdWUtbGFiZWwtdmFsJyk7XHJcbiAgICAgICAgdGhpcy5fJHZhbExhYmVsTWF4ID0gdGhpcy5fY29udGFpbmVyLmZpbmQoJy5tZWRpYS1jb250cm9sLXZhbHVlLWxhYmVsLW1heCcpO1xyXG5cclxuICAgICAgICB0aGlzLnNldE1pbk1heFZhbHVlU3RlcChtZWRpYUNvbmZpZy5taW4sIG1lZGlhQ29uZmlnLm1heCwgbWVkaWFDb25maWcudmFsLCBtZWRpYUNvbmZpZy5zdGVwKTtcclxuXHJcbiAgICAgICAgcmFuZ2VDaGFuZ2UodGhpcy5fJHNsaWRlciwobmV3VmFsKSA9PiB7IHRoaXMuY3VycmVudFZhbHVlID0gbmV3VmFsO30sIDEwMCk7XHJcblxyXG4gICAgICAgIGxldCBfX190aGlzID0gdGhpcztcclxuXHJcbiAgICAgICAgYnRuUGxheS5jbGljayhmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGxldCAkdGhpcyA9ICQodGhpcyk7XHJcbiAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKCdtZWRpYS1kaXNhYmxlZCcpO1xyXG4gICAgICAgICAgICBfX190aGlzLl8kYnRuU3RvcC5yZW1vdmVDbGFzcygnbWVkaWEtZGlzYWJsZWQnKTtcclxuICAgICAgICAgICAgYnRuQWhlYWQuYWRkQ2xhc3MoJ21lZGlhLWxvY2tlZCcpO1xyXG4gICAgICAgICAgICBidG5CYWNrLmFkZENsYXNzKCdtZWRpYS1sb2NrZWQnKTtcclxuICAgICAgICAgICAgX19fdGhpcy5fJHNsaWRlci5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xyXG4gICAgICAgICAgICBfX190aGlzLl9wbGF5aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIF9fX3RoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgX19fdGhpcy5jdXJyZW50VmFsdWUgKz0gX19fdGhpcy5fc3RlcDtcclxuICAgICAgICAgICAgfSwgX19fdGhpcy5fcGxheUludGVydmFsKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fJGJ0blN0b3AuY2xpY2soZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKF9fX3RoaXMuX2ludGVydmFsKTtcclxuICAgICAgICAgICAgbGV0ICR0aGlzID0gJCh0aGlzKTtcclxuICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ21lZGlhLWRpc2FibGVkJyk7XHJcbiAgICAgICAgICAgIGJ0blBsYXkucmVtb3ZlQ2xhc3MoJ21lZGlhLWRpc2FibGVkJyk7XHJcbiAgICAgICAgICAgIGJ0bkFoZWFkLnJlbW92ZUNsYXNzKCdtZWRpYS1sb2NrZWQnKTtcclxuICAgICAgICAgICAgYnRuQmFjay5yZW1vdmVDbGFzcygnbWVkaWEtbG9ja2VkJyk7XHJcbiAgICAgICAgICAgIF9fX3RoaXMuXyRzbGlkZXIucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIF9fX3RoaXMuX3BsYXlpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnRuQWhlYWQuY2xpY2soZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBfX190aGlzLmN1cnJlbnRWYWx1ZSA9IF9fX3RoaXMuY3VycmVudFZhbHVlICsgX19fdGhpcy5fc3RlcDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnRuQmFjay5jbGljayhmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIF9fX3RoaXMuY3VycmVudFZhbHVlID0gX19fdGhpcy5jdXJyZW50VmFsdWUgLSBfX190aGlzLl9zdGVwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0b3BQbGF5aW5nKCl7XHJcbiAgICAgICAgaWYgKHRoaXMuX3BsYXlpbmcpe1xyXG4gICAgICAgICAgICB0aGlzLl8kYnRuU3RvcC50cmlnZ2VyKCdjbGljaycpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGxheWluZygpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wbGF5aW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtaW4oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbWF4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9tYXg7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0ZXAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGN1cnJlbnRWYWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBjdXJyZW50VmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICBpZiAobmV3VmFsdWUgPiB0aGlzLl9tYXgpIHtcclxuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLl9taW47XHJcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWYWx1ZSA8IHRoaXMuX21pbikge1xyXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuX21heDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgdGhpcy5fJHNsaWRlci52YWwodGhpcy5fY3VycmVudFZhbHVlLnRvRml4ZWQoMikpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fc2hvd0FzRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl8kdmFsTGFiZWxWYWwuaHRtbCh0aW1lVG9Mb2NhbERhdGVTdHJpbmcodGhpcy5jdXJyZW50VmFsdWUpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl8kdmFsTGFiZWxWYWwuaHRtbCh0aGlzLmN1cnJlbnRWYWx1ZS50b1N0cmluZygpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2NoYW5nZUZ1bmMobmV3VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IG1pbiBhbmQgbWF4IHZhbHVlIHdpdGggc3RlcFxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG5ld01pbiB0aGUgbmV3IG1pblxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG5ld01heCB0aGUgbmV3IG1hc1xyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuZXdWYWx1ZT1uZXdNaW5dIHRoZSB2YWx1ZSB0byBzZXRcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbmV3U3RlcD0obmV3TWF4LW5ld01pbikvMjBdIHN0ZXAgdmFsdWVcclxuICAgICAqL1xyXG4gICAgc2V0TWluTWF4VmFsdWVTdGVwKG5ld01pbiwgbmV3TWF4LCBuZXdWYWx1ZSwgbmV3U3RlcCkge1xyXG4gICAgICAgIHRoaXMuX21pbiA9IG5ld01pbjtcclxuICAgICAgICB0aGlzLl9tYXggPSBuZXdNYXg7XHJcblxyXG4gICAgICAgIG5ld1ZhbHVlID0gdHlwZW9mIG5ld1ZhbHVlID09ICdudW1iZXInID8gbmV3VmFsdWUgOiBuZXdNaW47XHJcbiAgICAgICAgbmV3U3RlcCA9IHR5cGVvZiBuZXdTdGVwID09ICdudW1iZXInID8gbmV3U3RlcCA6IChuZXdNYXgtbmV3TWluKS8yMDtcclxuXHJcbiAgICAgICAgdGhpcy5fY3VycmVudFZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgdGhpcy5fc3RlcCA9IG5ld1N0ZXA7XHJcblxyXG4gICAgICAgIHRoaXMuXyRzbGlkZXIucHJvcCgnbWluJywgdGhpcy5taW4udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgdGhpcy5fJHNsaWRlci5wcm9wKCdtYXgnLCB0aGlzLm1heC50b1N0cmluZygpKTtcclxuICAgICAgICB0aGlzLl8kc2xpZGVyLnByb3AoJ3N0ZXAnLCB0aGlzLnN0ZXAudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgdGhpcy5fJHNsaWRlci52YWwodGhpcy5jdXJyZW50VmFsdWUudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zaG93QXNEYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyR2YWxMYWJlbE1pbi5odG1sKHRpbWVUb0xvY2FsRGF0ZVN0cmluZyh0aGlzLl9taW4pKTtcclxuICAgICAgICAgICAgdGhpcy5fJHZhbExhYmVsVmFsLmh0bWwodGltZVRvTG9jYWxEYXRlU3RyaW5nKHRoaXMuY3VycmVudFZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuXyR2YWxMYWJlbE1heC5odG1sKHRpbWVUb0xvY2FsRGF0ZVN0cmluZyh0aGlzLl9tYXgpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl8kdmFsTGFiZWxNaW4uaHRtbCh0aGlzLl9taW4udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIHRoaXMuXyR2YWxMYWJlbFZhbC5odG1sKHRoaXMuY3VycmVudFZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB0aGlzLl8kdmFsTGFiZWxNYXguaHRtbCh0aGlzLl9tYXgudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7bWVkaWFDYWxsYmFja30gbmV3RnVuYyB0aGUgY2FsbGJhY2sgb24gY2hhbmdlXHJcbiAgICAgKi9cclxuICAgIHNldCBjaGFuZ2VGdW5jdGlvbihuZXdGdW5jOiBjaGFuZ2VGdW5jdGlvbikge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZUZ1bmMgPSBuZXdGdW5jO1xyXG4gICAgfVxyXG59XHJcblxyXG5ubS5NZWRpYUNvbnRyb2wgPSBNZWRpYUNvbnRyb2w7XHJcblxyXG4iXX0=
\ No newline at end of file
diff --git a/dist/layers/LayerBaseVectorGeoJson.d.ts b/dist/layers/LayerBaseVectorGeoJson.d.ts
index b6268cf..4b37c5c 100644
--- a/dist/layers/LayerBaseVectorGeoJson.d.ts
+++ b/dist/layers/LayerBaseVectorGeoJson.d.ts
@@ -20,7 +20,7 @@ export declare class LayerBaseVectorGeoJson extends LayerBaseVector {
     _geoJsonFormat: ol.format.GeoJSON;
     _transform: crsTransform;
     /**
-     * @param {string|undefined|null} url - resource url, set to '' to make blank layer
+     * @param {string|null} url - resource url, set to '' to make blank layer
      * @param {object} options - config
      * @param {string} [options.id] - layer id
      * @param {string} [options.name=Unnamed Layer] - layer name
@@ -46,7 +46,7 @@ export declare class LayerBaseVectorGeoJson extends LayerBaseVector {
      * @param {mapMoveMakeGetParams} [options.mapMoveMakeGetParams=function(lyr, extent, zoomLevel){}] function to create additional map move params
      * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages
      */
-    constructor(url: any, options?: LayerBaseVectorGeoJsonOptions);
+    constructor(url?: string, options?: LayerBaseVectorGeoJsonOptions);
     /**
      * add feature collection
      * @param {object} featureCollection - as geojson object
diff --git a/dist/layers/LayerBaseVectorGeoJson.js b/dist/layers/LayerBaseVectorGeoJson.js
index 80de494..ece4cc0 100644
--- a/dist/layers/LayerBaseVectorGeoJson.js
+++ b/dist/layers/LayerBaseVectorGeoJson.js
@@ -27,7 +27,7 @@ var nm = provide_1.default('layers');
 var LayerBaseVectorGeoJson = (function (_super) {
     __extends(LayerBaseVectorGeoJson, _super);
     /**
-     * @param {string|undefined|null} url - resource url, set to '' to make blank layer
+     * @param {string|null} url - resource url, set to '' to make blank layer
      * @param {object} options - config
      * @param {string} [options.id] - layer id
      * @param {string} [options.name=Unnamed Layer] - layer name
@@ -106,4 +106,4 @@ var LayerBaseVectorGeoJson = (function (_super) {
 exports.LayerBaseVectorGeoJson = LayerBaseVectorGeoJson;
 nm.LayerBaseVectorGeoJson = LayerBaseVectorGeoJson;
 exports.default = LayerBaseVectorGeoJson;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7OztBQUVILHFEQUEwRTtBQUMxRSwyQ0FBc0M7QUFDdEMsOEJBQWlDO0FBQ2pDLDBCQUE2QjtBQUU3QiwrQ0FBaUQ7QUFDakQsd0RBQWtEO0FBRWxELElBQUksRUFBRSxHQUFHLGlCQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFjM0I7OztHQUdHO0FBQ0g7SUFBNEMsMENBQWU7SUFJdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMEJHO0lBQ0gsZ0NBQVksR0FBRyxFQUFFLE9BQTJDO1FBQTNDLHdCQUFBLEVBQUEsWUFBMkM7UUFBNUQsaUJBYUM7UUFaRyxHQUFHLEdBQUcsT0FBTyxHQUFHLElBQUksUUFBUSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDeEMsUUFBQSxrQkFBTSxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQUM7UUFFcEIsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFOUMsS0FBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxLQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2pGLEtBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxzQkFBUSxDQUFDO1FBRWxGLEVBQUUsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLElBQUksS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEMsS0FBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLENBQUM7O0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILDRDQUFXLEdBQVgsVUFBWSxpQkFBc0I7UUFFOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsc0NBQUssR0FBTDtRQUFBLGlCQWtCQztRQWhCRyxFQUFFLENBQUMsQ0FBQyxpQkFBTSxLQUFLLFdBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUNYLElBQUksQ0FBQyxPQUFPLEVBQ1osVUFBQyxDQUFDO1lBQ0UsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ2Y7WUFDSSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQ0osQ0FBQztRQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnREFBZSxHQUFmLFVBQWdCLENBQUM7UUFDYixpQkFBTSxlQUFlLFlBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUN2RCxFQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFDTCw2QkFBQztBQUFELENBQUMsQUEzRkQsQ0FBNEMsaUNBQWUsR0EyRjFEO0FBM0ZZLHdEQUFzQjtBQTZGbkMsRUFBRSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO0FBQ25ELGtCQUFlLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENyZWF0ZWQgYnkgZ2F2b3JoZXMgb24gMTEvMi8yMDE1LlxyXG4gKi9cclxuXHJcbmltcG9ydCB7TGF5ZXJCYXNlVmVjdG9yLCBMYXllckJhc2VWZWN0b3JPcHRpb25zfSBmcm9tICcuL0xheWVyQmFzZVZlY3Rvcic7XHJcbmltcG9ydCBwcm92aWRlIGZyb20gJy4uL3V0aWwvcHJvdmlkZSc7XHJcbmltcG9ydCBvbCA9IHJlcXVpcmUoJ2N1c3RvbS1vbCcpO1xyXG5pbXBvcnQgJCA9IHJlcXVpcmUoJ2pxdWVyeScpO1xyXG5pbXBvcnQge01hcE1vdmVDbHN9IGZyb20gXCIuLi9vbEhlbHBlcnMvbWFwTW92ZUNsc1wiO1xyXG5pbXBvcnQgKiBhcyBwcm9qIGZyb20gJy4uL29sSGVscGVycy9wcm9qZWN0aW9ucyc7XHJcbmltcG9ydCB7cHJvajM4NTd9IGZyb20gXCIuLi9vbEhlbHBlcnMvcHJvamVjdGlvbnNcIjtcclxuXHJcbmxldCBubSA9IHByb3ZpZGUoJ2xheWVycycpO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgY3JzVHJhbnNmb3JtIHtcclxuICAgIGRhdGFQcm9qZWN0aW9uPzogb2wucHJvai5Qcm9qZWN0aW9uO1xyXG4gICAgZmVhdHVyZVByb2plY3Rpb24/OiBvbC5wcm9qLlByb2plY3Rpb247XHJcbn1cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExheWVyQmFzZVZlY3Rvckdlb0pzb25PcHRpb25zIGV4dGVuZHMgTGF5ZXJCYXNlVmVjdG9yT3B0aW9ucyB7XHJcbiAgICB0cmFuc2Zvcm0/OiBjcnNUcmFuc2Zvcm07XHJcbiAgICBtYXBNb3ZlT2JqPzogTWFwTW92ZUNscztcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBWZWN0b3IgR2VvSnNvbiBMYXllclxyXG4gKiBAYXVnbWVudHMgTGF5ZXJCYXNlVmVjdG9yXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbiBleHRlbmRzIExheWVyQmFzZVZlY3RvciB7XHJcbiAgICBfZ2VvSnNvbkZvcm1hdDogb2wuZm9ybWF0Lkdlb0pTT047XHJcbiAgICBfdHJhbnNmb3JtOiBjcnNUcmFuc2Zvcm07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR8bnVsbH0gdXJsIC0gcmVzb3VyY2UgdXJsLCBzZXQgdG8gJycgdG8gbWFrZSBibGFuayBsYXllclxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBjb25maWdcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5pZF0gLSBsYXllciBpZFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm5hbWU9VW5uYW1lZCBMYXllcl0gLSBsYXllciBuYW1lXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMub3BhY2l0eT0xXSAtIG9wYWNpdHlcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudmlzaWJsZT10cnVlXSAtIGRlZmF1bHQgdmlzaWJsZVxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1pblpvb209dW5kZWZpbmVkXSAtIG1pbiB6b29tIGxldmVsLCAwIC0gMjhcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhab29tPXVuZGVmaW5lZF0gLSBtYXggem9vbSBsZXZlbCwgMCAtIDI4XHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnMucGFyYW1zPXt9XSB0aGUgZ2V0IHBhcmFtZXRlcnMgdG8gaW5jbHVkZSB0byByZXRyaWV2ZSB0aGUgbGF5ZXJcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy56SW5kZXg9MF0gdGhlIHogaW5kZXggZm9yIHRoZSBsYXllclxyXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gW29wdGlvbnMubG9hZENhbGxiYWNrXSBmdW5jdGlvbiB0byBjYWxsIG9uIGxvYWQsIGNvbnRleHQgdGhpcyBpcyB0aGUgbGF5ZXIgb2JqZWN0XHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlZ2VuZENvbGxhcHNlPWZhbHNlXSBpZiB0aGUgbGVnZW5kIGl0ZW0gc2hvdWxkIGJlIGluaXRpYWxseSBjb2xsYXBzZWRcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVnZW5kQ2hlY2tib3g9dHJ1ZV0gaWYgdGhlIGxlZ2VuZCBpdGVtIHNob3VsZCBoYXZlIGEgY2hlY2tib3ggZm9yIHZpc2liaWxpdHlcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVnZW5kQ29udGVudF0gYWRkaXRpb25hbCBjb250ZW50IHRvIGFkZCB0byB0aGUgbGVnZW5kXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hdXRvTG9hZD1mYWxzZV0gaWYgdGhlIGxheWVyIHNob3VsZCBhdXRvIGxvYWQgaWYgbm90IHZpc2libGVcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9ucy5zdHlsZT11bmRlZmluZWRdIHRoZSBsYXllciBzdHlsZSwgdXNlIG9wZW5sYXllcnMgZGVmYXVsdCBzdHlsZSBpZiBub3QgZGVmaW5lZFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5vbkRlbWFuZD1mYWxzZV0gaWYgdGhlIGxheWVyIHNob3VsZCBiZSBsb2FkZWQgYnkgZXh0ZW50IG9uIG1hcCBtb3ZlXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMub25EZW1hbmREZWxheT0zMDBdIGRlbGF5IGJlZm9yZSB0aGUgbWFwIG1vdmUgY2FsbGJhY2sgc2hvdWxkIGJlIGNhbGxlZFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9ucy50cmFuc2Zvcm09e31dIFNSIHRyYW5zZm9ybSwgc2V0IGFzIGZhbHNlIGZvciBubyB0cmFuc2Zvcm1cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnRyYW5zZm9ybS5kYXRhUHJvamVjdGlvbj1FUFNHOjQzMjYgdGhlIGRhdGEgQ1JTXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy50cmFuc2Zvcm0uZmVhdHVyZVByb2plY3Rpb249RVBTRzozODU3IHRoZSBmZWF0dXJlL21hcCBDUlNcclxuICAgICAqIEBwYXJhbSB7bWFwTW92ZU1ha2VHZXRQYXJhbXN9IFtvcHRpb25zLm1hcE1vdmVNYWtlR2V0UGFyYW1zPWZ1bmN0aW9uKGx5ciwgZXh0ZW50LCB6b29tTGV2ZWwpe31dIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIG1hcCBtb3ZlIHBhcmFtc1xyXG4gICAgICogQHBhcmFtIHtNYXBNb3ZlQ2xzfSBbb3B0aW9ucy5tYXBNb3ZlT2JqPW1hcE1vdmVdIGFsdGVybmF0ZSBtYXAgbW92ZSBvYmplY3QgZm9yIHVzZSB3aXRoIG11bHRpIG1hcCBwYWdlc1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcih1cmwsIG9wdGlvbnM6IExheWVyQmFzZVZlY3Rvckdlb0pzb25PcHRpb25zID0ge30pIHtcclxuICAgICAgICB1cmwgPSB0eXBlb2YgdXJsID09ICdzdHJpbmcnID8gdXJsIDogJyc7XHJcbiAgICAgICAgc3VwZXIodXJsLCBvcHRpb25zKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZ2VvSnNvbkZvcm1hdCA9IG5ldyBvbC5mb3JtYXQuR2VvSlNPTigpO1xyXG5cclxuICAgICAgICB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybSB8fCB7fTtcclxuICAgICAgICB0aGlzLl90cmFuc2Zvcm0uZGF0YVByb2plY3Rpb24gPSB0aGlzLl90cmFuc2Zvcm0uZGF0YVByb2plY3Rpb24gfHwgcHJvai5wcm9qNDMyNjtcclxuICAgICAgICB0aGlzLl90cmFuc2Zvcm0uZmVhdHVyZVByb2plY3Rpb24gPSB0aGlzLl90cmFuc2Zvcm0uZmVhdHVyZVByb2plY3Rpb24gfHwgcHJvajM4NTc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmF1dG9Mb2FkIHx8IHRoaXMudmlzaWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9sb2FkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWRkIGZlYXR1cmUgY29sbGVjdGlvblxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGZlYXR1cmVDb2xsZWN0aW9uIC0gYXMgZ2VvanNvbiBvYmplY3RcclxuICAgICAqL1xyXG4gICAgYWRkRmVhdHVyZXMoZmVhdHVyZUNvbGxlY3Rpb246IGFueSkge1xyXG5cclxuICAgICAgICB0aGlzLnNvdXJjZS5hZGRGZWF0dXJlcyh0aGlzLl9nZW9Kc29uRm9ybWF0LnJlYWRGZWF0dXJlcyhmZWF0dXJlQ29sbGVjdGlvbikpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIHRyaWdnZXIgbG9hZCBmZWF0dXJlc1xyXG4gICAgICogQHByb3RlY3RlZFxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IGlmIGFscmVhZHkgbG9hZGVkXHJcbiAgICAgKi9cclxuICAgIF9sb2FkKCkge1xyXG5cclxuICAgICAgICBpZiAoc3VwZXIuX2xvYWQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICQuZ2V0KHRoaXMuX3VybCxcclxuICAgICAgICAgICAgdGhpcy5fcGFyYW1zLFxyXG4gICAgICAgICAgICAoZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlcyhkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZENhbGxiYWNrKHRoaXMpO1xyXG4gICAgICAgICAgICB9LCAnanNvbicpLmZhaWwoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY2FsbGJhY2sgZnVuY3Rpb24gb24gbWFwIG1vdmVcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkIHRoZSBqc29uIHJlc3BvbnNlXHJcbiAgICAgKiBAb3ZlcnJpZGVcclxuICAgICAqL1xyXG4gICAgbWFwTW92ZUNhbGxiYWNrKGQpIHtcclxuICAgICAgICBzdXBlci5tYXBNb3ZlQ2FsbGJhY2soZCk7XHJcbiAgICAgICAgdGhpcy5fc291cmNlLmFkZEZlYXR1cmVzKHRoaXMuX2dlb0pzb25Gb3JtYXQucmVhZEZlYXR1cmVzKGQsXHJcbiAgICAgICAgICAgIHtmZWF0dXJlUHJvamVjdGlvbjogdGhpcy5fdHJhbnNmb3JtLmZlYXR1cmVQcm9qZWN0aW9uLCBkYXRhUHJvamVjdGlvbjogdGhpcy5fdHJhbnNmb3JtLmRhdGFQcm9qZWN0aW9ufSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5ubS5MYXllckJhc2VWZWN0b3JHZW9Kc29uID0gTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbjtcclxuZXhwb3J0IGRlZmF1bHQgTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbjtcclxuIl19
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7OztBQUVILHFEQUEwRTtBQUMxRSwyQ0FBc0M7QUFDdEMsOEJBQWlDO0FBQ2pDLDBCQUE2QjtBQUU3QiwrQ0FBaUQ7QUFDakQsd0RBQWtEO0FBRWxELElBQUksRUFBRSxHQUFHLGlCQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFhM0I7OztHQUdHO0FBQ0g7SUFBNEMsMENBQWU7SUFJdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMEJHO0lBQ0gsZ0NBQVksR0FBWSxFQUFFLE9BQTJDO1FBQTNDLHdCQUFBLEVBQUEsWUFBMkM7UUFBckUsaUJBYUM7UUFaRyxHQUFHLEdBQUcsT0FBTyxHQUFHLElBQUksUUFBUSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDeEMsUUFBQSxrQkFBTSxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQUM7UUFFcEIsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFOUMsS0FBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxLQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2pGLEtBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxzQkFBUSxDQUFDO1FBRWxGLEVBQUUsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLElBQUksS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEMsS0FBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLENBQUM7O0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILDRDQUFXLEdBQVgsVUFBWSxpQkFBc0I7UUFFOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsc0NBQUssR0FBTDtRQUFBLGlCQWtCQztRQWhCRyxFQUFFLENBQUMsQ0FBQyxpQkFBTSxLQUFLLFdBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUNYLElBQUksQ0FBQyxPQUFPLEVBQ1osVUFBQyxDQUFDO1lBQ0UsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ2Y7WUFDSSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLENBQ0osQ0FBQztRQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnREFBZSxHQUFmLFVBQWdCLENBQUM7UUFDYixpQkFBTSxlQUFlLFlBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUN2RCxFQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFDTCw2QkFBQztBQUFELENBQUMsQUEzRkQsQ0FBNEMsaUNBQWUsR0EyRjFEO0FBM0ZZLHdEQUFzQjtBQTZGbkMsRUFBRSxDQUFDLHNCQUFzQixHQUFHLHNCQUFzQixDQUFDO0FBQ25ELGtCQUFlLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENyZWF0ZWQgYnkgZ2F2b3JoZXMgb24gMTEvMi8yMDE1LlxyXG4gKi9cclxuXHJcbmltcG9ydCB7TGF5ZXJCYXNlVmVjdG9yLCBMYXllckJhc2VWZWN0b3JPcHRpb25zfSBmcm9tICcuL0xheWVyQmFzZVZlY3Rvcic7XHJcbmltcG9ydCBwcm92aWRlIGZyb20gJy4uL3V0aWwvcHJvdmlkZSc7XHJcbmltcG9ydCBvbCA9IHJlcXVpcmUoJ2N1c3RvbS1vbCcpO1xyXG5pbXBvcnQgJCA9IHJlcXVpcmUoJ2pxdWVyeScpO1xyXG5pbXBvcnQge01hcE1vdmVDbHN9IGZyb20gXCIuLi9vbEhlbHBlcnMvbWFwTW92ZUNsc1wiO1xyXG5pbXBvcnQgKiBhcyBwcm9qIGZyb20gJy4uL29sSGVscGVycy9wcm9qZWN0aW9ucyc7XHJcbmltcG9ydCB7cHJvajM4NTd9IGZyb20gXCIuLi9vbEhlbHBlcnMvcHJvamVjdGlvbnNcIjtcclxuXHJcbmxldCBubSA9IHByb3ZpZGUoJ2xheWVycycpO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBjcnNUcmFuc2Zvcm0ge1xyXG4gICAgZGF0YVByb2plY3Rpb24/OiBvbC5wcm9qLlByb2plY3Rpb247XHJcbiAgICBmZWF0dXJlUHJvamVjdGlvbj86IG9sLnByb2ouUHJvamVjdGlvbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbk9wdGlvbnMgZXh0ZW5kcyBMYXllckJhc2VWZWN0b3JPcHRpb25zIHtcclxuICAgIHRyYW5zZm9ybT86IGNyc1RyYW5zZm9ybTtcclxuICAgIG1hcE1vdmVPYmo/OiBNYXBNb3ZlQ2xzO1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIFZlY3RvciBHZW9Kc29uIExheWVyXHJcbiAqIEBhdWdtZW50cyBMYXllckJhc2VWZWN0b3JcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMYXllckJhc2VWZWN0b3JHZW9Kc29uIGV4dGVuZHMgTGF5ZXJCYXNlVmVjdG9yIHtcclxuICAgIF9nZW9Kc29uRm9ybWF0OiBvbC5mb3JtYXQuR2VvSlNPTjtcclxuICAgIF90cmFuc2Zvcm06IGNyc1RyYW5zZm9ybTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfG51bGx9IHVybCAtIHJlc291cmNlIHVybCwgc2V0IHRvICcnIHRvIG1ha2UgYmxhbmsgbGF5ZXJcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gY29uZmlnXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuaWRdIC0gbGF5ZXIgaWRcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5uYW1lPVVubmFtZWQgTGF5ZXJdIC0gbGF5ZXIgbmFtZVxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm9wYWNpdHk9MV0gLSBvcGFjaXR5XHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnZpc2libGU9dHJ1ZV0gLSBkZWZhdWx0IHZpc2libGVcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5taW5ab29tPXVuZGVmaW5lZF0gLSBtaW4gem9vbSBsZXZlbCwgMCAtIDI4XHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4Wm9vbT11bmRlZmluZWRdIC0gbWF4IHpvb20gbGV2ZWwsIDAgLSAyOFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zLnBhcmFtcz17fV0gdGhlIGdldCBwYXJhbWV0ZXJzIHRvIGluY2x1ZGUgdG8gcmV0cmlldmUgdGhlIGxheWVyXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuekluZGV4PTBdIHRoZSB6IGluZGV4IGZvciB0aGUgbGF5ZXJcclxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtvcHRpb25zLmxvYWRDYWxsYmFja10gZnVuY3Rpb24gdG8gY2FsbCBvbiBsb2FkLCBjb250ZXh0IHRoaXMgaXMgdGhlIGxheWVyIG9iamVjdFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWdlbmRDb2xsYXBzZT1mYWxzZV0gaWYgdGhlIGxlZ2VuZCBpdGVtIHNob3VsZCBiZSBpbml0aWFsbHkgY29sbGFwc2VkXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlZ2VuZENoZWNrYm94PXRydWVdIGlmIHRoZSBsZWdlbmQgaXRlbSBzaG91bGQgaGF2ZSBhIGNoZWNrYm94IGZvciB2aXNpYmlsaXR5XHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlZ2VuZENvbnRlbnRdIGFkZGl0aW9uYWwgY29udGVudCB0byBhZGQgdG8gdGhlIGxlZ2VuZFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuYXV0b0xvYWQ9ZmFsc2VdIGlmIHRoZSBsYXllciBzaG91bGQgYXV0byBsb2FkIGlmIG5vdCB2aXNpYmxlXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnMuc3R5bGU9dW5kZWZpbmVkXSB0aGUgbGF5ZXIgc3R5bGUsIHVzZSBvcGVubGF5ZXJzIGRlZmF1bHQgc3R5bGUgaWYgbm90IGRlZmluZWRcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMub25EZW1hbmQ9ZmFsc2VdIGlmIHRoZSBsYXllciBzaG91bGQgYmUgbG9hZGVkIGJ5IGV4dGVudCBvbiBtYXAgbW92ZVxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm9uRGVtYW5kRGVsYXk9MzAwXSBkZWxheSBiZWZvcmUgdGhlIG1hcCBtb3ZlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnMudHJhbnNmb3JtPXt9XSBTUiB0cmFuc2Zvcm0sIHNldCBhcyBmYWxzZSBmb3Igbm8gdHJhbnNmb3JtXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy50cmFuc2Zvcm0uZGF0YVByb2plY3Rpb249RVBTRzo0MzI2IHRoZSBkYXRhIENSU1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudHJhbnNmb3JtLmZlYXR1cmVQcm9qZWN0aW9uPUVQU0c6Mzg1NyB0aGUgZmVhdHVyZS9tYXAgQ1JTXHJcbiAgICAgKiBAcGFyYW0ge21hcE1vdmVNYWtlR2V0UGFyYW1zfSBbb3B0aW9ucy5tYXBNb3ZlTWFrZUdldFBhcmFtcz1mdW5jdGlvbihseXIsIGV4dGVudCwgem9vbUxldmVsKXt9XSBmdW5jdGlvbiB0byBjcmVhdGUgYWRkaXRpb25hbCBtYXAgbW92ZSBwYXJhbXNcclxuICAgICAqIEBwYXJhbSB7TWFwTW92ZUNsc30gW29wdGlvbnMubWFwTW92ZU9iaj1tYXBNb3ZlXSBhbHRlcm5hdGUgbWFwIG1vdmUgb2JqZWN0IGZvciB1c2Ugd2l0aCBtdWx0aSBtYXAgcGFnZXNcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IodXJsPzogc3RyaW5nLCBvcHRpb25zOiBMYXllckJhc2VWZWN0b3JHZW9Kc29uT3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgdXJsID0gdHlwZW9mIHVybCA9PSAnc3RyaW5nJyA/IHVybCA6ICcnO1xyXG4gICAgICAgIHN1cGVyKHVybCwgb3B0aW9ucyk7XHJcblxyXG4gICAgICAgIHRoaXMuX2dlb0pzb25Gb3JtYXQgPSBuZXcgb2wuZm9ybWF0Lkdlb0pTT04oKTtcclxuXHJcbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm0gfHwge307XHJcbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtLmRhdGFQcm9qZWN0aW9uID0gdGhpcy5fdHJhbnNmb3JtLmRhdGFQcm9qZWN0aW9uIHx8IHByb2oucHJvajQzMjY7XHJcbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtLmZlYXR1cmVQcm9qZWN0aW9uID0gdGhpcy5fdHJhbnNmb3JtLmZlYXR1cmVQcm9qZWN0aW9uIHx8IHByb2ozODU3O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hdXRvTG9hZCB8fCB0aGlzLnZpc2libGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZCBmZWF0dXJlIGNvbGxlY3Rpb25cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBmZWF0dXJlQ29sbGVjdGlvbiAtIGFzIGdlb2pzb24gb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIGFkZEZlYXR1cmVzKGZlYXR1cmVDb2xsZWN0aW9uOiBhbnkpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zb3VyY2UuYWRkRmVhdHVyZXModGhpcy5fZ2VvSnNvbkZvcm1hdC5yZWFkRmVhdHVyZXMoZmVhdHVyZUNvbGxlY3Rpb24pKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0cmlnZ2VyIGxvYWQgZmVhdHVyZXNcclxuICAgICAqIEBwcm90ZWN0ZWRcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBpZiBhbHJlYWR5IGxvYWRlZFxyXG4gICAgICovXHJcbiAgICBfbG9hZCgpIHtcclxuXHJcbiAgICAgICAgaWYgKHN1cGVyLl9sb2FkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkLmdldCh0aGlzLl91cmwsXHJcbiAgICAgICAgICAgIHRoaXMuX3BhcmFtcyxcclxuICAgICAgICAgICAgKGQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZXMoZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRDYWxsYmFjayh0aGlzKTtcclxuICAgICAgICAgICAgfSwgJ2pzb24nKS5mYWlsKFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNhbGxiYWNrIGZ1bmN0aW9uIG9uIG1hcCBtb3ZlXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gZCB0aGUganNvbiByZXNwb25zZVxyXG4gICAgICogQG92ZXJyaWRlXHJcbiAgICAgKi9cclxuICAgIG1hcE1vdmVDYWxsYmFjayhkKSB7XHJcbiAgICAgICAgc3VwZXIubWFwTW92ZUNhbGxiYWNrKGQpO1xyXG4gICAgICAgIHRoaXMuX3NvdXJjZS5hZGRGZWF0dXJlcyh0aGlzLl9nZW9Kc29uRm9ybWF0LnJlYWRGZWF0dXJlcyhkLFxyXG4gICAgICAgICAgICB7ZmVhdHVyZVByb2plY3Rpb246IHRoaXMuX3RyYW5zZm9ybS5mZWF0dXJlUHJvamVjdGlvbiwgZGF0YVByb2plY3Rpb246IHRoaXMuX3RyYW5zZm9ybS5kYXRhUHJvamVjdGlvbn0pKTtcclxuICAgIH1cclxufVxyXG5cclxubm0uTGF5ZXJCYXNlVmVjdG9yR2VvSnNvbiA9IExheWVyQmFzZVZlY3Rvckdlb0pzb247XHJcbmV4cG9ydCBkZWZhdWx0IExheWVyQmFzZVZlY3Rvckdlb0pzb247XHJcbiJdfQ==
\ No newline at end of file
diff --git a/src/layers/LayerBaseVectorGeoJson.ts b/src/layers/LayerBaseVectorGeoJson.ts
index 3ac4c63..c7b6e40 100644
--- a/src/layers/LayerBaseVectorGeoJson.ts
+++ b/src/layers/LayerBaseVectorGeoJson.ts
@@ -12,7 +12,6 @@ import {proj3857} from "../olHelpers/projections";
 
 let nm = provide('layers');
 
-
 export interface crsTransform {
     dataProjection?: ol.proj.Projection;
     featureProjection?: ol.proj.Projection;
@@ -33,7 +32,7 @@ export class LayerBaseVectorGeoJson extends LayerBaseVector {
     _transform: crsTransform;
 
     /**
-     * @param {string|undefined|null} url - resource url, set to '' to make blank layer
+     * @param {string|null} url - resource url, set to '' to make blank layer
      * @param {object} options - config
      * @param {string} [options.id] - layer id
      * @param {string} [options.name=Unnamed Layer] - layer name
@@ -59,7 +58,7 @@ export class LayerBaseVectorGeoJson extends LayerBaseVector {
      * @param {mapMoveMakeGetParams} [options.mapMoveMakeGetParams=function(lyr, extent, zoomLevel){}] function to create additional map move params
      * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages
      */
-    constructor(url, options: LayerBaseVectorGeoJsonOptions = {}) {
+    constructor(url?: string, options: LayerBaseVectorGeoJsonOptions = {}) {
         url = typeof url == 'string' ? url : '';
         super(url, options);
 
diff --git a/test/data/geoJsonFeatures.ts b/test/data/geoJsonFeatures.ts
new file mode 100644
index 0000000..09c15a6
--- /dev/null
+++ b/test/data/geoJsonFeatures.ts
@@ -0,0 +1,968 @@
+/**
+ * Created by glenn on 3/10/2017.
+ */
+/**
+ * Created by glenn on 3/8/2017.
+ */
+
+
+export const sample_segs = {
+    "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::3857" } },
+    // "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}},
+
+    "type": "FeatureCollection",
+    "features": [{
+        "type": "Feature",
+        "properties": {
+            "startRp": "013N005M011",
+            "rdwyRteId": 11,
+            "rateFlag": 0.0,
+            "endMile": 4.53,
+            "mmStnVersion": 2014,
+            "stdName": "WIS 13 NB",
+            "mmVersion": "2016-09",
+            "kabCrshFlag": 0.0,
+            "divUnd": "U",
+            "startMile": 3.71,
+            "endRp": "013N005M093",
+            "pdpId": 2074,
+            "rpDesc": null,
+            "pdpLength": 0.82
+        },
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-9992497.81540399, 5410145.34171217], [-9992856.20056598, 5411588.19634882], [-9992959.88010738, 5411905.88929907], [-9992961.24970403, 5411910.09341592]]
+        }
+    }, {
+        "type": "Feature",
+        "properties": {
+            "startRp": "013N005M093",
+            "rdwyRteId": 11,
+            "rateFlag": 0.0,
+            "endMile": 5.18,
+            "mmStnVersion": 2014,
+            "stdName": "WIS 13 NB",
+            "mmVersion": "2016-09",
+            "kabCrshFlag": 0.0,
+            "divUnd": "D",
+            "startMile": 4.53,
+            "endRp": "013N006M000",
+            "pdpId": 2075,
+            "rpDesc": null,
+            "pdpLength": 0.65
+        },
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-9992961.24970403, 5411910.09341592], [-9992966.9804255, 5411927.68442817], [-9993101.26835489, 5412255.64652059], [-9993210.0086723, 5412480.3353547], [-9993328.78576386, 5412696.78672328], [-9993438.48035086, 5412876.11253749], [-9993642.09731562, 5413184.80642233]]
+        }
+    }, {
+        "type": "Feature",
+        "properties": {
+            "startRp": "013N006M000",
+            "rdwyRteId": 11,
+            "rateFlag": 0.0,
+            "endMile": 5.87,
+            "mmStnVersion": 2014,
+            "stdName": "WIS 13 NB",
+            "mmVersion": "2016-09",
+            "kabCrshFlag": 0.0,
+            "divUnd": "D",
+            "startMile": 5.18,
+            "endRp": "013N008M000",
+            "pdpId": 2076,
+            "rpDesc": "9TH LANE",
+            "pdpLength": 0.69
+        },
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-9993642.09731562, 5413184.80642233], [-9993773.58263128, 5413383.59418723], [-9994492.85540891, 5414470.91785164]]
+        }
+    }
+    ]
+};
+
+export const trench = {
+    "type": "FeatureCollection",
+    "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}},
+    "features": [{
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.353898883995, 43.044169874006], [-89.353895676627, 43.044158106199]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:32:20",
+            "dateModified": "2015-07-17 18:32:20",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "daafb1c8-10c4-4d69-935d-6266268ea9f5",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "UTC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "WisDOT",
+            "region": "Southwest",
+            "segLength": 16.456,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2015
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.391309602361, 43.036389485491], [-89.391129453816, 43.036496761869], [-89.390910083702, 43.036613655479], [-89.390729167637, 43.03668719712]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:22:55",
+            "dateModified": "2015-07-17 18:22:55",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "7bcbe96a-f685-45dd-a7b0-bef747b7741a",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "UTC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "WisDOT",
+            "region": "Southwest",
+            "segLength": 198.985,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2013
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.361873526012, 43.046938009447], [-89.36233732512, 43.046828870794]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:05:05",
+            "dateModified": "2015-07-17 18:05:05",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "cb434d1f-dffb-4c70-a323-c92474ee70d7",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "ASC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "USXchange",
+            "region": "Southwest",
+            "segLength": 138,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.345891118977, 43.047127162062], [-89.345891154801, 43.047127141555], [-89.345891147205, 43.047127163123], [-89.345891165372, 43.04712718664]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 13:07:59",
+            "dateModified": "2016-01-19 13:07:59",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "d0a9e0b2-46c0-4f1e-8650-90c35a8150e9",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "City of Madison",
+            "region": "Southwest",
+            "segLength": null,
+            "srvcStatus": "",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": null
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.345890404258, 43.047127175086], [-89.345890449894, 43.047127155536], [-89.345890466776, 43.047127184448]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 13:08:07",
+            "dateModified": "2016-01-19 13:08:07",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "065f7b5d-ec71-47fd-938f-ae85e8032cef",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "City of Madison",
+            "region": "Southwest",
+            "segLength": null,
+            "srvcStatus": "",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": null
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.39227499277, 43.03841579452], [-89.39265838884, 43.038421358853]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:02:28",
+            "dateModified": "2015-07-17 18:02:28",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "54b1f691-b946-41c3-924d-2481f63a5c8d",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "ASC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "USXchange",
+            "region": "Southwest",
+            "segLength": 115,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.35475623516, 43.044670295696], [-89.354731594679, 43.044664272913], [-89.353582742753, 43.044628712402], [-89.353293285746, 43.04436700513], [-89.351319799114, 43.044236240006], [-89.348727261631, 43.044235605738], [-89.348461002083, 43.044072608381], [-89.346571403115, 43.044078588738], [-89.343905538954, 43.044082849338], [-89.341759383041, 43.044078403803]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:13:26",
+            "dateModified": "2015-07-17 18:13:26",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "fc659bfe-fed4-4db1-8c21-e0e151cb5fd8",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "UTC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "WisDOT",
+            "region": "Southwest",
+            "segLength": 3559.732,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.395177806047, 43.036410455632], [-89.395149966798, 43.036409330561]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:24:54",
+            "dateModified": "2015-07-17 18:24:54",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "e2e5fbd4-7dfd-4897-9df0-a01eba747d65",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "UTC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "WisDOT",
+            "region": "Southwest",
+            "segLength": 22.738,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2013
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.35459157357, 43.033109401576], [-89.354455841387, 43.033383229942]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:08:37",
+            "dateModified": "2015-07-17 18:08:37",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "9be131ab-9e4e-43a5-93e7-6d98b16dcfa0",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "ASC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "USXchange",
+            "region": "Southwest",
+            "segLength": 134,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.356909321568, 43.043583769371], [-89.356911453361, 43.043576438688]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:02:09",
+            "dateModified": "2015-07-17 18:02:09",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "b231ee40-5773-4f5c-822b-0355cc2059a4",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "UTC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "WisDOT",
+            "region": "Southwest",
+            "segLength": 9.285,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.392996975679, 43.03842539113], [-89.393594623357, 43.038425886759]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:13:44",
+            "dateModified": "2015-07-17 18:13:44",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "50c57080-3e49-4a27-8040-c79c174952d8",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "ASC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "USXchange",
+            "region": "Southwest",
+            "segLength": 128,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.391868870338, 43.036014954752], [-89.391856041302, 43.036025977136]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:25:55",
+            "dateModified": "2015-07-17 18:25:55",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "9ed7c662-9944-49ab-8bf5-94704cd6d110",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "UTC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "WisDOT",
+            "region": "Southwest",
+            "segLength": 14.564,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2013
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.345889904516, 43.047127177633], [-89.345889935209, 43.047127177808]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 13:08:07",
+            "dateModified": "2016-01-19 13:08:07",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "4a0ba496-2d2f-4876-b8bb-24fed9aa58a0",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "City of Madison",
+            "region": "Southwest",
+            "segLength": null,
+            "srvcStatus": "",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": null
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.379075782908, 43.038111547553], [-89.379349799008, 43.0372501871]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 13:07:45",
+            "dateModified": "2016-01-19 13:07:45",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "8425a5e0-fa4b-4f89-8422-dc76ba78a0ab",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "City of Madison",
+            "region": "Southwest",
+            "segLength": null,
+            "srvcStatus": "",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": null
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.392217325934, 43.036157797979], [-89.392038686732, 43.036086800162]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:25:55",
+            "dateModified": "2015-07-17 18:25:55",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "47b579f5-a79a-4f04-8546-c7340408b0df",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "UTC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "WisDOT",
+            "region": "Southwest",
+            "segLength": 69.147,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2013
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.345889970765, 43.047127182514], [-89.345889935209, 43.047127177808]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 13:08:09",
+            "dateModified": "2016-01-19 13:08:09",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "80b32091-588a-438a-bf24-eeed578a1485",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "City of Madison",
+            "region": "Southwest",
+            "segLength": null,
+            "srvcStatus": "",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": null
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.365717365691, 43.044790184814], [-89.366055621384, 43.04465706628]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:04:16",
+            "dateModified": "2015-07-17 18:04:16",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "2c39e8e6-b6f7-48fc-b8e6-eec23a4e5065",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "ASC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "USXchange",
+            "region": "Southwest",
+            "segLength": 113,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.354730567381, 43.036400294633], [-89.354867778807, 43.036911177605]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:08:50",
+            "dateModified": "2015-07-17 18:08:50",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "64983325-54c2-4f00-94d0-65ddd1a73616",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "ASC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "USXchange",
+            "region": "Southwest",
+            "segLength": 167,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.377677004437, 43.04118643741], [-89.377125147726, 43.041238817659]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:07:53",
+            "dateModified": "2015-07-17 18:07:53",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "8ba02a21-ae22-4af7-b913-a266d88759c2",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "UTC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "WisDOT",
+            "region": "Southwest",
+            "segLength": 163.901,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.354886880432, 43.039603041611], [-89.354873360775, 43.040026585234]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 18:09:39",
+            "dateModified": "2015-07-17 18:09:39",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "89930faa-b256-4afe-9e46-ccd9d0c70ecf",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "ASC",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "USXchange",
+            "region": "Southwest",
+            "segLength": 165,
+            "srvcStatus": "I",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": 2009
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.378268605015, 43.039635680758], [-89.378484733316, 43.03966826861], [-89.378653989381, 43.039653959331]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 13:07:49",
+            "dateModified": "2016-01-19 13:07:49",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "c8377ee1-e980-4a11-b9ea-d43221927639",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "City of Madison",
+            "region": "Southwest",
+            "segLength": null,
+            "srvcStatus": "",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": null
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {
+            "type": "LineString",
+            "coordinates": [[-89.345890152631, 43.047127168245], [-89.345890131578, 43.047127185234]]
+        },
+        "properties": {
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 13:08:04",
+            "dateModified": "2016-01-19 13:08:04",
+            "description": "",
+            "endDepth": null,
+            "featureGuid": "6123b51a-15e7-477e-a623-8f29b64829e8",
+            "fiberCount": "",
+            "highway": "",
+            "installType": "",
+            "itsId": "",
+            "location": "",
+            "material": "",
+            "owner": "City of Madison",
+            "region": "Southwest",
+            "segLength": null,
+            "srvcStatus": "",
+            "startDepth": null,
+            "trenchSize": null,
+            "yearAdded": null
+        }
+    }]
+};
+
+
+export const cams = {
+    "type": "FeatureCollection",
+    "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:OGC:1.3:CRS84"}},
+    "features": [{
+        "type": "Feature",
+        "geometry": {"type": "Point", "coordinates": [-89.32369295359959, 43.17893291595122]},
+        "properties": {
+            "camNumber": 221,
+            "centerId": "Madison",
+            "centerName": "Madison",
+            "city": "",
+            "comments": "",
+            "county": "Dane",
+            "dateCreated": "2015-07-17 14:27:47",
+            "dateModified": "2015-07-17 14:27:47",
+            "description": "",
+            "encoderIp": "",
+            "equipment": "",
+            "featureGuid": "b3254371-b0d6-4fe8-9640-e43a4a3de41e",
+            "height": null,
+            "highway": "I-39/90/94",
+            "instlAdrss": "",
+            "itsId": "CCTV-13-0010",
+            "location": "I-39/90/94 @ US 51",
+            "mac": "",
+            "morisId": "420",
+            "mount": "",
+            "multicast": "",
+            "owner": "",
+            "poleId": "",
+            "region": "Southwest",
+            "svcAcct": "",
+            "svcMeter": "",
+            "url": "content.dot.wi.gov/travel/madison/cameras/cam221.jpg",
+            "yearAdded": null,
+            "Comments": "",
+            "County": "Dane",
+            "Cam_No": 221,
+            "Center-ID": "Madison",
+            "Center-Name": "Madison",
+            "Encoder_IP": "",
+            "Equipment": "",
+            "Install_Address": "",
+            "MAC": "",
+            "Moris_ID": "420",
+            "Multicast": "",
+            "Svc_Prov_Acct": "",
+            "Svc_Prov_Meter": "",
+            "URL": "content.dot.wi.gov/travel/madison/cameras/cam221.jpg"
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {"type": "Point", "coordinates": [-88.5424253013911, 44.014741825246325]},
+        "properties": {
+            "camNumber": null,
+            "centerId": "Green Bay",
+            "centerName": "Milwaukee",
+            "city": "",
+            "comments": "Not in 511 website; Not STOC Operated",
+            "county": "Winnebago",
+            "dateCreated": "2015-07-17 14:28:31",
+            "dateModified": "2015-07-17 14:28:31",
+            "description": "",
+            "encoderIp": "",
+            "equipment": "",
+            "featureGuid": "25e37162-3bd0-4480-9fe4-bdf81071be2f",
+            "height": null,
+            "highway": "Oregon/Jackson St",
+            "instlAdrss": "",
+            "itsId": "CCTV-70-0008",
+            "location": "Oregon/Jackson St @ Wolf River North Pier",
+            "mac": "",
+            "morisId": "",
+            "mount": "",
+            "multicast": "",
+            "owner": "",
+            "poleId": "",
+            "region": "Northeast",
+            "svcAcct": "",
+            "svcMeter": "",
+            "url": "",
+            "yearAdded": null,
+            "Comments": "Not in 511 website; Not STOC Operated",
+            "County": "Winnebago",
+            "Cam_No": null,
+            "Center-ID": "Green Bay",
+            "Center-Name": "Milwaukee",
+            "Encoder_IP": "",
+            "Equipment": "",
+            "Install_Address": "",
+            "MAC": "",
+            "Moris_ID": "",
+            "Multicast": "",
+            "Svc_Prov_Acct": "",
+            "Svc_Prov_Meter": "",
+            "URL": ""
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {"type": "Point", "coordinates": [-89.39186771089234, 43.07556455822463]},
+        "properties": {
+            "camNumber": null,
+            "centerId": "",
+            "centerName": "",
+            "city": "City of Madison",
+            "comments": "360 camera",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 12:57:03",
+            "dateModified": "2016-01-19 12:57:03",
+            "description": "Buckeye Gorham",
+            "encoderIp": "",
+            "equipment": "",
+            "featureGuid": "19a5e1d4-ac35-41c5-8061-fe2d3725b89e",
+            "height": 25,
+            "highway": "",
+            "instlAdrss": "",
+            "itsId": "Buckeye Gorham",
+            "location": "buckeye lot looking toward Gorham",
+            "mac": "",
+            "morisId": "",
+            "mount": "Light Pole",
+            "multicast": "",
+            "owner": "City of Madison",
+            "poleId": "",
+            "region": "Southwest",
+            "svcAcct": "",
+            "svcMeter": "",
+            "url": "",
+            "yearAdded": 2012,
+            "Comments": "360 camera",
+            "County": "Dane",
+            "Cam_No": null,
+            "Center-ID": "",
+            "Center-Name": "",
+            "Encoder_IP": "",
+            "Equipment": "",
+            "Install_Address": "",
+            "MAC": "",
+            "Moris_ID": "",
+            "Multicast": "",
+            "Svc_Prov_Acct": "",
+            "Svc_Prov_Meter": "",
+            "URL": ""
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {"type": "Point", "coordinates": [-87.97019174922053, 43.03718072438942]},
+        "properties": {
+            "camNumber": 82,
+            "centerId": "Milwaukee",
+            "centerName": "Milwaukee",
+            "city": "",
+            "comments": "",
+            "county": "Milwaukee",
+            "dateCreated": "2015-07-17 14:28:14",
+            "dateModified": "2015-07-17 14:28:14",
+            "description": "",
+            "encoderIp": "",
+            "equipment": "",
+            "featureGuid": "4a862936-4395-4824-a9ec-2291855efbed",
+            "height": null,
+            "highway": "WIS 175",
+            "instlAdrss": "",
+            "itsId": "CCTV-40-0082",
+            "location": "WIS 175 @ Bluemound Rd",
+            "mac": "",
+            "morisId": "325",
+            "mount": "",
+            "multicast": "",
+            "owner": "",
+            "poleId": "",
+            "region": "Southeast",
+            "svcAcct": "0041-809-830",
+            "svcMeter": "VZ498758",
+            "url": "content.dot.wi.gov/travel/milwaukee/cameras/cam082.jpg",
+            "yearAdded": null,
+            "Comments": "",
+            "County": "Milwaukee",
+            "Cam_No": 82,
+            "Center-ID": "Milwaukee",
+            "Center-Name": "Milwaukee",
+            "Encoder_IP": "",
+            "Equipment": "",
+            "Install_Address": "",
+            "MAC": "",
+            "Moris_ID": "325",
+            "Multicast": "",
+            "Svc_Prov_Acct": "0041-809-830",
+            "Svc_Prov_Meter": "VZ498758",
+            "URL": "content.dot.wi.gov/travel/milwaukee/cameras/cam082.jpg"
+        }
+    }, {
+        "type": "Feature",
+        "geometry": {"type": "Point", "coordinates": [-89.43360610547992, 43.07329856071294]},
+        "properties": {
+            "camNumber": null,
+            "centerId": "",
+            "centerName": "",
+            "city": "City of Madison",
+            "comments": " ",
+            "county": "Dane",
+            "dateCreated": "2016-01-19 12:57:05",
+            "dateModified": "2016-01-19 12:57:05",
+            "description": "Farley University",
+            "encoderIp": "",
+            "equipment": "",
+            "featureGuid": "c9dd8265-326a-492d-afaf-374fdee875e7",
+            "height": 30,
+            "highway": "",
+            "instlAdrss": "",
+            "itsId": "Farley University",
+            "location": "On corner of Farley Ave and Campus Dr (EB)",
+            "mac": "",
+            "morisId": "",
+            "mount": "Light Pole",
+            "multicast": "",
+            "owner": "City of Madison",
+            "poleId": "",
+            "region": "Southwest",
+            "svcAcct": "",
+            "svcMeter": "",
+            "url": "https://cameras.cityofmadison.com/pull.web?camera=462336&s=0",
+            "yearAdded": 2012,
+            "Comments": " ",
+            "County": "Dane",
+            "Cam_No": null,
+            "Center-ID": "",
+            "Center-Name": "",
+            "Encoder_IP": "",
+            "Equipment": "",
+            "Install_Address": "",
+            "MAC": "",
+            "Moris_ID": "",
+            "Multicast": "",
+            "Svc_Prov_Acct": "",
+            "Svc_Prov_Meter": "",
+            "URL": "https://cameras.cityofmadison.com/pull.web?camera=462336&s=0"
+        }
+    }]
+};
\ No newline at end of file
diff --git a/test/specs/layers/LayerBaseVectorGeoJsonSpec.ts b/test/specs/layers/LayerBaseVectorGeoJsonSpec.ts
new file mode 100644
index 0000000..f43b6c0
--- /dev/null
+++ b/test/specs/layers/LayerBaseVectorGeoJsonSpec.ts
@@ -0,0 +1,44 @@
+/**
+ * Created by glenn on 3/10/2017.
+ */
+
+
+import {LayerBaseVectorGeoJson, LayerBaseVectorGeoJsonOptions} from '../../../src/layers/LayerBaseVectorGeoJson';
+
+import {cams, trench, sample_segs} from '../../data/geoJsonFeatures';
+
+describe('LayerBaseVectorGeoJSON', function () {
+    let geoj: LayerBaseVectorGeoJson;
+
+
+    beforeEach(function () {
+        geoj = new LayerBaseVectorGeoJson();
+    });
+
+    it('should instantiate with no options provided', function () {
+        geoj = new LayerBaseVectorGeoJson("");
+        expect(geoj).toBeDefined();
+    });
+
+    it('should instantiate with nothing', function () {
+        geoj = new LayerBaseVectorGeoJson();
+        expect(geoj).toBeDefined();
+    });
+
+    it('should add the cams', function () {
+        geoj.addFeatures(cams);
+        expect(geoj.features.length).toBeGreaterThan(0);
+    });
+
+    it('should add the trenches', function () {
+        geoj.addFeatures(trench);
+        expect(geoj.features.length).toBeGreaterThan(0);
+    });
+    
+    it('should add the mm segments', function () {
+        geoj.addFeatures(sample_segs);
+        expect(geoj.features.length).toBeGreaterThan(0);
+    });
+
+});
+
diff --git a/test/specs/spec.ts b/test/specs/spec.ts
index 4530c20..c9ccdbe 100644
--- a/test/specs/spec.ts
+++ b/test/specs/spec.ts
@@ -2,21 +2,4 @@
  * Created by glenn on 3/10/2017.
  */
 
-
-describe("a simple test", function () {
-   it("should work", function () {
-
-       expect(0).toBe(0);
-
-   });
-
-      it("should not work", function () {
-
-       expect(0).toBe(0);
-
-
-
-
-   });
-
-});
\ No newline at end of file
+import './layers/LayerBaseVectorGeoJsonSpec';
-- 
GitLab